fix %CPU max on 2..9 CPU SMP -- thanks Ga*tan LEURENT

This commit is contained in:
albert 2005-09-12 01:27:59 +00:00
parent 38d36b4960
commit a402ba1848
3 changed files with 12 additions and 14 deletions

1
NEWS
View File

@ -3,6 +3,7 @@ procps-3.2.5 --> procps-3.2.6
top can do per-task display -- thanks John Blackwood rh114012 top can do per-task display -- thanks John Blackwood rh114012
more MIPS crud -- thanks Jim Gifford and Ryan Oliver more MIPS crud -- thanks Jim Gifford and Ryan Oliver
begin prep for setuid begin prep for setuid
top: fix %CPU max on 2..9 CPU SMP -- thanks Ga*tan LEURENT
procps-3.2.4 --> procps-3.2.5 procps-3.2.4 --> procps-3.2.5

8
TODO
View File

@ -1,5 +1,7 @@
-------------------------- general ------------------------ -------------------------- general ------------------------
Consider using glibc obstacks for memory allocation.
Implement /usr/proc/bin tools like Solaris has. Implement /usr/proc/bin tools like Solaris has.
The prstat command is interesting, like top in batch mode. The prstat command is interesting, like top in batch mode.
SCO has a pstat command. SCO has a pstat command.
@ -56,12 +58,6 @@ units: kB and pages, seconds and jiffies) in the proc_t struct.
Share more stuff with ps. Share more stuff with ps.
'H' command (shows threads)
Adjust PID-like and PSR-like columns to fit the data.
The normal PID limit is 5 digits; it can go up to 10.
The normal CPU limit is 1 digit; it can go to 3 or 4.
don't truncate long usernames don't truncate long usernames
have a --config option have a --config option

17
top.c
View File

@ -1605,20 +1605,21 @@ static void before (char *me)
page_to_kb_shift++; page_to_kb_shift++;
} }
Fieldstab[P_CPU].head = " %CPU"; // commented out because it is redundant with the table content
Fieldstab[P_CPU].fmts = " %#4.1f"; // Fieldstab[P_CPU].head = " %CPU";
// Fieldstab[P_CPU].fmts = " %#4.1f";
pcpu_max_value = 99.9; pcpu_max_value = 99.9;
if(Rc.mode_irixps && smp_num_cpus>1){
// good for 100 CPUs per process
pcpu_max_value = 9999.0;
Fieldstab[P_CPU].fmts = " %4.0f";
}
Fieldstab[P_CPN].head = " P"; Fieldstab[P_CPN].head = " P";
Fieldstab[P_CPN].fmts = " %1u"; Fieldstab[P_CPN].fmts = " %1u";
if(smp_num_cpus>9){ if(smp_num_cpus>9){
Fieldstab[P_CPN].head = " P"; Fieldstab[P_CPN].head = " P";
Fieldstab[P_CPN].fmts = " %2u"; Fieldstab[P_CPN].fmts = " %2u";
if(Rc.mode_irixps){
// this will do for up to 999; hopefully a 1024-node box
// will have at least 2.4% idle time
pcpu_max_value = 9999.0;
Fieldstab[P_CPU].fmts = " %4.0f";
}
} }
if(smp_num_cpus>99){ if(smp_num_cpus>99){
Fieldstab[P_CPN].head = " P"; Fieldstab[P_CPN].head = " P";