博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[zz]Linux Container测试之block IO
阅读量:6884 次
发布时间:2019-06-27

本文共 1117 字,大约阅读时间需要 3 分钟。

简介

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的支持,非常感谢!

转载地址:http://xtnbl.baihongyu.com/

你可能感兴趣的文章
三元运算符
查看>>
iOS界面调试工具 Reveal-备用
查看>>
对聚集表查询的时候,未显式指定排序列的时候,默认查询结果的顺序一定是按照聚集索引顺序排序的吗...
查看>>
elasticsearch 八、重要的配置更改
查看>>
关于如何显示Jianshu图片的方案
查看>>
05_打字游戏
查看>>
10款.net 图形插件
查看>>
Python实现装饰模式的一段代码
查看>>
Atitit dsl实现(1)------异常的库模式实现 异常的ast结构
查看>>
系统管理命令
查看>>
关于JavaScript定时机制的总结
查看>>
linux命令 common 文件比较
查看>>
[km] 如何判断一个直播系统是否使用的是RTMP
查看>>
unity, ugui input field
查看>>
源码解读这半年
查看>>
MySQL连接线程kill利器之pt-kill
查看>>
JS设置cookie、读取cookie、删除cookie
查看>>
Linux列出安装过的程序
查看>>
联系E-R:学生选课系统
查看>>
053 关于hive的存储格式
查看>>