使用cgroup做磁盘IO的资源隔离,用到blkio子系统
先测试blkio限制dd的情况,很重要的一点是只能限制direct io, dd if=/dev/zero of=/mongodb/dd1 bs=4K count=10240 oflag=direct
在测试mongod的时候,直接限制mongod的进程不起作用,猜测可能是mongod是先往内存里写,不是direct io,后来直接限制启动mongod所在的shell 进程,成功
mkdir /cgroup/blkio
mount -t cgroup -o blkio mongoblk /cgroup/blkio
mkdir /cgroup/blkio/groupA
echo $$ > /cgroup/blkio/groupA/tasks
echo "104:16 2097152" > /cgroup/blkio/groupA/blkio.throttle.write_bps_device (2MB/s)
mongod的数据插入基本1000每秒左右
echo "104:16 4194304" > /cgroup/blkio/groupA/blkio.throttle.write_bps_device (4MB/s)
mongod的数据插入基本2000每秒左右
正常情况下3000-4000每秒左右