From 8abdce6686bfcaa211e7eb75a69ec07e980bd96e Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 21 Feb 2007 10:22:55 +0100 Subject: [PATCH] Change IO latency histogram to be in power-of-10 Power of 2 is just confusing for latencies, make the series more natural by doing 1, 2, 4, 10, 20, 50, etc. Signed-off-by: Jens Axboe --- HOWTO | 8 ++++---- io_u.c | 18 +++++++++--------- stat.c | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/HOWTO b/HOWTO index ea98810a..237b3ad2 100644 --- a/HOWTO +++ b/HOWTO @@ -570,8 +570,8 @@ Client1 (g=0): err= 0: bw (KiB/s) : min= 0, max= 1196, per=51.00%, avg=664.02, stdev=681.68 cpu : usr=1.49%, sys=0.25%, ctx=7969 IO depths : 1=0.1%, 2=0.3%, 4=0.5%, 8=99.0%, 16=0.0%, 32=0.0%, >32=0.0% - lat (msec): 2=1.6%, 4=0.0%, 8=3.2%, 16=12.8%, 32=38.4%, 64=24.8%, 128=15.2% - lat (msec): 256=4.0%, 512=0.0%, 1024=0.0%, >=2048=0.0% + lat (msec): 2=1.6%, 4=0.0%, 10=3.2%, 20=12.8%, 50=38.4%, 100=24.8%, + lat (msec): 250=15.2%, 500=0.0%, 750=0.0%, 1000=0.0%, >=2048=0.0% The client number is printed, along with the group id and error of that thread. Below is the io statistics, here for writes. In the order listed, @@ -605,8 +605,8 @@ IO latencies= The distribution of IO completion latencies. This is the time from when IO leaves fio and when it gets completed. The numbers follow the same pattern as the IO depths, meaning that 2=1.6% means that 1.6% of the IO completed - within 2 msecs, 16=12.8% means that 12.8% of the IO - took more than 8 msecs, but less than (or equal to) 16 msecs. + within 2 msecs, 20=12.8% means that 12.8% of the IO + took more than 10 msecs, but less than (or equal to) 20 msecs. After each client has been listed, the group statistics are printed. They will look like this: diff --git a/io_u.c b/io_u.c index b8f090bd..23a64b04 100644 --- a/io_u.c +++ b/io_u.c @@ -289,23 +289,23 @@ static void io_u_mark_latency(struct thread_data *td, unsigned long msec) switch (msec) { default: index++; - case 1024 ... 2047: + case 1000 ... 1999: index++; - case 512 ... 1023: + case 750 ... 999: index++; - case 256 ... 511: + case 500 ... 749: index++; - case 128 ... 255: + case 250 ... 499: index++; - case 64 ... 127: + case 100 ... 249: index++; - case 32 ... 63: + case 50 ... 99: index++; - case 16 ... 31: + case 20 ... 49: index++; - case 8 ... 15: + case 10 ... 19: index++; - case 4 ... 7: + case 4 ... 9: index++; case 2 ... 3: index++; diff --git a/stat.c b/stat.c index 337b45fd..352ba48f 100644 --- a/stat.c +++ b/stat.c @@ -489,8 +489,8 @@ static void show_thread_status(struct thread_data *td, io_u_lat[i] *= 100.0; } - fprintf(f_out, " lat (msec): 2=%3.1f%%, 4=%3.1f%%, 8=%3.1f%%, 16=%3.1f%%, 32=%3.1f%%, 64=%3.1f%%, 128=%3.1f%%\n", io_u_lat[0], io_u_lat[1], io_u_lat[2], io_u_lat[3], io_u_lat[4], io_u_lat[5], io_u_lat[6]); - fprintf(f_out, " lat (msec): 256=%3.1f%%, 512=%3.1f%%, 1024=%3.1f%%, >=2048=%3.1f%%\n", io_u_lat[7], io_u_lat[8], io_u_lat[9], io_u_lat[10]); + fprintf(f_out, " lat (msec): 2=%3.1f%%, 4=%3.1f%%, 10=%3.1f%%, 20=%3.1f%%, 50=%3.1f%%, 100=%3.1f%%\n", io_u_lat[0], io_u_lat[1], io_u_lat[2], io_u_lat[3], io_u_lat[4], io_u_lat[5]); + fprintf(f_out, " lat (msec): 250=%3.1f%%, 500=%3.1f%%, 750=%3.1f%%, 1000=%3.1f%%, >=2000=%3.1f%%\n", io_u_lat[6], io_u_lat[7], io_u_lat[8], io_u_lat[9], io_u_lat[10]); if (td->description) fprintf(f_out, "%s\n", td->description); -- 2.25.1