delayacct: improve the average delay precision of getdelay tool to microsecond
[ Upstream commit eca7de7cdc382eb6e0d344c07b1449ed75f5b435 ]
Improve the average delay precision of getdelay tool to microsecond. When
using the getdelay tool, it is sometimes found that the average delay
except CPU is not 0, but display is 0, because the precison is too low.
For example, see delay average of SWAP below when using ZRAM.
print delayacct stats ON
PID 32915
CPU count real total virtual total delay total delay average
339202 2793871936 9233585504 7951112 0.000ms
IO count delay total delay average
41 419296904 10ms
SWAP count delay total delay average
242589 1045792384 0ms
This wrong display is misleading, so improve the millisecond precision of
the average delay to microsecond just like CPU. Then user would get more
accurate information of delay time.
Link: https://lkml.kernel.org/r/202302131408087983857@zte.com.cn
Signed-off-by: Wang Yong <wang.yong12@zte.com.cn>
Reviewed-by: Yang Yang <yang.yang29@zte.com.cn>
Cc: David Hildenbrand <david@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Stable-dep-of: 3840cbe24cf0 ("sched: psi: fix bogus pressure spikes from aggregation race")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
2760bafc1a
commit
6fddf325fa
3 changed files with 24 additions and 24 deletions
|
|
@ -109,17 +109,17 @@ Get sum of delays, since system boot, for all pids with tgid 5::
|
|||
CPU count real total virtual total delay total delay average
|
||||
8 7000000 6872122 3382277 0.423ms
|
||||
IO count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
SWAP count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
RECLAIM count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
THRASHING count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
COMPACT count delay total delay average
|
||||
0 0 0ms
|
||||
WPCOPY count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
WPCOPY count delay total delay average
|
||||
0 0 0.000ms
|
||||
|
||||
Get IO accounting for pid 1, it works only with -p::
|
||||
|
||||
|
|
|
|||
|
|
@ -92,15 +92,15 @@ getdelays命令的一般格式::
|
|||
CPU count real total virtual total delay total delay average
|
||||
8 7000000 6872122 3382277 0.423ms
|
||||
IO count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
SWAP count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
RECLAIM count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
THRASHING count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
COMPACT count delay total delay average
|
||||
0 0 0ms
|
||||
0 0 0.000ms
|
||||
WPCOPY count delay total delay average
|
||||
0 0 0ms
|
||||
|
||||
|
|
|
|||
|
|
@ -198,17 +198,17 @@ static void print_delayacct(struct taskstats *t)
|
|||
printf("\n\nCPU %15s%15s%15s%15s%15s\n"
|
||||
" %15llu%15llu%15llu%15llu%15.3fms\n"
|
||||
"IO %15s%15s%15s\n"
|
||||
" %15llu%15llu%15llums\n"
|
||||
" %15llu%15llu%15.3fms\n"
|
||||
"SWAP %15s%15s%15s\n"
|
||||
" %15llu%15llu%15llums\n"
|
||||
" %15llu%15llu%15.3fms\n"
|
||||
"RECLAIM %12s%15s%15s\n"
|
||||
" %15llu%15llu%15llums\n"
|
||||
" %15llu%15llu%15.3fms\n"
|
||||
"THRASHING%12s%15s%15s\n"
|
||||
" %15llu%15llu%15llums\n"
|
||||
" %15llu%15llu%15.3fms\n"
|
||||
"COMPACT %12s%15s%15s\n"
|
||||
" %15llu%15llu%15llums\n"
|
||||
" %15llu%15llu%15.3fms\n"
|
||||
"WPCOPY %12s%15s%15s\n"
|
||||
" %15llu%15llu%15llums\n",
|
||||
" %15llu%15llu%15.3fms\n",
|
||||
"count", "real total", "virtual total",
|
||||
"delay total", "delay average",
|
||||
(unsigned long long)t->cpu_count,
|
||||
|
|
@ -219,27 +219,27 @@ static void print_delayacct(struct taskstats *t)
|
|||
"count", "delay total", "delay average",
|
||||
(unsigned long long)t->blkio_count,
|
||||
(unsigned long long)t->blkio_delay_total,
|
||||
average_ms(t->blkio_delay_total, t->blkio_count),
|
||||
average_ms((double)t->blkio_delay_total, t->blkio_count),
|
||||
"count", "delay total", "delay average",
|
||||
(unsigned long long)t->swapin_count,
|
||||
(unsigned long long)t->swapin_delay_total,
|
||||
average_ms(t->swapin_delay_total, t->swapin_count),
|
||||
average_ms((double)t->swapin_delay_total, t->swapin_count),
|
||||
"count", "delay total", "delay average",
|
||||
(unsigned long long)t->freepages_count,
|
||||
(unsigned long long)t->freepages_delay_total,
|
||||
average_ms(t->freepages_delay_total, t->freepages_count),
|
||||
average_ms((double)t->freepages_delay_total, t->freepages_count),
|
||||
"count", "delay total", "delay average",
|
||||
(unsigned long long)t->thrashing_count,
|
||||
(unsigned long long)t->thrashing_delay_total,
|
||||
average_ms(t->thrashing_delay_total, t->thrashing_count),
|
||||
average_ms((double)t->thrashing_delay_total, t->thrashing_count),
|
||||
"count", "delay total", "delay average",
|
||||
(unsigned long long)t->compact_count,
|
||||
(unsigned long long)t->compact_delay_total,
|
||||
average_ms(t->compact_delay_total, t->compact_count),
|
||||
average_ms((double)t->compact_delay_total, t->compact_count),
|
||||
"count", "delay total", "delay average",
|
||||
(unsigned long long)t->wpcopy_count,
|
||||
(unsigned long long)t->wpcopy_delay_total,
|
||||
average_ms(t->wpcopy_delay_total, t->wpcopy_count));
|
||||
average_ms((double)t->wpcopy_delay_total, t->wpcopy_count));
|
||||
}
|
||||
|
||||
static void task_context_switch_counts(struct taskstats *t)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue