The creation of the io.latency block I/O controller

The creation of the io.latency block I/O controller

In the slow case, which occurs every window sample time (that’s the 250ms time period mentioned above) we have to acquire a lock in the parent to add up all of the I/O statistics and check if our latencies have missed the threshold. Once the memory pressure starts to build, the workload’s latencies really go through the roof because, for the most part, the main workload is memory intensive, not I/O intensive. To solve this problem I added a congestion counter to the block control-group structure that can be set if a control group is getting a lot of I/O done for free without being throttled.

Source: lwn.net