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编程(如下图)中调用如下 ...
随机推荐
- Akka源码分析-Cluster-ActorSystem
前面几篇博客,我们依次介绍了local和remote的一些内容,其实再分析cluster就会简单很多,后面关于cluster的源码分析,能够省略的地方,就不再贴源码而是一句话带过了,如果有不理解的地方 ...
- BZOJ 2506 分块
//By SiriusRen #include <bits/stdc++.h> using namespace std; ; ][],g[N],tmp=; struct Node{int ...
- ACM_水题你要信了(修改版)
水题你要信了 Time Limit: 2000/1000ms (Java/Others) Problem Description: 某发最近又认识了很多妹(han)子,可是妹(han)子一多不免有时会 ...
- 【LeetCode】 -- 68.Text Justification
题目大意:给定一个数组容器,里面存有很多string: 一个int maxWith.让你均匀安排每一行的字符串,能够尽可能的均匀. 解题思路:字符串+贪心.一开始想复杂了,总觉的题意描述的不是很清楚, ...
- Unicode gbk gb2312 编码问题 [转载]
原文地址: http://www.cnblogs.com/csn0721/archive/2013/01/24/2875613.html HTML5 UTF-8 中文乱码 <!DOCTYPE ...
- 学习c语言的感想
其实个人认为无论学习什么语言,最重要的是掌握习编程思想,然而C语言一种学习编程思想的基础语言.所以,C语言的重要性不言而喻. 一.课本 无论用的是什么书,要学好C语言,把书上的每一个例题.习题的代码读 ...
- Linux学习(一)--基本概念
一.Linux概述 Linux是一款全球性的免费的开源的操作系统平台,其特点是实现了多任务多用户处理,主要是依赖内核kernel shell,且占用资源少 (最小配置只要4Mb内存就能运行). 百度百 ...
- 【译】x86程序员手册02 - 基本的程序模式
Chapter 2 -- Basic Programming Model: 基本的程序模式 Introduces the models of memory organization. Defines ...
- Centos6.6 安装基于系统认证的vsftp服务
一.介绍 vsftp是一款文件服务器软件,在文件共享,代码更新,文件备份中也是经常用到,以下是基本安装环境: 1)CentOS6.6 2)vsftpd-2.2.2 二.安装 $ yum install ...
- 关联API
在类或者函数定义之前加上关联代码 API_XXX