Documentation/admin-guide/cgroup-v1/blkio-controller.rst

Source file repositories/reference/linux-study-clean/Documentation/admin-guide/cgroup-v1/blkio-controller.rst

File Facts

System
Linux kernel
Corpus path
Documentation/admin-guide/cgroup-v1/blkio-controller.rst
Extension
.rst
Size
11945 bytes
Lines
302
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

===================
Block IO Controller
===================

Overview
========
cgroup subsys "blkio" implements the block io controller. There seems to be
a need of various kinds of IO control policies (like proportional BW, max BW)
both at leaf nodes as well as at intermediate nodes in a storage hierarchy.
Plan is to use the same cgroup based management interface for blkio controller
and based on user options switch IO policies in the background.

One IO control policy is throttling policy which can be used to
specify upper IO rate limits on devices. This policy is implemented in
generic block layer and can be used on leaf nodes as well as higher
level logical devices like device mapper.

HOWTO
=====

Throttling/Upper Limit policy
-----------------------------
Enable Block IO controller::

	CONFIG_BLK_CGROUP=y

Enable throttling in block layer::

	CONFIG_BLK_DEV_THROTTLING=y

Mount blkio controller (see cgroups.txt, Why are cgroups needed?)::

        mount -t cgroup -o blkio none /sys/fs/cgroup/blkio

Specify a bandwidth rate on particular device for root group. The format
for policy is "<major>:<minor>  <bytes_per_second>"::

        echo "8:16  1048576" > /sys/fs/cgroup/blkio/blkio.throttle.read_bps_device

This will put a limit of 1MB/second on reads happening for root group
on device having major/minor number 8:16.

Run dd to read a file and see if rate is throttled to 1MB/s or not::

        # dd iflag=direct if=/mnt/common/zerofile of=/dev/null bs=4K count=1024
        1024+0 records in
        1024+0 records out
        4194304 bytes (4.2 MB) copied, 4.0001 s, 1.0 MB/s

Limits for writes can be put using blkio.throttle.write_bps_device file.

Hierarchical Cgroups
====================

Throttling implements hierarchy support; however,
throttling's hierarchy support is enabled iff "sane_behavior" is
enabled from cgroup side, which currently is a development option and
not publicly available.

If somebody created a hierarchy like as follows::

			root
			/  \
		     test1 test2
			|
		     test3

Throttling with "sane_behavior" will handle the
hierarchy correctly. For throttling, all limits apply
to the whole subtree while all statistics are local to the IOs

Annotation

Implementation Notes