本文将测试一下使用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. 2015 Multi-University Training Contest 4 1001 Olympiad

    代码: #include<cstdio> #include<cstring> #include<set> using namespace std; int vis[ ...

  2. placeholder 占位符

    placeholder 简介  |  TensorFlow https://tensorflow.google.cn/programmers_guide/low_level_intro 供给 目前来讲 ...

  3. ios21--xib例子

    故事板控制器: // // XMGViewController.m // 03-综合练习 // // Created by xiaomage on 15/12/28. // Copyright © 2 ...

  4. Bing必应地图中国API-放大与平移

    Bing必应地图中国API-放大与平移 2011-05-24 14:26:32|  分类: Bing&Google|字号 订阅     有些时候我们不希望通过默认的控制栏来控制地图,而是希望能 ...

  5. mac ox终端显示 bogon的问题

    mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,一查bogon这个单词是虚拟.虚伪的意思.     ...

  6. Java IO --ByteArrayOutputStream (六)***

    Java提供了很丰富的io接口,已经可以满足我们大部分读取数据的需求,这个在C读取数据需要自己定义缓冲区数组大小,而且要小心翼翼的防止缓冲区溢出的情况相当不同.一般情况下我们读取的数据都是直接读取成为 ...

  7. Eclipse 使用Anaconda python 解释器

    问题: ubuntu16.04 Anaconda 安装成功 Eclispe 写Python代码 无法使用 (pandas库等) 原因: Eclispe 此时的python解释器==>用的并不是A ...

  8. 16. Ext.ux.TabCloseMenu插件的使用(TabPanel右键关闭菜单) 示例

    转自:https://crabdave.iteye.com/blog/327978 Ext.ux.TabCloseMenu插件的使用(TabPanel右键关闭菜单) 示例 效果: 创建调用的HTML: ...

  9. robotframework - User key 操作

    一.用户关键字操作思路 a.创建model1资源 b.在model下创建用户关键字 - 循环 c.测试套件下创建test_case/case2 & 用户关键字 d.测试套件中导入Resourc ...

  10. Winform执行CMD命令

    1.首先分享CmdHelper类: using System; using System.Collections.Generic; using System.Text; using System.Di ...