From: Linus Torvalds Date: Tue, 9 Jul 2019 04:35:12 +0000 (-0700) Subject: Merge branch 'for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup X-Git-Tag: v5.3-rc1~181 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=92c1d6522135050cb377a18cc6e30d08dfb87efb;p=thirdparty%2Flinux.git Merge branch 'for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup Pull cgroup updates from Tejun Heo: "Documentation updates and the addition of cgroup_parse_float() which will be used by new controllers including blk-iocost" * 'for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: docs: cgroup-v1: convert docs to ReST and rename to *.rst cgroup: Move cgroup_parse_float() implementation out of CONFIG_SYSFS cgroup: add cgroup_parse_float() --- 92c1d6522135050cb377a18cc6e30d08dfb87efb diff --cc Documentation/cgroup-v1/blkio-controller.rst index d1a1b7bdd03ad,2c1b907afc147..fd3184537d238 --- a/Documentation/cgroup-v1/blkio-controller.rst +++ b/Documentation/cgroup-v1/blkio-controller.rst @@@ -15,15 -19,71 +17,18 @@@ level logical devices like device mappe HOWTO ===== -Proportional Weight division of bandwidth ------------------------------------------ -You can do a very simple testing of running two dd threads in two different -cgroups. Here is what you can do. - -- Enable Block IO controller:: - - CONFIG_BLK_CGROUP=y - -- Enable group scheduling in CFQ: - - - CONFIG_CFQ_GROUP_IOSCHED=y - -- Compile and boot into kernel and mount IO controller (blkio); see - cgroups.txt, Why are cgroups needed?. - - :: - - mount -t tmpfs cgroup_root /sys/fs/cgroup - mkdir /sys/fs/cgroup/blkio - mount -t cgroup -o blkio none /sys/fs/cgroup/blkio - -- Create two cgroups:: - - mkdir -p /sys/fs/cgroup/blkio/test1/ /sys/fs/cgroup/blkio/test2 - -- Set weights of group test1 and test2:: - - echo 1000 > /sys/fs/cgroup/blkio/test1/blkio.weight - echo 500 > /sys/fs/cgroup/blkio/test2/blkio.weight - -- Create two same size files (say 512MB each) on same disk (file1, file2) and - launch two dd threads in different cgroup to read those files:: - - sync - echo 3 > /proc/sys/vm/drop_caches - - dd if=/mnt/sdb/zerofile1 of=/dev/null & - echo $! > /sys/fs/cgroup/blkio/test1/tasks - cat /sys/fs/cgroup/blkio/test1/tasks - - dd if=/mnt/sdb/zerofile2 of=/dev/null & - echo $! > /sys/fs/cgroup/blkio/test2/tasks - cat /sys/fs/cgroup/blkio/test2/tasks - -- At macro level, first dd should finish first. To get more precise data, keep - on looking at (with the help of script), at blkio.disk_time and - blkio.disk_sectors files of both test1 and test2 groups. This will tell how - much disk time (in milliseconds), each group got and how many sectors each - group dispatched to the disk. We provide fairness in terms of disk time, so - ideally io.disk_time of cgroups should be in proportion to the weight. - Throttling/Upper Limit policy ----------------------------- - - Enable Block IO controller + - Enable Block IO controller:: + CONFIG_BLK_CGROUP=y - - Enable throttling in block layer + - Enable throttling in block layer:: + CONFIG_BLK_DEV_THROTTLING=y - - Mount blkio controller (see cgroups.txt, Why are cgroups needed?) + - 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