Skip to contentSkip to conversation

runtime and status-interval

DISCUSSION John OCallaghan 2 participants 4 messages Aug 14, 2014 – Aug 19, 2014

lore
Share & tools
lore
#0 lore raw

Hi

I am running the fio2.1.11 and am seeing something odd with the "runt" value on jobs.

If I run a test with "--status-interval=5" and let it run for over 20 seconds I see the runt go from sensible values to nonsensical values once it reaches the 20 second boundary.

Below is a snip from a log that I took. Notice that at the 19 second boundary the runt is OK (19925msec). But at the next status interval the runt has grown from 19 seconds to 21009 seconds!

This throws out the bw calcs (1505KB/s down to 1900B/s).

Here is my fio config file
[global]
time_based=1
runtime=180
directory=.
size=64m

[job1-HD-ReadWrite]
rw=readwrite
blocksize=1500k
filename=HDRW.STR
rate=1500k,1500k

And I run as follows:

./fio --status-interval=5 test.fio

Hope thats useful to someone!
John

----------------------

job1-HD-ReadWrite: (groupid=0, jobs=1): err= 0: pid=25640: Thu Aug 14 13:13:20 2014
Description : [HD Seq read/write]
read : io=30000KB, bw=1505.7KB/s, iops=1, runt= 19925msec

    clat (msec): min=4, max=9, avg= 7.80, stdev= 1.24
     lat (msec): min=4, max=9, avg= 7.80, stdev= 1.24
<snip>
    bw (KB  /s): min= 1495, max= 2991, per=100.00%, avg=1871.37,
stdev=664.94
  write: io=30000KB, bw=1505.7KB/s, iops=1, runt= 19925msec
    clat (usec): min=553, max=2030, avg=1498.71, stdev=449.27
     lat (usec): min=658, max=2161, avg=1617.00, stdev=464.46
    clat percentiles (usec):
<snip>
    bw (KB  /s): min= 1488, max= 3024, per=100.00%, avg=1857.12,
stdev=665.91
    lat (usec) : 750=4.88%, 1000=4.88%
    lat (msec) : 2=34.15%, 4=7.32%, 10=48.78%

<snip>
job1-HD-ReadWrite: (groupid=0, jobs=1): err= 0: pid=25640: Thu Aug 14 13:13:25 2014
Description : [HD Seq read/write]
read : io=39000KB, bw=1900B/s, iops=0, runt=21009984msec

    clat (msec): min=4, max=78, avg=10.49, stdev=13.99
     lat (msec): min=4, max=78, avg=10.49, stdev=13.99
<snip>
    bw (KB  /s): min= 1495, max= 2991, per=100.00%, avg=1853.76,
stdev=649.04
  write: io=37500KB, bw=1827B/s, iops=0, runt=21009984msec
    clat (usec): min=553, max=2030, avg=1405.73, stdev=462.04
     lat (usec): min=610, max=2161, avg=1519.96, stdev=480.39
<snip>
    bw (KB  /s): min= 1488, max= 3024, per=100.00%, avg=1860.43,
stdev=662.42
    lat (usec) : 750=5.77%, 1000=5.77%
    lat (msec) : 2=32.69%, 4=5.77%, 10=48.08%, 100=1.92%

cpu : usr=0.02%, sys=0.34%, ctx=172, majf=0, minf=32
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%,

Quoted 1 line

=64=0.0%

     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%,
Quoted 1 line

=64=0.0%

     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%,
Quoted 1 line

=64=0.0%

     issued    : total=r=26/w=26/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
READ: io=39000KB, aggrb=1KB/s, minb=1KB/s, maxb=1KB/s,
mint=21009984msec, maxt=21009984msec
WRITE: io=37500KB, aggrb=1KB/s, minb=1KB/s, maxb=1KB/s,
mint=21009984msec, maxt=21009984msec
-----

The information contained in this e-mail and in any attachments is confidential and is designated solely for the attention of the intended recipient(s). If you are not an intended recipient, you must not use, disclose, copy, distribute or retain this e-mail or any part thereof. If you have received this e-mail in error, please notify the sender by return e-mail and delete all copies of this e-mail from your computer system(s). Please direct any additional queries to: [email protected]. Thank You. Silicon and Software Systems Limited (S3 Group). Registered in Ireland no. 378073. Registered Office: South County Business Park, Leopardstown, Dublin 18.

