本文将测试一下使用cgroup的blkio组来控制IO吞吐量 :

测试环境CentOS 7.x x64

创建一个继承组

[root@150 rg1]# cd /sys/fs/cgroup/blkio/
[root@150 blkio]# mkdir rg1

继承组自动创建对应的限制文件

[root@150 blkio]# cd rg1
[root@150 rg1]# ll
total 0
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_merged
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_merged_recursive
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_queued
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_queued_recursive
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_service_bytes
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_service_bytes_recursive
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_serviced
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_serviced_recursive
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_service_time
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_service_time_recursive
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_wait_time
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.io_wait_time_recursive
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.leaf_weight
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.leaf_weight_device
--w------- 1 root root 0 Dec 4 00:26 blkio.reset_stats
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.sectors
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.sectors_recursive
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.throttle.io_service_bytes
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.throttle.io_serviced
-rw-r--r-- 1 root root 0 Dec 4 00:29 blkio.throttle.read_bps_device
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.throttle.read_iops_device
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.throttle.write_bps_device
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.throttle.write_iops_device
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.time
-r--r--r-- 1 root root 0 Dec 4 00:26 blkio.time_recursive
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.weight
-rw-r--r-- 1 root root 0 Dec 4 00:26 blkio.weight_device
-rw-r--r-- 1 root root 0 Dec 4 00:26 cgroup.clone_children
--w--w--w- 1 root root 0 Dec 4 00:26 cgroup.event_control
-rw-r--r-- 1 root root 0 Dec 4 00:26 cgroup.procs
-rw-r--r-- 1 root root 0 Dec 4 00:26 notify_on_release
-rw-r--r-- 1 root root 0 Dec 4 00:27 tasks

继承组的tasks为空.

找一个块设备作为测试目标, 注意现在只能控制块设备, 不能控制单个分区.

[root@150 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 2.0G 38G 6% /
devtmpfs 48G 0 48G 0% /dev
tmpfs 48G 0 48G 0% /dev/shm
tmpfs 48G 25M 48G 1% /run
tmpfs 48G 0 48G 0% /sys/fs/cgroup
/dev/sda3 95G 2.8G 87G 4% /opt

例如我这里要控制/dev/sda这个块设备 :

[root@150 opt]# ll /dev/sda
brw-rw---- 1 root disk 8, 0 Nov 27 19:03 /dev/sda

将文件写入/dev/sda的一个文件系统中.

[root@150 rg1]# cd /opt
[root@150 opt]# dd if=/dev/zero of=./test.img bs=1k count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 0.350907 s, 299 MB/s

直接从块设备读取到/dev/null, 不限制的话, 速度是14MB/S

[root@150 opt]# dd if=./test.img of=/dev/null bs=1k count=102400 iflag=direct
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 7.43936 s, 14.1 MB/s

限制读吞吐量是1MB/s :

- Specify a bandwidth rate on particular device for root group. The format
for policy is "<major>:<minor> <bytes_per_second>".
[root@150 opt]# echo "8:0 1048576" > /sys/fs/cgroup/blkio/rg1/blkio.throttle.read_bps_device

将当前shell PID放到该组中

[root@150 opt]# echo $$ > /sys/fs/cgroup/blkio/rg1/tasks

再次读取, 速度被限制到1MB/S

[root@150 opt]# dd if=./test.img of=/dev/null bs=1k count=102400 iflag=direct
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 100.001 s, 1.0 MB/s

清除限制

[root@150 opt]# echo "8:0  0" > /sys/fs/cgroup/blkio/rg1/blkio.throttle.read_bps_device

清除后速度恢复

[root@150 opt]# dd if=./test.img of=/dev/null bs=1k count=102400 iflag=direct
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 7.32235 s, 14.3 MB/s

RC: blkio throttle 测试的更多相关文章

  1. Cgroup blkio简介和测试(使用fio测试)

    Cgroup blkio简介和测试(使用fio测试) 因需要对docker镜像内的进程对磁盘读写的速度进行限制,研究了下Cgroup blkio,并使用fio对其iops/bps限速进行测试. Cgr ...

  2. cgroup测试存储设备IOPS分配

    1 使用:创建树并且attach子系统 首先要创建文件系统的挂载点作为树的根 mkdir /cgroup/name mkdir /cgroup/cpu_and_mem Mount这个挂载点到一个或者多 ...

  3. Windows RC版、RTM版、OEM版、RTL版、VOL版的区别

    Windows 版本号标识区别一览表: 版本缩写 版本全称 版本意义 Alpha版 Alpha 内部测试版,一般不会向外部发布,会有很多Bug,只供测试人员使用,如果您看到Alpha版本了,一般来讲对 ...

  4. webdriver介绍&与Selenium RC的比较

    什么是webdriver? webdriver是一个web自动化测试框架,不同于selenium IDE只能运行在firefox上,webdriver能够在不同的浏览器上执行你的web测试用例.其支持 ...

  5. Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)

    前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢?? 一.Selenium RC的组成: 关于这个问题,我拿了官网上的一 ...

  6. 理解Docker(4):Docker 容器使用 cgroups 限制资源使用

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  7. Cgroups控制cpu,内存,io示例

    Cgroups是control groups的缩写,最初由Google工程师提出,后来编进linux内核. Cgroups是实现IaaS虚拟化(kvm.lxc等),PaaS容器沙箱(Docker等)的 ...

  8. [转载] linux cgroup

    原文: http://coolshell.cn/articles/17049.html 感谢左耳朵耗子的精彩文章. 前面,我们介绍了Linux Namespace,但是Namespace解决的问题主要 ...

  9. Docker基础技术:Linux CGroup

    前面,我们介绍了Linux Namespace,但是Namespace解决的问题主要是环境隔离的问题,这只是虚拟化中最最基础的一步,我们还需要解决对计算机资源使用上的隔离.也就是说,虽然你通过Name ...

