1.1 I/O 控制(blkio)
blkio
子系统限制对指定块设备的 I/O 操作
1)对于分配给blkio
子系统的进程,我们可以通过两种方式控制它们对块设备的 I/O 操作
a)通过加权系统
Blkio 子系统参数(bkiio.weight)允许每个Cgroup 拥有相对份额的可用I/O.加权机制可用在公平调度器中实现
b)通过I/0 限制
可用使用子系统参数来为块设备设置I/0操作数上限,这是提供一种限制分配到Cgroup的进程读写手段
c)Example 1
在实例中,我将对一些进程配置限制功能,限制硬盘设备I/0 带宽(字节/秒)
1,确保已挂载blkio控制器
grep blkio /proc/mounts || mkdir /cgroup/blkio ; mount -t cgroup -o blkio none /cgroup/blkio
2,创建cgroup(cgcreate) ,名称为ioctl-william
a)Cgcreate –gblkio:/ioctl-william
3,为ioctl-william 分配进程,
a)我将当前 shell 分配到此 cgroup,以便blkio
控制器管理在该shell 内执行的每一条后续命令的 I/O
b)echo $$ >/cgroup/bliko/ioctl-william/tasks
4,设置ioctl-william 子系统参数
a)在设置之前我们做一次参考,用hdparm –t 检查系统读性能
i.Hdparm –direct –t /dev/sda
1./dev/sda:
2.Timing O_DIRECT diskreads: 1674 MB in 3.00 seconds = 557.64 MB/sec
b)设置子系统参数blkio.throttle.read_bps_device
。其格式为<major>:<minor><bytes_per_second>
同样,查看设备节点以获取主设备号和次设备号
i.调用shell命令 ls –l 获取设备号
1.[root@ovirtNode216 ioctl-william]#ls -l /dev/sda
2.brw-rw----. 1 root disk 8, 0 6月 18 02:05 /dev/sda
ii.设置子系统参数
1.echo "8:0 1047576"> blkio.throttle.read_bps_device
c)设置会立即生效,我们期待测试结果
i.调用shell命令hdparm –direct –t /dev/sda
1./dev/sda:
2.Timing O_DIRECT diskreads: 4 MB in 4.01 seconds = 1022.54 kB/sec
d)恢复子系统参数为缺省值
i.echo “8:0 0” >bliko.throttle.read_bps_device