百度私有PaaS云就是使用轻量的cgoups做的应用之间的隔离,以下是关于百度架构师许立强,对于虚拟机VM,应用沙盒,cgroups技术选型的理解

本文用脚本运行示例进程,来验证Cgroups关于cpu、内存、io这三部分的隔离效果。
测试机器:CentOS release 6.4 (Final)
启动Cgroups
在/cgroup,有如下文件夹,默认是多挂载点的形式,即各个子系统的配置在不同的子文件夹下
跑一个耗cpu的脚本
top可以看到这个脚本基本占了100%的cpu资源
下面用cgroups控制这个进程的cpu资源
然后top的实时统计数据如下,cpu占用率将近50%,看来cgroups关于cpu的控制起了效果
cpu控制组foo下面还有其他的控制,还可以做更多其他的关于cpu的控制
跑一个耗内存的脚本,内存不断增长
top看内存占用稳步上升
下面用cgroups控制这个进程的内存资源
发现之前的脚本被kill掉
因为这是强硬的限制内存,当进程试图占用的内存超过了cgroups的限制,会触发out of memory,导致进程被kill掉。
实际情况中对进程的内存使用会有一个预估,然后会给这个进程的限制超配50%比如,除非发生内存泄露等异常情况,才会因为cgroups的限制被kill掉。
也可以通过配置关掉cgroups oom kill进程,通过memory.oom_control来实现(oom_kill_disable 1),但是尽管进程不会被直接杀死,但进程也进入了休眠状态,无法继续执行,仍让无法服务。
关于内存的控制,还有以下配置文件,关于虚拟内存的控制,以及权值比重式的内存控制等
<code>[root@localhost /]</code><code># ls /cgroup/memory/foo/</code>
<code>cgroup.event_control memory.force_empty memory.memsw.failcnt </code>
<code>memory.memsw.usage_in_bytes memory.soft_limit_in_bytes memory.usage_in_bytes tasks</code>
<code>cgroup.procs memory.limit_in_bytes memory.memsw.limit_in_bytes </code>
<code>memory.move_charge_at_immigrate memory.stat memory.use_hierarchy</code>
<code>memory.failcnt memory.max_usage_in_bytes memory.memsw.max_usage_in_bytes </code>
<code>memory.oom_control memory.swappiness notify_on_release</code>
跑一个耗io的脚本
通过iotop看io占用情况,磁盘速度到了284M/s
下面用cgroups控制这个进程的io资源
再通过iotop看,确实将读速度降到了1M/s
对于io还有很多其他可以控制层面和方式,如下
<code>[root@localhost ~]</code><code># ls /cgroup/blkio/foo/</code>
<code>blkio.io_merged blkio.io_serviced blkio.reset_stats </code>
<code>blkio.throttle.io_serviced blkio.throttle.write_bps_device blkio.weight cgroup.procs</code>
<code>blkio.io_queued blkio.io_service_time blkio.sectors </code>
<code>blkio.throttle.read_bps_device blkio.throttle.write_iops_device blkio.weight_device notify_on_release</code>
<code>blkio.io_service_bytes blkio.io_wait_time blkio.throttle.io_service_bytes </code>
<code>blkio.throttle.read_iops_device blkio.</code><code>time</code> <code>cgroup.event_control tasks</code>
本文转自 326647452 51CTO博客,原文链接:http://blog.51cto.com/svsky/2082896,如需转载请自行联系原作者