随机推荐

  1. JSP内建对象

    ① out - javax.servlet.jsp.jspWriter    out对象用于把结果输出到网页上. 方法: 1. void clear() ;    清除输出缓冲区的内容,可是不输出到c ...

  2. 容器HashMap原理(学习)

    一.概述 基于哈希表的 Map 接口的非同步实现,允许使用 null 值和 null 键,不保证映射的顺序 二.数据结构 HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体:Has ...

  3. 蓝桥 PREV-34 历届试题 矩阵翻硬币

      历届试题 矩阵翻硬币   时间限制:1.0s   内存限制:256.0MB      问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第 ...

  4. 关于Doctype、严格模式与混杂模式

    <!Doctype> 文档声明,位于文档中的最前面的位置,处于<html>标签之前.此标签告知浏览器文档使用哪种HTML或XHTML规范. 用于告知浏览器以何种模式来渲染文档. ...

  5. APDU报文【转】

    本文转载自:http://www.cnbolgs.com/snail0404/p/5436348.html APDU   # APDU # 定义:APDU(ApplicationProtocolDat ...

  6. Opencv+Zbar二维码识别(一维码校正)

    一维码由一组规则排列的黑色线条.白色线条以及对应的字符组成.对倾斜的(没有严重形变)一维码的角度校正,可以根据其黑白相间.排列规则的特点,计算傅里叶频谱,通过傅里叶频谱中直线的倾斜角度计算空间域图像一 ...

  7. java笔记线程方式2

    方式2:实现Runnable接口 * 步骤: *   A:自定义类MyRunnable实现Runnable接口 *   B:重写run()方法 *   C:创建MyRunnable类的对象 *   D ...

  8. 源码阅读之LinkedHashMap(JDK8)

    概述 LinkedHashMap继承自HashMap,实现了Map<K,V>接口.其内部还维护了一个双向链表,在每次插入数据,或者访问.修改数据时,会增加节点.或调整链表的节点顺序.以决定 ...

  9. Linux学习笔记之Linux常用命令剖析-cat/chmod/cd

    1.cat:用于连接文件并打印到标准输出设备上.(使用权限:所有使用者) 语法格式:cat [-AbeEnstTuv] [--help] [--version] fileName 参数说明: -n 或 ...

  10. 计算几何值平面扫面poj2932 Coneology

    Coneology Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4097   Accepted: 859 Descript ...