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,创建cgroupcgcreate ,名称为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