1

I'm trying to understand the meaning of split io/sec counter for physical disk in Windows Performance monitor and don't quite get the reason why the single IO operation might be split into several. According to Microsoft documentation:

Shows the rate at which that I/O requests to the disk were split into multiple requests. A split I/O may result from requesting data in a size that is too large to fit into a single I/O or that the disk is fragmented on single-disk systems.

How does the operational systems know that the requested data is too big and the request has to be split? Is there a fixed threshold value or it is being calculated? Fragmentation is a concept of filesystem. And from my understanding the split io counter is being collected from the internals of the disk driver which is lower then the layer of filesystem and thus has no idea whether a requested block (or a group of sequential blocks) belongs to a fragmented file. Am I wrong?

tokitux
  • 29
  • 1
  • 3

1 Answers1

2

Each block devices can specify (at least) two different IO size:

  • minimum block size: the minumum block size the device will ever accept (often 512B or 4 KB)
  • maximum block size: the maximum block size the device can manage in a single transfer (generally 64 KB for Windows IDE and AHCI drivers).

From the above is clear that if the device specifies, for example, a maximum block size of 64 KB but your application writes 128 KB at a time, each write will be split in two different IO requests.

From here (please note it is an old document):

Using 64 KB requests results in faster throughput with very little processor time. Maximum throughput typically occurs at 64 KB, although some devices might have a higher maximum throughput size. When transferring data blocks greater than 64 KB, the I/O subsystem breaks the transfers into 64-KB blocks. Above 64 KB, the transfer rate drops sharply, and throughput levels off. Processor use and interrupts also appear to level off at 64 KB.

shodanshok
  • 47,711
  • 7
  • 111
  • 180
  • Thank you for the link. So, as I understood a split operation occurs for large sequential pieces of data transferring. But doesn't it mean that the more fragmented filesystem is, the less likely that the io request would be split? – tokitux Feb 07 '20 at 17:38
  • As by Microsoft documentation, a fragmented filesystem can cause more contiguous requests to be split into additional smaller requests. – shodanshok Feb 07 '20 at 18:29