]> git.baikalelectronics.ru Git - kernel.git/commit
blk-cgroup: show global disk stats in root cgroup io.stat
authorBoris Burkov <boris@bur.io>
Mon, 1 Jun 2020 20:12:05 +0000 (13:12 -0700)
committerJens Axboe <axboe@kernel.dk>
Sat, 18 Jul 2020 02:18:00 +0000 (20:18 -0600)
commitc4906b8a9bed22a7e9160322dc3e31caa5edebda
tree04e0ebe3aab3388aaffab326991e46c407977b8f
parente96de07a8ab4f96046574fba0a29445095b39b34
blk-cgroup: show global disk stats in root cgroup io.stat

In order to improve consistency and usability in cgroup stat accounting,
we would like to support the root cgroup's io.stat.

Since the root cgroup has processes doing io even if the system has no
explicitly created cgroups, we need to be careful to avoid overhead in
that case.  For that reason, the rstat algorithms don't handle the root
cgroup, so just turning the file on wouldn't give correct statistics.

To get around this, we simulate flushing the iostat struct by filling it
out directly from global disk stats. The result is a root cgroup io.stat
file consistent with both /proc/diskstats and io.stat.

Note that in order to collect the disk stats, we needed to iterate over
devices. To facilitate that, we had to change the linkage of a disk_type
to external so that it can be used from blk-cgroup.c to iterate over
disks.

Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Boris Burkov <boris@bur.io>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Documentation/admin-guide/cgroup-v2.rst
block/blk-cgroup.c
block/genhd.c
include/linux/genhd.h