The block I/O controller
This first small step is a 20-part patch series implementing a proportional-weight I/O controller within the CFQ I/O scheduler. A new control group (cgroup) class (called "blkio") is created, with each group given an I/O weight between 100 and 1000. The available I/O bandwidth is then handed out to groups as determined by their configured weight.
Working within CFQ gives the I/O controller fine-grained control over how
much bandwidth each group gets. On the other hand, CFQ is poorly
positioned to identify block I/O traffic which is not directly generated by
user space (writeback, for example) or to throttle activity at the virtual
memory level. Achieving that will require the integration of a controller
which hooks into the system at a much higher level. The plan is to write
such a controller and have it work transparently within the same blkio
cgroup. But a couple more small steps will probably be required before
that is ready to go in.
| Index entries for this article | |
|---|---|
| Kernel | Block layer/I/O scheduling |
| Kernel | I/O scheduler |
