cgroup--blkio子系统测试-2(配合fio 做weight测试)

来源:互联网 发布:力港网络客服电话 编辑:程序博客网 时间:2024/05/29 12:36

      前面测试了 blkio 的throttle部分,本文测试 blkio 的 weight,也就是每个进程能使用的IOPS的能力的比例,必须通过CFQ调度器来实现。

fio是一个测试 IOPS 的好工具,因此这里用fio 配合 cgroup 测试存储设备IOPS的分配。


要使用blkio的weight限制需要注意几个事情:
1. 必须走directio, 如果buffered io因为最终写IO的进程不是发起IO的进程,结果会有很大的偏差。 (下面是cgroup 文档中一段话)

Currently two IO control policies are implemented. First one is proportionalweight time based division of disk policy. It is implemented in CFQ. Hencethis policy takes effect only on leaf nodes when CFQ is being used.
2. 调度器必须是CFQ。

在linux 内核的配置文件 config-xx中需要有如下两个选项

- Enable Block IO controller        CONFIG_BLK_CGROUP=y- Enable group scheduling in CFQ        CONFIG_CFQ_GROUP_IOSCHED=y
3. 测试工具必须支持cgroup的相关限制。
4. 最好是随机的IO。

新版本的支持 cgroup 的 fio 可以在这里下载 

git clone git://git.kernel.dk/fio.git 
下载完后 make && sudo make install  即可安装。


再创建2个512M大小的文件,进行随机的混合读写,一个给500的比例,一个给100的比例,总的比例是1000。那么理论上可以看到A进程可以得到多于B进程5倍的IO能力。


创建一个文件 test.fio,内容如下:

[global]bs=1Mioengine=libaioiodepth=32direct=1rw=randrwrwmixread=90time_basedruntime=180cgroup_nodelete=1[test1]filename=disk1.imgsize=512Mcgroup_weight=500cgroup=first[test2]filename=disk2.imgsize=512Mcgroup_weight=100cgroup=second

启动测试:
$sudo fio test.fio

sina@ubuntu:~/work/test$ sudo fio test.fio test1: (g=0): rw=randrw, bs=1M-1M/1M-1M/1M-1M, ioengine=libaio, iodepth=32test2: (g=0): rw=randrw, bs=1M-1M/1M-1M/1M-1M, ioengine=libaio, iodepth=32fio-2.0.9-28-geebdStarting 2 processesJobs: 2 (f=2): [mm] [100.0% done] [1024K/1024K/0K /s] [1 /1 /0  iops] [eta 00m:00s]   


察看 两个进程

root@ubuntu:/sys/fs/cgroup/blkio# cat first/tasks 15064root@ubuntu:/sys/fs/cgroup/blkio# cat second/tasks 15065


$ sudo iotop
察看磁盘 读写 速度,可见读写速度满足1:5的比例。




原文链接:

fio配合cgroup测试存储设备IOPS分配

http://blog.yufeng.info/archives/2001


相关链接:

linux使用FIO测试磁盘的iops

http://www.xclinux.cn/?p=958


附:

linux IO 协议栈框图:



从上面可以看出什么是 direct  IO。



redhat 官方链接:

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Subsystems_and_Tunable_Parameters.html