IO Transfer Size vs. Formatting Cluster Block Size
When drive formatting you create what is called the cluster block size. The cluster block size is the OS's logical grouping of sectors to deal with data placement of files etc…
I have made great strides to always use the term IO transfer size since IO Transfer Size does not equal Cluster Block size. So you can have a 64K formatted disk drive and you can send 4K IO transfers all day long.
Likewise, you can have a 4K formatted disk with applications sending out 32K IOs all day long. And of course they could be equal as well.
In fact, many applications will optimize this on the fly. Modern SQL for example can change IO packaging between tasks like maintenance routines vs. regular DB activity.
Block level storage by nature is sending data in data fragments. So a data fragment from inside a database file can be treated differently than moving the database around itself.
So this leads to another pretty large misconception out there; that large IOs will cause a spinning disk to less IO. This isn’t totally true, not much of a way to prove it, and it’s more about the application.
If I have high priority on small changes happening as fast as they can (say like a trade or a credit card transition) then we want to push for the commit as fast as we can. So the application developer will attempt to get those chunks committed as fast as possible.
However, if those little transactions aren’t as sensitive to response time and application developer feels it’s better to package them up together into a 128K IO, then the disk isn’t doing less IO because the IO is larger… the disk is doing less IO because the application had to send over less larger IOs to complete the same task.
In fact, under the conditions of a test representing max throughput of a disk drive, even using a larger IO, the disk will produce way above those traditional number we have always used for traditional drive IO rating.