diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-05-26 19:25:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-26 20:12:34 -0400 |
commit | 02d54f092697b6046e466e447cc694b0e6ed45d0 (patch) | |
tree | cb18ecc6a8c7b0f49d5a22db4b944bbf7635465c | |
parent | 4ed960b14d3b5fd14f1d9eb02f6d7e398317627a (diff) |
getdelays: show average CPU/IO/SWAP/RECLAIM delays
I find it very handy to show the average delays in milliseconds.
Example output (on 100 concurrent dd reading sparse files):
CPU count real total virtual total delay total delay average
986 3223509952 3207643301 38863410579 39.415ms
IO count delay total delay average
0 0 0ms
SWAP count delay total delay average
0 0 0ms
RECLAIM count delay total delay average
1059 5131834899 4ms
dd: read=0, write=0, cancelled_write=0
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Cc: Mel Gorman <mel@linux.vnet.ibm.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Reviewed-by: Satoru Moriya <satoru.moriya@hds.com>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | Documentation/accounting/getdelays.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c index fed225401dd2..f6318f6d7baf 100644 --- a/Documentation/accounting/getdelays.c +++ b/Documentation/accounting/getdelays.c | |||
@@ -193,30 +193,37 @@ static int get_family_id(int sd) | |||
193 | return id; | 193 | return id; |
194 | } | 194 | } |
195 | 195 | ||
196 | #define average_ms(t, c) (t / 1000000ULL / (c ? c : 1)) | ||
197 | |||
196 | static void print_delayacct(struct taskstats *t) | 198 | static void print_delayacct(struct taskstats *t) |
197 | { | 199 | { |
198 | printf("\n\nCPU %15s%15s%15s%15s\n" | 200 | printf("\n\nCPU %15s%15s%15s%15s%15s\n" |
199 | " %15llu%15llu%15llu%15llu\n" | 201 | " %15llu%15llu%15llu%15llu%15.3fms\n" |
200 | "IO %15s%15s\n" | 202 | "IO %15s%15s%15s\n" |
201 | " %15llu%15llu\n" | 203 | " %15llu%15llu%15llums\n" |
202 | "SWAP %15s%15s\n" | 204 | "SWAP %15s%15s%15s\n" |
203 | " %15llu%15llu\n" | 205 | " %15llu%15llu%15llums\n" |
204 | "RECLAIM %12s%15s\n" | 206 | "RECLAIM %12s%15s%15s\n" |
205 | " %15llu%15llu\n", | 207 | " %15llu%15llu%15llums\n", |
206 | "count", "real total", "virtual total", "delay total", | 208 | "count", "real total", "virtual total", |
209 | "delay total", "delay average", | ||
207 | (unsigned long long)t->cpu_count, | 210 | (unsigned long long)t->cpu_count, |
208 | (unsigned long long)t->cpu_run_real_total, | 211 | (unsigned long long)t->cpu_run_real_total, |
209 | (unsigned long long)t->cpu_run_virtual_total, | 212 | (unsigned long long)t->cpu_run_virtual_total, |
210 | (unsigned long long)t->cpu_delay_total, | 213 | (unsigned long long)t->cpu_delay_total, |
211 | "count", "delay total", | 214 | average_ms((double)t->cpu_delay_total, t->cpu_count), |
215 | "count", "delay total", "delay average", | ||
212 | (unsigned long long)t->blkio_count, | 216 | (unsigned long long)t->blkio_count, |
213 | (unsigned long long)t->blkio_delay_total, | 217 | (unsigned long long)t->blkio_delay_total, |
214 | "count", "delay total", | 218 | average_ms(t->blkio_delay_total, t->blkio_count), |
219 | "count", "delay total", "delay average", | ||
215 | (unsigned long long)t->swapin_count, | 220 | (unsigned long long)t->swapin_count, |
216 | (unsigned long long)t->swapin_delay_total, | 221 | (unsigned long long)t->swapin_delay_total, |
217 | "count", "delay total", | 222 | average_ms(t->swapin_delay_total, t->swapin_count), |
223 | "count", "delay total", "delay average", | ||
218 | (unsigned long long)t->freepages_count, | 224 | (unsigned long long)t->freepages_count, |
219 | (unsigned long long)t->freepages_delay_total); | 225 | (unsigned long long)t->freepages_delay_total, |
226 | average_ms(t->freepages_delay_total, t->freepages_count)); | ||
220 | } | 227 | } |
221 | 228 | ||
222 | static void task_context_switch_counts(struct taskstats *t) | 229 | static void task_context_switch_counts(struct taskstats *t) |