kdl: There is script for getting CPU utilization from /proc/stat in Linux here. Maybe somebody find it useful.
set STAT_FILE "/proc/stat"
set INTERVAL 1000
proc get_cpu_list {} {
set fd [open $::STAT_FILE]
set start 0
while {[gets $fd data] >=0 && [regexp {(cpu\d*)\s+(.*)} $data -> name times]} {
lappend cpu_list $name [split $times " "]
}
close $fd
return $cpu_list
}
proc calc_usage {old_times new_times} {
foreach {cpu times} $old_times {
set idle($cpu) [lindex $times 3]
foreach time $times {
incr busy($cpu) $time
}
set busy($cpu) [expr {$busy($cpu) - $idle($cpu)}]
}
foreach {cpu times} $new_times {
set busy($cpu) [expr {-$busy($cpu) - [lindex $times 3]}]
set idle($cpu) [expr {[lindex $times 3] - $idle($cpu)}]
foreach time $times {
incr busy($cpu) $time
}
if {$busy($cpu) + $idle($cpu)} {
lappend list_usage $cpu [expr { 100 * $busy($cpu) / ($busy($cpu) + $idle($cpu))}]
} else {
lappend list_usage $cpu 0
}
}
return $list_usage
}
proc timer {old_times} {
set new_times [get_cpu_list]
puts [calc_usage $old_times $new_times]
after $::INTERVAL [list timer $new_times]
}
timer [get_cpu_list]
vwait forever