由于公司的分布式存储产品(基于Ceph)需要提供QoS特性,之前也相关经验,所以打算先分析QEMU QoS的特性及其实现原理,然后基于此,给出Librbd QoS的定义,内容如下:
由于GNU Linux
系统的cgroup
不支持网络设备(nfs
,ceph
)的资源控制,为提供一套通用的I/O
流控机制。QEMU
实现了一个独立的流控
模块来控制磁盘I/O
操作,该模块能实现磁盘TPS
、OPS
及潮汐式
流量控制,具体特性如下:
QEMU QoS
特性
磁盘I/O
的两个方面: 每秒的数据量(TPS
)以及每秒的I/O
操作(OPS
):
QEMU
能分别为TPS
和OPS
提供全局配置或者针对读写的独立配置。- 全局配置和针对读写的差异配置不能同时使用
- 支持同时控制
TPS
和OPS
- 支持
潮汐
式I/O
流量控制 - 支持
I/O
大小控制 - 支持基于磁盘组的流控控制
QEMU
默认不开启流量控制
全局配置
及读写差异配置
QEMU
针对TPS
及OPS
分别提供全局配置及读写配置。全局配置(*-total
)同时控制读写I/O
操作,而读写配置(*-read
, *-write
)则通过设置不同的参数分别控制读写I/O
操作。
全局配置和读写配置不能同时使用
潮汐式流量控制
除了上述标准的TPS
及OPS
控制,QEMU
还支持潮汐式流控,允