vmstat does IO-wait
This commit is contained in:
parent
2754004de0
commit
80ec87f55a
2
NEWS
2
NEWS
@ -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
|
||||||
|
|
||||||
|
@ -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
2
top.c
@ -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
|
||||||
|
12
vmstat.8
12
vmstat.8
@ -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
|
||||||
|
35
vmstat.c
35
vmstat.c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user