FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
您的足迹: cgroup之blkio.weight测试
cgroup之blkio.weight测试

概述

cgroup的blkio.weight可以控制磁盘IO权重。

blkio.weight:此参数用于指定一个 cgroup 在默认情况下可存取块 I/O 的相对比例(加权),范围是 100 到1000。该值可被指定设备的 blkio.weight_device 参数覆盖。

注意:该功能仅适用于CFQ磁盘调度算法(Linux内核磁盘IO电梯算法)

测试

查询与修改磁盘调度算法

查询磁盘调度算法,以下以sda盘为例:

snippet.bash
[yz@bogon ~]$ cat /sys/block/sda/queue/scheduler
noop [deadline] cfq

修改调度算法:

snippet.bash
[yz@bogon ~]$ sudo sh -c "echo cfq > /sys/block/sda/queue/scheduler"
[yz@bogon ~]$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq]

配置cgroup

切换当前目录:

snippet.bash
[yz@bogon ~]$ cd /sys/fs/cgroup/blkio/yz/
[yz@bogon yz]$ mkdir hi
[yz@bogon yz]$ mkdir lo

hi(高权重组)和lo(低权重组)的blkio.weight分别配置为1000和100:

snippet.bash
[yz@bogon yz]$ echo 1000 > hi/blkio.weight
[yz@bogon yz]$ echo 100 > lo/blkio.weight

dd测试

分别从两个终端执行dd,对sda盘执行写操作:

终端1(高权重组):

snippet.bash
[yz@bogon ~]$ cgexec -g "blkio:yz/hi" dd if=/dev/zero of=./big.txt bs=10M oflag=direct

终端2(低权重组):

snippet.bash
[yz@bogon ~]$ cgexec -g "blkio:yz/lo" dd if=/dev/zero of=./low.txt bs=10M oflag=direct

执行一段时间后,查看两个dd的统计情况:

snippet.bash
[yz@bogon ~]$ cgexec -g "blkio:yz/hi" dd if=/dev/zero of=./big.txt bs=10M oflag=direct
^C记录了4993+0 的读入
记录了4993+0 的写出
52355399680字节(52 GB)已复制,250.286 秒,209 MB/秒
 
[yz@bogon ~]$  cgexec -g "blkio:yz/lo" dd if=/dev/zero of=./low.txt bs=10M oflag=direct
^C记录了224+0 的读入
记录了224+0 的写出
2348810240字节(2.3 GB)已复制,78.0385 秒,30.1 MB/

总体上两个优先级的IO速度差异很明显。

需要说明的是,两个组的速度比并不是10:1,主要原因是blkio.weight是当IO发生争抢时的优先级,当IO比较空闲时,两个组不按照上述权重分配IO资源。

参考



打赏作者以资鼓励:
移动端扫码阅读: