I have been reading about disk recently which led me to 3 different doubts. And I am not able to link them together. Three different terms I am confused with are block size
, IO
and Performance
.
I was reading about superblock at slashroot when I encountered the statement
Less IOPS will be performed if you have larger block size for your file system.
From this I understand that If I want to read 1024 KB of data, a disk(say A) with block size 4KB/4096B would take more IO than a disk(Say B) with block size of 64KB.
Now my question is how much more IO would disk A need ?.
As far as I am understanding the number of IO request required to read this data would also be dependent on the size of each IO request.
So who is deciding what is the size of the IO request? Is it equal to the block size?
Some people say that your application decides the size of IO request which seems fair enough but how then OS divides the single request in multiple IO.There must be a limit after which the request splits in more then one IO. How to find that limit ?
Is it possible that in both disk (A and B) the data can be read in same number of IO?
Does reading each block means a single IO ? If not how many blocks can be maximum read in a single IO?
If the data is sequential or random spread, does CPU provides all block address to read once?
Also
num of IOPS possible = 1 /(average rotational delay + avg seek time)
Throughput = IOPS * IO size
From above the IOPS for a disk would be fix always but IO size can be variable. So to calculate the maximum possible throughput we would need maximum IO size. And from this what I understand is If I want to increase throughput from a disk I would do request with maximum data I can send in a request. Is this assumption correct ?
I apologize for too many questions but I have been reading about this for a while and could not get any satisfactory answers. I found different views on the same.