1 概述
Cgroup中的blkio子系统的主要功能是实现对磁盘i/o带宽的可定制化控制。目前支持的控制策略只要有两种:BLKIO_POLICY_PROP和BLKIO_POLICY_THROTL,即基于权重方式和基于流量方式。权重方式依赖于内核原生的CFQ i/o调度算法,i/o调度算法本身是工作在i/o调度层的,因此在使用上有一定的局限性,即被控制的设备必须使用cfq调度算法;为了弥补这方面的局限性,内核后来引入了基于内核 iothrottle的基于绝对流量的控制策略(虽然也有基于cfq的iops绝对控制,但是性能不佳),同时它还分为基于bps和iops的子策略类型,它工作在通用块层,与调度算法无关,因此具有更广的使用范围,但是绝对流量的策略是一种硬性限制,也有一定的弊端,即对io带宽的利用率上存在一定的问题,不能像权重控制那样将带宽使用率最大化。
2 blkcg文件接口
blk_cgroup文件系统主要提供以下文件共用户进行流量和权重控制
流量:
blkio.throttle.read_bps_device 限制对某块设备读带宽
blkio.throttle.read_iops_device 限制对某块设备读的次数
blkio.throttle.write_bps_device 限制对某块设备写带宽
blkio.throttle.write_iops_device 限制对某块设备写的次数
权重:
blkio.weigh