[$] Measuring (and fixing) I/O-controller throughput loss
Many services, from web hosting and video streaming to cloud storage,need to move data to and from storage. They also often require that each per-clientI/O flow be guaranteed a non-zero amount of bandwidth and a bounded latency. Anexpensive way to provide these guarantees is to over-provisionstorage resources, keeping each resource underutilized, and thushave plenty of bandwidth available for the few I/O flows dispatched toeach medium. Alternatively one can use an I/O controller. Linux providestwo mechanisms designed to throttle some I/O streams to allow others tomeet their bandwidth and latency requirements. These mechanisms work, butthey come at a cost: a loss of as much as 80% of total available I/Obandwidth. I have run some tests to demonstrate this problem; someupcoming improvements to the bfq I/Oscheduler promise to improve the situation considerably.