I have the write Bandwidth value received from the system and I need to calculate the write IOPS using the BW,

Bandwidth = amount of data / second


As per the above link, I observed the following formula,

Average IO Size * IOPS = Bandwidth

So If my understanding is correct, then If I have the Average IO size, I will be able to calculate the IOPS.

Example :

Average IO Size is 4KB and Bandwidth = 32KB then

IOPS = Bandwidth / Average IO Size 
IOPS = 32KB / 4KB 
IOPS = 8

I have two questions from it,

1) Is it correct?
2) As per the definition, It seems Average IO size depends on OS and Application / service running, So Can someone elaborate on how to get this Average IO Size? so that I can get the IOPS.

  • How does this relate to unix? This is question seems like pure math. Or an X/Y problem. If this were about Linux, the question should be "how do I get IOPS", upon which the answer becomes very simple. – Patrick Feb 8 '18 at 2:03

IOPS - input/output operations per second

Thus it actually might be very very roughly estimated as

Bandwidth / (average transaction block size + communication overhead)

Payload with all the checksums and protocol encapsulation can be enourmous, actuall I/O transactions will be batched at the hardware level, such manipulations are rendered invisible from the software perspective.

If we're comparing AHCI and PATA modes there's like ~2.5 overhead just from an aditional encapsulation of the ATA command set. Due to the command queue being synchronous further drive head movements can't be optimized. Some of the AHCI NCQ optimizations may fail.

And if it's a SSD the things are much more unpredicatable there, because SSD's are storing only an approximation of your data, which will be degrading over time, and you have to predict the IO execution plans of the hardware controller - some of them may fail.

Measuring actual IOPS in block devices nowadays became quite cumbersome. So, if your block device doesn't have some sort of hardware implementation of an IOPS counter - it's pratically imposible to measure at software level.

If we're speaking about rough estimations - NVMe controllers IOPS count accuracy can be like +/- 10K IOPS nowadays.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.