#1 lore raw

FYI I found the problem in fio/backend.c. Seems to be working fine now.

The fix I put together is this:

		if (td_read(td) && td->io_bytes[DDIR_READ]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_READ] += elapsed/1000;
		}
		if (td_write(td) && td->io_bytes[DDIR_WRITE]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_WRITE] += elapsed/1000;
		}
		if (td_trim(td) && td->io_bytes[DDIR_TRIM]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_TRIM] += elapsed/1000;
		}

The problem is is that runtime is holding milliseconds but utime_since_now() returns microseconds. I added the "/1000" to make the conversion.

My change is a simple fix but quite possibly there are other places within fio making the same mistake?

J

Quoted 93 lines · John OCallaghan

Hi

I am running the fio2.1.11 and am seeing something odd with the "runt" value on jobs.

If I run a test with "--status-interval=5" and let it run for over 20 seconds I see the runt go from sensible values to nonsensical values once it reaches the 20 second boundary.

Below is a snip from a log that I took. Notice that at the 19 second boundary the runt is OK (19925msec). But at the next status interval the runt has grown from 19 seconds to 21009 seconds!

This throws out the bw calcs (1505KB/s down to 1900B/s).

Here is my fio config file
[global]
time_based=1
runtime=180
directory=.
size=64m

[job1-HD-ReadWrite]
rw=readwrite
blocksize=1500k
filename=HDRW.STR
rate=1500k,1500k

And I run as follows:

./fio --status-interval=5 test.fio

Hope thats useful to someone!
John

----------------------

job1-HD-ReadWrite: (groupid=0, jobs=1): err= 0: pid=25640: Thu Aug 14 13:13:20 2014
Description : [HD Seq read/write]
read : io=30000KB, bw=1505.7KB/s, iops=1, runt= 19925msec

    clat (msec): min=4, max=9, avg= 7.80, stdev= 1.24
     lat (msec): min=4, max=9, avg= 7.80, stdev= 1.24
<snip>
    bw (KB  /s): min= 1495, max= 2991, per=100.00%, avg=1871.37,
stdev=664.94
  write: io=30000KB, bw=1505.7KB/s, iops=1, runt= 19925msec
    clat (usec): min=553, max=2030, avg=1498.71, stdev=449.27
     lat (usec): min=658, max=2161, avg=1617.00, stdev=464.46
    clat percentiles (usec):
<snip>
    bw (KB  /s): min= 1488, max= 3024, per=100.00%, avg=1857.12,
stdev=665.91
    lat (usec) : 750=4.88%, 1000=4.88%
    lat (msec) : 2=34.15%, 4=7.32%, 10=48.78%

<snip>
job1-HD-ReadWrite: (groupid=0, jobs=1): err= 0: pid=25640: Thu Aug 14 13:13:25 2014
Description : [HD Seq read/write]
read : io=39000KB, bw=1900B/s, iops=0, runt=21009984msec

    clat (msec): min=4, max=78, avg=10.49, stdev=13.99
     lat (msec): min=4, max=78, avg=10.49, stdev=13.99
<snip>
    bw (KB  /s): min= 1495, max= 2991, per=100.00%, avg=1853.76,
stdev=649.04
  write: io=37500KB, bw=1827B/s, iops=0, runt=21009984msec
    clat (usec): min=553, max=2030, avg=1405.73, stdev=462.04
     lat (usec): min=610, max=2161, avg=1519.96, stdev=480.39
<snip>
    bw (KB  /s): min= 1488, max= 3024, per=100.00%, avg=1860.43,
stdev=662.42
    lat (usec) : 750=5.77%, 1000=5.77%
    lat (msec) : 2=32.69%, 4=5.77%, 10=48.08%, 100=1.92%

cpu : usr=0.02%, sys=0.34%, ctx=172, majf=0, minf=32
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%,

Quoted 1 line

=64=0.0%

     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%,
Quoted 1 line

=64=0.0%

     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%,
Quoted 1 line

=64=0.0%

     issued    : total=r=26/w=26/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):

   READ: io=39000KB, aggrb=1KB/s, minb=1KB/s, maxb=1KB/s,

mint=21009984msec, maxt=21009984msec
WRITE: io=37500KB, aggrb=1KB/s, minb=1KB/s, maxb=1KB/s,
mint=21009984msec, maxt=21009984msec
-----

Quoted 7 lines

The information contained in this e-mail and in any attachments is confidential and is designated solely for the attention of the intended recipient(s). If you are not an intended recipient, you must not use, disclose, copy, distribute or retain this e-mail or any part thereof. If you have received this e-mail in error, please notify the sender by return e-mail and delete all copies of this e-mail from your computer system(s). Please direct any additional queries to: [email protected]. Thank You. Silicon and Software Systems Limited (S3 Group). Registered in Ireland no. 378073. Registered Office: South County Business Park, Leopardstown, Dublin 18.

--
To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

-----

The information contained in this e-mail and in any attachments is confidential and is designated solely for the attention of the intended recipient(s). If you are not an intended recipient, you must not use, disclose, copy, distribute or retain this e-mail or any part thereof. If you have received this e-mail in error, please notify the sender by return e-mail and delete all copies of this e-mail from your computer system(s). Please direct any additional queries to: [email protected]. Thank You. Silicon and Software Systems Limited (S3 Group). Registered in Ireland no. 378073. Registered Office: South County Business Park, Leopardstown, Dublin 18.

#2 lore raw
Quoted 31 lines

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of John OCallaghan
Sent: Friday, 15 August, 2014 11:55 AM
To: [email protected]
Subject: Re: runtime and status-interval

FYI I found the problem in fio/backend.c. Seems to be working fine now.

The fix I put together is this:

		if (td_read(td) && td->io_bytes[DDIR_READ]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_READ] += elapsed/1000;
		}
		if (td_write(td) && td->io_bytes[DDIR_WRITE]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_WRITE] += elapsed/1000;
		}
		if (td_trim(td) && td->io_bytes[DDIR_TRIM]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_TRIM] += elapsed/1000;
		}
Quoted 6 lines

The problem is is that runtime is holding milliseconds but utime_since_now() returns microseconds. I added the "/1000" to make the conversion.

My change is a simple fix but quite possibly there are other places within fio making the same mistake?

These lines could just call mtime_since_now rather than utime_since_now.

There's one more a few lines down:

                fio_gettime(&td->start, NULL);

                do_verify(td, verify_bytes);

                td->ts.runtime[DDIR_READ] += utime_since_now(&td->start);

---
Rob Elliott HP Server Storage

#3 lore raw

Thanks Rob

I have made the suggested changes and these appear to be working OK.

John

Quoted 48 lines · Robert (Server Storage)
Quoted 31 lines

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of John OCallaghan
Sent: Friday, 15 August, 2014 11:55 AM
To: [email protected]
Subject: Re: runtime and status-interval

FYI I found the problem in fio/backend.c. Seems to be working fine now.

The fix I put together is this:

		if (td_read(td) && td->io_bytes[DDIR_READ]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_READ] += elapsed/1000;
		}
		if (td_write(td) && td->io_bytes[DDIR_WRITE]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_WRITE] += elapsed/1000;
		}
		if (td_trim(td) && td->io_bytes[DDIR_TRIM]) {
			elapsed = utime_since_now(&td->start);
			td->ts.runtime[DDIR_TRIM] += elapsed/1000;
		}
Quoted 6 lines

The problem is is that runtime is holding milliseconds but utime_since_now() returns microseconds. I added the "/1000" to make the conversion.

My change is a simple fix but quite possibly there are other places within fio making the same mistake?

These lines could just call mtime_since_now rather than utime_since_now.

There's one more a few lines down:

                fio_gettime(&td->start, NULL);

                do_verify(td, verify_bytes);

                td->ts.runtime[DDIR_READ] += utime_since_now(&td->start);
Quoted 6 lines

---
Rob Elliott HP Server Storage

-----

The information contained in this e-mail and in any attachments is confidential and is designated solely for the attention of the intended recipient(s). If you are not an intended recipient, you must not use, disclose, copy, distribute or retain this e-mail or any part thereof. If you have received this e-mail in error, please notify the sender by return e-mail and delete all copies of this e-mail from your computer system(s). Please direct any additional queries to: [email protected]. Thank You. Silicon and Software Systems Limited (S3 Group). Registered in Ireland no. 378073. Registered Office: South County Business Park, Leopardstown, Dublin 18.