一、前言
二、blkio配置
blkio是cgroup中的一个子系统,可以用于限制及监控磁盘读写io
blkio控制子系统可以限制进程读写的 IOPS 和吞吐量,但它只能对 Direct I/O 的文件读写进行限速,对 Buffered I/O 的文件读写无法限制
Buffered I/O 指会经过 PageCache 然后再写入到存储设备中。这里面的 Buffered 的含义跟内存中 buffer cache 不同,这里的 Buffered 含义相当于内存中的buffer cache+page cache。
1、限制磁盘读写io
blkio涉及限制磁盘读写io的配置文件主要有以下几个,通用echo指定磁盘设备号及数值实现限制磁盘读写io
root@node197:~# ll /sys/fs/cgroup/blkio/
-rw-r--r-- 1 root root 0 Mar 4 03:00 blkio.throttle.read_bps_device
-rw-r--r-- 1 root root 0 Mar 4 03:00 blkio.throttle.read_iops_device
-rw-r--r-- 1 root root 0 Mar 4 06:21 blkio.throttle.write_bps_device
-rw-r--r-- 1 root root 0 Mar 4 03:00 blkio.throttle.write_iops_device
通用格式
echo "<disk-number> <io-value>" > /sys/fs/cgroup/blkio/<io-type>
- disk-number:指定需要限制的磁盘编号,可通过
ll /dev/block/ | grep sdb
查看对应磁盘编号,如8:16
- io-value:指定需要限制的io数值(数值为0表示不限制),当指定的文件名称为
blkio.throttle.write_bps_device
,则表示限制写入带宽,单位为B/s - io-type:指定需要限制的io类型
- blkio.throttle.write_bps_device:磁盘写入带宽限制
- blkio.throttle.write_iops_device:磁盘写入IOPS限制
- blkio.throttle.read_bps_device:磁盘读取带宽限制
- blkio.throttle.read_iops_device:磁盘读取IOPS限制
参考示例
- 查看sdb磁盘对应编号为8:16
[root@node189 ~]# ll /dev/block/ | grep sdb
lrwxrwxrwx 1 root root 6 Mar 4 14:29 8:16 -> ../sdb
- 限制sdb磁盘写入带宽为1MB/s
[root@node189 ~]# echo "8:16 1048576" >> /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
- 指定directio测试sdb磁盘写入性能,当前成功限制为1MB/s
[root@node189 ~]# cat /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
8:16 1048576
[root@node189 ~]# dd if=/dev/zero of=/dev/sdb bs=1M count=1000 oflag=direct
^C64+0 records in
64+0 records out
67108864 bytes (67 MB) copied, 64.0199 s, 1.0 MB/s
- 解除sdb磁盘写入限制
[root@node189 ~]# echo "8:16 0" >> /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
[root@node189 ~]# cat /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device
[root@node189 ~]# dd if=/dev/zero of=/dev/sdb bs=1M count=1000 oflag=direct
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 21.9032 s, 47.9 MB/s
标签:限制,throttle,访问控制,读写,blkio,cgroup,device,磁盘,root
From: https://www.cnblogs.com/luxf0/p/17746545.html