OS IOPS value Vs Storage IOPS value

How do we differentiate the IOPS value from  OS to Storage. For an example I'm writing 8K block of data using dd command in linux

dd if=/dev/zero of=/opt/rg/perf/testing123 bs=8k count=30000000
245760000000 bytes (246 GB) copied, 334.014 s, 736 MB/s

IOPS value is 30000000/334= 89820

but in Storage I'm only seeing around 2000 IOPS. IF I understand correctly it converts to different block size, and then do the calculation?
mokkanAsked:
Who is Participating?
 
DavidConnect With a Mentor PresidentCommented:
dd does NOT write data to the HDD in 8KB I/O chunks, or for that matter, the way you are running it, it won't even write only 8KB x 30000000 bytes of data.

Your filesystem, kernel, and device drivers are doing a heck of a lot of things underneath the covers such as dealing with journaling, aggregating I/O, and potentially doing some compression depending on some settings.

It is even queuing I/O, so if you kill the dd, you will note that the HDD still blinks for a while after dd is killed.

If you want to measure how fast data gets to the disk, with reasonable accuracy, you must do a dd but set the of= to the raw physical device (which destroys file system).   If you want to insure that the block sizes are correct and when you do a dd to write chunks in 8KB and exactly 8KB of data gets written and nothing else, then you have to write a program that uses the pass-through /dev/sg driver and send out the WRITE(10) and/or WRITE(16) CDBs.   The raw SCSI method is the ONLY accurate means of having complete control.
0
 
andyalderConnect With a Mentor Commented:
Same goes for Windows, the device driver will even re-order writes to try to make bigger I/Os to cut down the IOPS requirement especially if it's a clever RAID controller.
0
 
mokkanAuthor Commented:
Thank you very much. If I'm  writing to  raw device, then how do I much up IOPS value with storage? Does it need to be equal or depends on the storage and stripe size?
0
Improve Your Query Performance Tuning

In this FREE six-day email course, you'll learn from Janis Griffin, Database Performance Evangelist. She'll teach 12 steps that you can use to optimize your queries as much as possible and see measurable results in your work. Get started today!

 
DavidConnect With a Mentor PresidentCommented:
There is no such thing as stripe size when sending raw WRITE commands to the HDD.  If you send it 2,618 bytes, then that is what it writes.  IF you send 32,768 bytes, then that is what it writes.

Now what i think you want to do is send raw SCSI commands to the RAID volume, and that process depends on whether you are doing hardware or software RAID .. so be specific, what is the method you use for RAID?
0
 
mokkanAuthor Commented:
No, I mean in storage side, does it convert to different stripe size and write it to disk?
0
 
DavidConnect With a Mentor PresidentCommented:
If you send the raw scsi commands to the RAID volume, then the controller will slice and dice as necessary to get it to the disk.  Example, if stripe size is 64KB and you have a 3-disk RAID5, then if you send just one byte to the raid volume, then this will generate approx 256KB worth of I/O.

But if you read 1 byte, then that could generate anywhere from 1 byte to 64KB worth of physical disk I/O.

It is all dependent on understanding the RAID architecture.
0
 
mokkanAuthor Commented:
Thank you all.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.