Re: How to measure IOPS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 3, 2010 at 8:43 AM, Werner Fischer <devlists@xxxxxxxx> wrote:
> Hi Chris,
>
> thanks for your valuable hint.
>
> I have now tried with
>    numjobs=1
>    iodepth=1
>    size= entire size of the drive
>    bs=512 (as this is the block size on a HDD, but 4k gave nearly the same results)
>
> I got (see also below):
>    randread:  81 IOPS
>    randwrite: 76 IOPS
>
> Those numbers now match the range that I had expected.

Note that while that is a valid/accepted way to measure HD (rotating
media) average seek time, it falsely assumes that applications behave
like this, which they don't (logging apps being the exception, but
most application don't generally continuously rewrite the entire
drive)... but it does supply a good average for the apps to expect.
When testing SSD's, that don't have a variable seek time but do have a
management layer underneath, this assumption has unintended
side-effects, so is not a proper way to benchmark SSD's.

Chris
>
> [root@iotest ~]# fio --filename=/dev/sdd --direct=1 --rw=randread --bs=512 --size=500107862016 --runtime=300 --name=file1
> file1: (g=0): rw=randread, bs=512-512/512-512, ioengine=sync, iodepth=1
> Starting 1 process
> Jobs: 1 (f=1): [r] [100.0% done] [41K/0K /s] [81/0 iops] [eta 00m:00s]
> file1: (groupid=0, jobs=1): err= 0: pid=16443
>  read : io=12,435KB, bw=42,443B/s, iops=82, runt=300007msec
>    clat (msec): min=1, max=22, avg=12.06, stdev= 3.59
>    bw (KB/s) : min=   36, max=   47, per=99.97%, avg=40.99, stdev= 1.98
>  cpu          : usr=0.07%, sys=0.55%, ctx=24897, majf=0, minf=3208
>  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
>     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
>     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
>     issued r/w: total=24870/0, short=0/0
>
>     lat (msec): 2=0.02%, 4=0.81%, 10=28.56%, 20=69.47%, 50=1.14%
>
> Run status group 0 (all jobs):
>   READ: io=12,435KB, aggrb=41KB/s, minb=42KB/s, maxb=42KB/s, mint=300007msec, maxt=300007msec
>
> Disk stats (read/write):
>  sdd: ios=24858/0, merge=0/0, ticks=299591/0, in_queue=299588, util=100.00%
> [root@iotest ~]# fio --filename=/dev/sdd --direct=1 --rw=randwrite --bs=512 --size=500107862016 --runtime=300 --name=file1
> file1: (g=0): rw=randwrite, bs=512-512/512-512, ioengine=sync, iodepth=1
> Starting 1 process
> Jobs: 1 (f=1): [w] [100.0% done] [0K/39K /s] [0/76 iops] [eta 00m:00s]
> file1: (groupid=0, jobs=1): err= 0: pid=16498
>  write: io=11,560KB, bw=39,456B/s, iops=77, runt=300001msec
>    clat (msec): min=1, max=23, avg=12.97, stdev= 3.52
>    bw (KB/s) : min=   33, max=   43, per=100.14%, avg=38.05, stdev= 1.83
>  cpu          : usr=0.06%, sys=0.53%, ctx=23146, majf=0, minf=2578
>  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
>     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
>     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
>     issued r/w: total=0/23119, short=0/0
>
>     lat (msec): 2=0.01%, 4=0.13%, 10=20.87%, 20=76.63%, 50=2.37%
>
> Run status group 0 (all jobs):
>  WRITE: io=11,559KB, aggrb=38KB/s, minb=39KB/s, maxb=39KB/s, mint=300001msec, maxt=300001msec
>
> Disk stats (read/write):
>  sdd: ios=0/23110, merge=0/0, ticks=0/299565, in_queue=299560, util=100.00%
> [root@iotest ~]#
>
>
> best regards,
> Werner
>
> PS @Chris: I discovered that your and my last message to you haven't
> been sent to the list, now I write directly to the list. My first answer
> to you was wrong, I only used 500MB (instead of 500GB) as size.
>
> On Wed, 2010-09-01 at 22:08 -0600, Chris Worley wrote:
>> That looks good.  You can play with numjobs, ioengines, and iodepths
>> (which I believe only applies to libaio) to find a maximum.
>>
>> A valid seek time average should require numjobs and iodepth set to
>> one, and, most importantly, the "size" be the entire drive.
>>
>> Chris
>>
>> On Wed, 2010-09-01 at 23:46 +0200, Werner Fischer wrote:
>> > Can you give me a hint what fio parameters you would suggest to measure IOPS?
>> > Are the 140 IOPS too high for a 7.200k drive like the one I have?
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe fio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux