简介

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,你可以通过

  1. cat /sys/block/sda/queue/scheduler
    1. noop anticipatory deadline [cfq]

代中括号的就是当前的io scheduler, 如果要修改, 直接修改这个文件即可

测试

创建两个container, test1和test2, 他们从同一个文件(400M)读入数据,通过lxc的设置控制两个进程读的速度。
test1的配置:

  1. lxc.cgroup.blkio.weight = 100

test2的配置:

  1. lxc.cgroup.blkio.weight = 1000

执行脚本:

  1. sync
  2. echo 3 > /proc/sys/vm/drop_caches  #这两句必须要,用于清空cache,数据在第一次读入后都在caache中
  3. dd if=/tmp/file of=/dev/null

命令

  1. lxc-execute -n test1 -f /tmp/test1.conf /tmp/test1.sh
  2. 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的支持,非常感谢!

 
分类: LXC

Linux Container测试之block IO的更多相关文章

  1. Linux Cgroup v1(中文翻译)(4):Block IO Controller

    Block IO Controller 1 概览 cgroup子系统blkio实现了block io控制器.无论是对存储结构上的叶子节点和还是中间节点,它对各种IO控制策略(proportional ...

  2. Docker(linux container) 所依赖的底层技术

    1 Namespace 用来做PID的隔离,有了namespace,在docker container里头看来,就是一个完整的linux的世界.在host看来,container里的进程,就是一个普通 ...

  3. Linux 性能优化之 IO 子系统 系列 图

    http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...

  4. 如何提高Linux下块设备IO的整体性能?

    编辑手记:本文主要讲解Linux IO调度层的三种模式:cfp.deadline和noop,并给出各自的优化和适用场景建议. 作者简介: 邹立巍 Linux系统技术专家.目前在腾讯SNG社交网络运营部 ...

  5. 2014 Container技术大会:未来Linux Container会是PaaS平台的核心

    不应错过2014 Container技术大会的九大理由. 一.Docker官方人员再次来到北京,首次向中国布道Docker技术.2013年Docker高级软件工程师Jerome Petazzoni,曾 ...

  6. linux块设备的IO调度算法和回写机制

    ************************************************************************************** 參考: <Linux ...

  7. LXC(LinuX Container)之namespaec和cgroup

    LXC(LinuX Container)之namespaec和cgroup namespace概述 从操作系统级上实现了资源的隔离,它本质上是宿主机上的进程(容器进程),所以资源隔离主要就是指进程资源 ...

  8. Linux的五种IO模型及同步和异步的区别

    前置知识 缓存 I/O 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O.在 Linux 的缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓 ...

  9. Linux 网络编程(IO模型)

    针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下 ...

随机推荐

  1. 《Typecript 入门教程》 3、接口

    转载:<TypeScript 中文入门教程> 3.接口 介绍 TypeScript的核心原则之一是对值所具有的shape进行类型检查. 它有时被称做“鸭式辨型法”或“结构性子类型化”. 在 ...

  2. Python 如何在csv中定位非数字和字母的符号

    在数据清洗过程中,有时不仅希望去掉脏数据,更希望定位脏数据的位置,例如从csv里面定位非数字和字母单元格的位置,在使用isdigit().isalpha().isalnum()时无法判断浮点数,会将浮 ...

  3. ResGen.exe”已退出,代码为2 问题处理

    转载自  http://blog.sina.com.cn/s/blog_5f82a1060101d8tm.html 在64位的Windows 7下,用VS2010编译4.0以前的.Net项目会有问题. ...

  4. centos mysql允许远程root登录

    Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

  5. [hihocoder][Offer收割]编程练习赛62

    方向 #pragma comment(linker, "/STACK:102400000,102400000") #ifndef ONLINE_JUDGE #include &qu ...

  6. html5——动画案例(太阳系)

    太阳系主要利用定位,伪元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  7. day13-迭代器、三元表达式、列表推导式、字典生成式、生成器与递归

    目录 迭代器 可迭代对象 迭代器对象 for循环原理 三元表达式(三目表达式) 列表推导式 字典生成式 zip()方法 生成器 生成器表达式 递归 递归的两个阶段 迭代器 迭代器即迭代的工具,迭代是一 ...

  8. Java中的方法重写

    方法的重载: 在同一个类中,出现多个同名的方法,参数列表不同,与返回值类型,修饰符无关 方法的重写: 子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表) 方法重写的注意事项: 1.重 ...

  9. CAD设置图层亮度(com接口)

    主要用到函数说明: MxDrawXCustomFunction::Mx_SetLayerBright 设置显示亮度,默认值为100%.详细说明如下: 参数 说明 LPCTSTR pszLayerNam ...

  10. 文章或者观点说说等点赞功能实现(thinkphp)

    前端的代码: <!-- 点赞 --> <div class='btm'><a class='zan' id="{$article.id}" href= ...