vmstat does IO-wait

This commit is contained in:
albert 2002-11-09 02:00:52 +00:00
parent 2754004de0
commit 80ec87f55a
5 changed files with 29 additions and 30 deletions

2
NEWS
View File

@ -1,9 +1,11 @@
procps-3.0.5 --> procps-3.0.6 procps-3.0.5 --> procps-3.0.6
vmstat displays IO-wait time instead of bogus "w"
can build w/o shared library (set SHARED=0) can build w/o shared library (set SHARED=0)
when IO-wait hidden, count as idle, not as sys when IO-wait hidden, count as idle, not as sys
pmap command added (like Sun has) pmap command added (like Sun has)
do not crash GNU make 3.79 do not crash GNU make 3.79
top slightly faster
procps-3.0.4 --> procps-3.0.5 procps-3.0.4 --> procps-3.0.5

View File

@ -25,7 +25,7 @@ LIBPROC := proc/lib$(NAME).a
endif endif
# Separate rule for this directory, to use -fpic or -fPIC # Separate rule for this directory, to use -fpic or -fPIC
$(LIBOBJ): proc/%.o: proc/%.c $(filter-out proc/version.o,$(LIBOBJ)): proc/%.o: proc/%.c
$(CC) -c $(CFLAGS) $(FPIC) $< -o $@ $(CC) -c $(CFLAGS) $(FPIC) $< -o $@
LIB_X := COPYING module.mk LIB_X := COPYING module.mk
@ -70,8 +70,4 @@ $(lib)/$(SONAME) : proc/$(SONAME)
proc/version.o: proc/version.c proc/version.h proc/version.o: proc/version.c proc/version.h
ifdef MINORVERSION $(CC) $(CFLAGS) $(FPIC) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c -o $@ $<
$(strip $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c -o $@ $<)
else
$(strip $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -c -o $@ $<)
endif

2
top.c
View File

@ -711,7 +711,7 @@ static const char *scale_tics (TICS_t tics, const int width)
unsigned cc; // centiseconds unsigned cc; // centiseconds
unsigned nn; // multi-purpose whatever unsigned nn; // multi-purpose whatever
nt = (tics * 100) / Hertz; nt = (tics * 100ull) / Hertz;
cc = nt % 100; // centiseconds past second cc = nt % 100; // centiseconds past second
nt /= 100; // total seconds nt /= 100; // total seconds
nn = nt % 60; // seconds past the minute nn = nt % 60; // seconds past the minute

View File

@ -41,8 +41,6 @@ The \fB-V\fP switch results in displaying version information.
.nf .nf
r: The number of processes waiting for run time. r: The number of processes waiting for run time.
b: The number of processes in uninterruptable sleep. b: The number of processes in uninterruptable sleep.
w: The number of processes swapped out but otherwise runnable. This
field is calculated, but Linux never desperation swaps.
.fi .fi
.PP .PP
.SS .SS
@ -81,9 +79,10 @@ cs: The number of context switches per second.
.B "CPU " .B "CPU "
These are percentages of total CPU time. These are percentages of total CPU time.
.nf .nf
us: user time us: Time spent running non-kernel code. (user time, including nice time)
sy: system time sy: Time spent running kernel code. (system time)
id: idle time id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.
.nf .nf
.SH NOTES .SH NOTES
.B "vmstat " .B "vmstat "
@ -93,7 +92,8 @@ These reports are intended to help identify system bottlenecks. Linux
.B "vmstat " .B "vmstat "
does not count itself as a running process. does not count itself as a running process.
.PP .PP
All linux blocks are currently 1k, except for CD-ROM blocks which are 2k. All linux blocks are currently 1024 bytes. Old kernels may report
blocks as 512 bytes, 2048 bytes, or 4096 bytes.
.PP .PP
.SH FILES .SH FILES
.ta .ta

View File

@ -155,6 +155,8 @@ static void getrunners(unsigned int *running, unsigned int *blocked,
////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////
#if 0
static void old_header(void){ static void old_header(void){
printf("%8s%28s%10s%12s%11s%9s\n", printf("%8s%28s%10s%12s%11s%9s\n",
"procs","memory","swap","io","system","cpu"); "procs","memory","swap","io","system","cpu");
@ -253,10 +255,11 @@ static void old_format(void) {
); );
} }
} }
#endif
////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////
#if 0
// produce: " 6 ", "123 ", "123k ", etc. // produce: " 6 ", "123 ", "123k ", etc.
static int format_1024(unsigned long long val64, char *dst){ static int format_1024(unsigned long long val64, char *dst){
unsigned oldval; unsigned oldval;
@ -321,21 +324,19 @@ static int format_1000(unsigned long long val64, char *dst){
} }
return sprintf(dst, "%3u%c ", val32, suffix[level]); return sprintf(dst, "%3u%c ", val32, suffix[level]);
} }
#endif
/*
procs -----------memory---------- --swap- ----io--- ---system--- ---cpu---
r b swpd free buff cache si so bi bo in cs us sy id wa
*/
static void new_header(void){ static void new_header(void){
printf("%5s%28s%10s%12s%11s%12s\n", printf("procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----\n");
"procs","memory","swap","io","system","cpu"); printf(
printf("%2s %2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %5s %2s %2s %2s %2s\n", "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %5s %2s %2s %2s %2s\n",
"r","b","w","swpd","free", "b","w",
a_option?"inact":"buff", a_option?"active":"cache", "swpd", "free", a_option?"inact":"buff", a_option?"active":"cache",
"si","so","bi","bo", "si","so",
"in","cs","us","sy","id","wa"); "bi","bo",
"in","cs",
"us","sy","id","wa"
);
} }
static void new_format(void) { static void new_format(void) {
@ -353,7 +354,7 @@ static void new_format(void) {
int debt = 0; // handle idle ticks running backwards int debt = 0; // handle idle ticks running backwards
sleep_half=(sleep_time/2); sleep_half=(sleep_time/2);
old_header(); new_header();
getrunners(&running,&blocked,&r_swapp,&d_swapp); getrunners(&running,&blocked,&r_swapp,&d_swapp);
meminfo(); meminfo();
@ -385,7 +386,7 @@ static void new_format(void) {
for(i=1;i<num_updates;i++) { /* \\\\\\\\\\\\\\\\\\\\ main loop ////////////////// */ for(i=1;i<num_updates;i++) { /* \\\\\\\\\\\\\\\\\\\\ main loop ////////////////// */
sleep(sleep_time); sleep(sleep_time);
if (moreheaders && ((i%height)==0)) old_header(); if (moreheaders && ((i%height)==0)) new_header();
tog= !tog; tog= !tog;
getrunners(&running,&blocked,&r_swapp,&d_swapp); getrunners(&running,&blocked,&r_swapp,&d_swapp);
@ -487,7 +488,7 @@ int main(int argc, char *argv[]) {
setlinebuf(stdout); setlinebuf(stdout);
old_format(); new_format();
return 0; return 0;
} }