blkio.weight使用感想
根据尝试,发现设置blkio.weight并不会对写入产生很大的影响,其影响的主要是read的IO。
我分别设置了foo和bar两个cgoup,位于/sys/fs/cgroup/blkio/xxx/blkio.weight,分别设置blkio.weight为100和500
$ echo 500 >/sys/fs/cgroup/blkio/foo/blkio.weight
$ echo 100 >/sys/fs/cgroup/blkio/bar/blkio.weight
写入IO测试
启动两个从/dev/zero读取的进程,分别写入两个不同的文件
$ cgexec -g "blkio:foo" dd bs=1M count=4096 if=/dev/sda of=file1
$ cgexec -g "blkio:bar" dd bs=1M count=4096 if=/dev/sda of=file2
通过iotop我们可以看到这两个进程的写入速度并没有本质的区别,最后的输出验证了我的想法
file1: 4294967296 bytes (4.3 GB) copied, 88.5578 s, 48.5 MB/s
file2: 4294967296 bytes (4.3 GB) copied, 88.7628 s, 48.4 MB/s
读取IO测试
启动两个从刚刚创建的大文件读取的进程,分别写入/dev/null,因为需要防止文件系统的缓存干扰测试,我们需要先清空缓存
$ sync
$ echo 3 >/proc/sys/vm/drop_caches
像上面一样,需要用两个控制组进行读取的测试
$ cgexec -g "blkio:foo" dd bs=1M count=4096 if=file1 of=/dev/null
$ cgexec -g "blkio:bar" dd bs=1M count=4096 if=file2 of=/dev/null
再次通过iotop发现,两个进程每秒读的字节数虽然会不断变动,但是大致趋势还是维持在 1:5 左右,和设定的 weight 比例一致。
结论
我不禁要怀疑,难道blkio.weight只对读取要作用么?还需要进一步查资料进行判断