package SAR; sub system_activity_report { my($wait_time) = shift; if (!defined($wait_time)) { $wait_time = 60; } my($sec, $min, $hour) = localtime(time()); my($first_time) = time(); my($first_usertime, $first_systime, $first_idletime, $first_uptime) = Pstat(); sleep $wait_time; my($last_time) = time(); my($last_usertime, $last_systime, $last_idletime, $last_uptime) = Pstat(); my($diff_user) = $last_usertime - $first_usertime; my($diff_sys) = $last_systime - $first_systime; my($diff_idle) = $last_idletime - $first_idletime; my($diff_time) = $last_time - $first_time; my($prc_user) = int( ( $diff_user * 100) / $diff_time); my($prc_sys) = int( ( $diff_sys * 100) / $diff_time); my($prc_idle) = int( ( $diff_idle * 100) / $diff_time); my($prc_io) = 100 - ($prc_user + $prc_sys + $prc_idle); my($mday, $mon, $year); ($sec, $min, $hour, $mday, $mon, $year) = localtime(time()); $mon++; $time = sprintf("%2.2d:%2.2d:%2.2d",$hour,$min,$sec); @result = ( "$mon/$mday/$year $time", $prc_user,$prc_sys,$prc_io,$prc_idle ); return @result; } sub Pstat { my($uptime_days, $uptime_hr, $uptime_min, $uptime_sec); my($usertime_hr, $usertime_min, $usertime_sec); my($kernel_hr, $kernel_min, $kernel_sec, $process); my($user_cpu, $sys_cpu); my($uptime, $idletime, $usertime, $systime); open(PSTAT,"c:\\ntreskit\\pstat |"); while() { if (/^\s*User\s*Time/) { last; } if (/uptime\:/) { ($uptime_days, $uptime_hr, $uptime_min, $uptime_sec) = /uptime\:\s*(\d+)\s+(\d+)\:(\d+)\:(\d+)\./; $uptime = ($uptime_days * 24 * 3600) + $uptime_hr * 3600 + $uptime_min * 60 + $uptime_sec; } } while() { if (/^\s*$/ || /^\s*pid\:/) { last; } ($usertime_hr, $usertime_min, $usertime_sec, $kernel_hr, $kernel_min, $kernel_sec, $process) = /^\s*(\d+)\:(\d+)\:(\d+)\.\d+\s+(\d+)\:(\d+)\:(\d+)\.\d+[\s\d]+(.*)$/; $user_cpu = $usertime_hr * 3600 + $usertime_min * 60 + $usertime_sec; $sys_cpu = $kernel_hr * 3600 + $kernel_min * 60 + $kernel_sec; if ($process =~ /Idle Process/) { $idletime = $user_cpu + $sys_cpu; } else { $usertime += $user_cpu; $systime += $sys_cpu; } } close(PSTAT); return ($usertime, $systime, $idletime, $uptime); } 1;