Linux 内核 5 中不存在几个 blkio cgroup 文件

Linux 内核 5 中不存在几个 blkio cgroup 文件

我有一台 Ubuntu 19.04 VM(内核 5.0.0),我发现其中缺少几个 blkio cgroup 文件:

    ubuntu@ip-172-31-44-196:~$ cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=19.04
    DISTRIB_CODENAME=disco
    DISTRIB_DESCRIPTION="Ubuntu 19.04"

    ubuntu@ip-172-31-44-196:~$ uname -an            
    Linux ip-172-31-44-196 5.0.0-1007-aws #7-Ubuntu SMP Thu May 16 15:18:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

    ubuntu@ip-172-31-44-196:~$ ls -la /sys/fs/cgroup/blkio/
    total 0
    dr-xr-xr-x  2 root root   0 Jun 17 03:17 ./
    drwxr-xr-x 15 root root 380 Jun 17 03:14 ../
    --w-------  1 root root   0 Jun 17 03:17 blkio.reset_stats
    -r--r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.io_service_bytes
    -r--r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.io_service_bytes_recursive
    -r--r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.io_serviced
    -r--r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.io_serviced_recursive
    -rw-r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.read_bps_device
    -rw-r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.read_iops_device
    -rw-r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.write_bps_device
    -rw-r--r--  1 root root   0 Jun 17 03:17 blkio.throttle.write_iops_device
    -rw-r--r--  1 root root   0 Jun 17 03:17 cgroup.clone_children
    -rw-r--r--  1 root root   0 Jun 17 03:17 cgroup.procs
    -r--r--r--  1 root root   0 Jun 17 03:17 cgroup.sane_behavior
    -rw-r--r--  1 root root   0 Jun 17 03:17 notify_on_release
    -rw-r--r--  1 root root   0 Jun 17 03:17 release_agent
    -rw-r--r--  1 root root   0 Jun 17 03:17 tasks

在 Ubuntu 18.04 VM 中,我可以看到:

$ uname -an
Linux workstation 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ ls -la /sys/fs/cgroup/blkio
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_merged
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_merged_recursive
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_queued
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_queued_recursive
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_service_bytes
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_service_bytes_recursive
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_serviced
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_serviced_recursive
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_service_time
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_service_time_recursive
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_wait_time
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.io_wait_time_recursive
-rw-r--r--  1 root root   0 Jun 14 06:25 blkio.leaf_weight
-rw-r--r--  1 root root   0 Jun 14 06:25 blkio.leaf_weight_device
--w-------  1 root root   0 Jun 14 06:25 blkio.reset_stats
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.sectors
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.sectors_recursive
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.throttle.io_service_bytes
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.throttle.io_serviced
-rw-r--r--  1 root root   0 May 31 16:53 blkio.throttle.read_bps_device
-rw-r--r--  1 root root   0 May 31 16:53 blkio.throttle.write_iops_device
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.time
-r--r--r--  1 root root   0 Jun 14 06:25 blkio.time_recursive
-rw-r--r--  1 root root   0 May 31 16:53 blkio.weight
-rw-r--r--  1 root root   0 May 31 16:53 blkio.weight_device
...

因此,似乎内核 5.0 中不存在几个 blkio cgroup 文件,有人知道原因吗?谢谢!

答案1

我遇到了同样的问题,经过一番调查后,我发现它与IO 调度器

就我而言,使用时我可以看到这些文件内核 4.15韓國调度程序,但使用时这些文件不存在内核 5.5mq-截止期限调度程序。在较新的内核版本中,似乎其中一些文件仅在使用拜福调度程序

您可以看到当前的 IO 调度程序星展银行使用以下命令阻止设备:

 cat /sys/block/sda/queue/scheduler

您也可以切换到拜福使用以下命令:

sudo modprobe bfq
echo "bfq" | sudo tee /sys/block/sda/queue/scheduler

正如你所看到的此代码这些文件仅在内核选项中的 CONFIG_BFQ_CGROUP_DEBUG 启用时才使用,因此切换到 bfq 可能还不够。您可以使用以下命令查看当前内核选项:

less /boot/config-`uname -r`

如果配置文件中不存在 CONFIG_BFQ_CGROUP_DEBUG,则应更改此配置文件并重建内核。您可以使用此指令用于更改内核配置。只需将 CONFIG_BFQ_CGROUP_DEBUG=y 添加到配置文件,然后重建并安装内核。

相关内容