前言
本文主要会介绍笔者在学习Linux Cgroups blkio Subsystem时所总结的知识点,其中会涉及到使用方式以及配置方式
等方面的相关内容。
笔者也会将自己的理解在文中进行阐述,这也算是在和大家交流心得的一个过程。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对于我来说也是很重要的学习过程之一。
1.磁盘性能指标
对于I/O设备这类存储资源的限制,一般是使用磁盘性能的指标来描述和实现限制规则的。因此了解一些磁盘性能指标会有助于更好的使用Linux Cgroups blkio Subsystem去实现对存储类资源的资源限制。
Tips: 如果有读者会存在“经常记混/记错”以下这些磁盘性能指标的问题,笔者这里分享一个小技巧;即尝试
去记忆和理解这些磁盘性能指标的全称
。因为这些指标的全称往往都会描述该指标是如何计算出来的。
1.1 IOPS
IOPS 是 Input/Output Operations Per Second
的简称,也就是每秒钟磁盘读写的次数。这个数值越大表示性能越好
。
1.2 吞吐量
吞吐量(Throughput)是指每秒钟磁盘中数据的读取量
,一般以 MB/s 为单位。这个读取量可以叫作吞吐量,有时候也被称为带宽(Bandwidth);有时也会用bps来代表吞吐量,即每秒读写的数据量。
1.3 IOPS与吞吐量的关系
IOPS 和吞吐量之间是有关联的:吞吐量 = 数据块大小 *IOPS
在 IOPS 固定的情况下,如果读写的每一个数据块越大,那么吞吐量也越大。同理,数据块大小固定时,IOPS越大,吞吐量就越大。
1.4 操作类型
对于写入操作和读取操作,每一种性能指标都有相对应的指标进行记录。例如,read IOPS, write IOPS
2.Linux Cgroups blkio Subsystem
Linux Cgroups blkio Subsystem可以来限制进程对磁盘的I/O操作,即限制磁盘资源的使用。
注意:blkio Subsystem仅在Cgroup V1版本中使用。Cgroup V2版本使用IO Subsystem来限制磁盘资源。
2.1 实现方式
Linux Cgroups blkio Subsystem的虚拟文件系统挂载点一般在"/sys/fs/cgroup/blkio/"。
Tips: 实现原理可以阅读笔者另一遍介绍Linux Cgroups原理的文章
在这个"/sys/fs/cgroup/blkio/"目录下创建子目录作为Control Group,再把需要进行 I/O 限制的进程 pid 写到Control Group的 cgroup.procs 参数中
就可以了。
2.2 主要参数
Linux Cgroups blkio Subsystem中的主要参数有:
参数名称 | 参数说明 |
---|---|
blkio.throttle.read_iops_device | 磁盘读取 IOPS 限制 |
blkio.throttle.read_bps_device | 磁盘读取吞吐量限制 |
blkio.throttle.write_iops_device | 磁盘写入 IOPS 限制 |
blkio.throttle.write_bps_device | 磁盘写入吞吐量限制 |
2.3 配置方式
要对一个控制组做限制,限制它对某一存储设备(例如磁盘/dev/vdb)的写入吞吐量不超过 10MB/s,那么对blkio.throttle.write_bps_device 参数的配置例如: # echo "252:16 10485760" > $CGROUP_CONTAINER_PATH/blkio.throttle.write_bps_device
其中:"252:16"是 /dev/vdb 的主次设备号;"10485760"就是 10MB 的每秒钟带宽限制 。
标签:Subsystem,Cgroups,blkio,吞吐量,IOPS,磁盘 From: https://blog.51cto.com/LiatscBookshelf/9638422