zoukankan      html  css  js  c++  java
  • 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,你可以通过

    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
  • 相关阅读:
    vue中插槽的理解
    父子组件的通信
    vue3.0怎么禁用eslint校验代码和修改端口号
    三大排序
    让机器人实现自主行走 没你想的那么难
    国内外知名激光雷达公司盘点
    激光雷达寿命短,思岚通过什么技术来解决?
    浅谈SLAM的回环检测技术
    除了ROS, 机器人定位导航还有其他方案吗?
    思岚科技即将登陆“2018日本机器人周”精彩抢先看
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5729937.html
Copyright © 2011-2022 走看看