Linux Container测试之block IO
简介
Linux Container是OS级别的虚拟化方案,它相比于一般的虚拟机没有了硬件模拟以及指令模拟,相比传统虚拟机具有更低的开销,因此可以应用到私有云之中。LXC目前的版本支持对memory,cpu以及block IO的管理和限制,目前不支持对网络IO的管理,但该特性已经加入到其roadmap,这些资源的管理和限制对企业私有云的搭建份至关重要,可以提高集群资源的使用率。
环境
LXC需要比较高版本的内核支持,28以上,最好是32以上。我的测试环境是centos6, 内核版本是2.6.32。
准备
block IO即磁盘io,lxc管理block IO是通过在内核的io scheduler CFQ增加hook机制实现的,因此使用lxc管理block io 需要将内核的io scheduler设置为CFQ,你可以通过
- cat /sys/block/sda/queue/scheduler
- noop anticipatory deadline [cfq]
代中括号的就是当前的io scheduler, 如果要修改, 直接修改这个文件即可
测试
创建两个container, test1和test2, 他们从同一个文件(400M)读入数据,通过lxc的设置控制两个进程读的速度。
test1的配置:
- lxc.cgroup.blkio.weight = 100
test2的配置:
- lxc.cgroup.blkio.weight = 1000
执行脚本:
- sync
- echo 3 > /proc/sys/vm/drop_caches #这两句必须要,用于清空cache,数据在第一次读入后都在caache中
- dd if=/tmp/file of=/dev/null
命令
- lxc-execute -n test1 -f /tmp/test1.conf /tmp/test1.sh
- lxc-execute -n test2 -f /tmp/test2.conf /tmp/test2.sh
测试结果及分析
test1: cost 11.12s speed is 37.5MB/s
test2: cost 6.4s speed is 65.7MB/s
假设test1读的速度是v,文件大小是s,则test1的时间是 s/v
那test2的速度根据权重比应该是0.1v,则test2消耗的时间是 s/v + 0.9s/1.1v
因此两者时间比是0.55, 而实际的结果是6.4/11.12=0.5755, 刚好印证了这个结果,因此可以说lxc对block io的控制是很好的。
PS:感谢淘宝Zhu yanhai的支持,非常感谢!
Linux Container测试之block IO的更多相关文章
- Linux Cgroup v1(中文翻译)(4):Block IO Controller
Block IO Controller 1 概览 cgroup子系统blkio实现了block io控制器.无论是对存储结构上的叶子节点和还是中间节点,它对各种IO控制策略(proportional ...
- Docker(linux container) 所依赖的底层技术
1 Namespace 用来做PID的隔离,有了namespace,在docker container里头看来,就是一个完整的linux的世界.在host看来,container里的进程,就是一个普通 ...
- Linux 性能优化之 IO 子系统 系列 图
http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...
- 如何提高Linux下块设备IO的整体性能?
编辑手记:本文主要讲解Linux IO调度层的三种模式:cfp.deadline和noop,并给出各自的优化和适用场景建议. 作者简介: 邹立巍 Linux系统技术专家.目前在腾讯SNG社交网络运营部 ...
- 2014 Container技术大会:未来Linux Container会是PaaS平台的核心
不应错过2014 Container技术大会的九大理由. 一.Docker官方人员再次来到北京,首次向中国布道Docker技术.2013年Docker高级软件工程师Jerome Petazzoni,曾 ...
- linux块设备的IO调度算法和回写机制
************************************************************************************** 參考: <Linux ...
- LXC(LinuX Container)之namespaec和cgroup
LXC(LinuX Container)之namespaec和cgroup namespace概述 从操作系统级上实现了资源的隔离,它本质上是宿主机上的进程(容器进程),所以资源隔离主要就是指进程资源 ...
- Linux的五种IO模型及同步和异步的区别
前置知识 缓存 I/O 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O.在 Linux 的缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓 ...
- Linux 网络编程(IO模型)
针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...
随机推荐
- css的一些命名规范
网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...
- [Swift通天遁地]四、网络和线程-(5)解析网络请求数据:String(字符串)、Data(二进制数据)和JSON数据
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- hbuilder中的 http://www.w3.org/TR/html4/frameset.dtd
<!-- This is the HTML 4.01 Frameset DTD, which should be used for documents with frames. This DTD ...
- [转]HTML5 Day 4: Add Drop Down Menu to ASP.NET MVC HTML5 Template using CSS and jQuery
本文转自:http://pietschsoft.com/post/2010/11/17/HTML5-Day-4-Add-DropDown-Menu-ASPNET-MVC-HTML5-Template- ...
- Ubuntu16安装jdk8配置Tomcat9
一.配置jdk 1.下载解压是肯定不能少的 2.配置环境变量根据自己需求来 export JAVA_HOME=/usr/software/jdk1.8.0_121 export CLASSPATH=. ...
- 数据结构应用实例#栈&单链表#简易计算器
修改BUG的时候一不小心BUG越修越多,鉴于维护程序并不是学习数据结构的初衷,我已经果断的弃坑了!! 以下内容再不更新,Github上的代码直接无法正常编译运行.... 参考参考就好,学习到栈的作用就 ...
- #1003 Max Sum
http://acm.hdu.edu.cn/showproblem.php?pid=1003 给你一串数列,让你求出其中 一段连续的子数列 并且 该子数列所有数字之和最大,输出该子数列的和.起点与终点 ...
- 从JavaScript的单线程执行说起
先看一段代码: 1 2 3 4 5 setTimeout(function(){ alert("a"); }, 0); while(1); alert("b&qu ...
- HDU_1502_dp
Regular Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Address space layout randomization
Address space layout randomization (ASLR) is a computer security technique involved in preventing ex ...