cgroup--cgroup 测试

 cgroups全称control groups,在RHEL6的2.6.32内核中已经包括了cgroup的patch。这里强烈建议安装RHEL6(CentOS6)来使用cgroups,如果没有的话,

  只能升级内核了 ( > 2.6.26版本)

  安装cgroups

  apt-get install cgroup-bin

  改变配置:vi /etc/cgconfig.conf

  将最后的mount 改为如下形式:


mount {

cpuset = /sys/fs/cgroup/cpuset;

net_cls = /sys/fs/cgroup/net_cls;

blkio = /sys/fs/cgroup/blkio;

perf_event = /sys/fs/cgroup/perf_event;

cpu = /sys/fs//cgroup/cpu;

cpuacct = /sys/fs/cgroup/cpuacct;

devices = /sys/fs/cgroup/devices;

memory = /sys/fs/cgroup/memory;

freezer = /sys/fs/cgroup/freezer;

}

  测试 cpu 子系统

  cpu.shares:假设cgroup A的 tasks 的 cpu.shares 值为1,cgroup B的tasks的cpu.shares值为2,则cgroup B的进程占用的cpu时间是cgroup A上进程的2倍。

  cpu.rt_runtime_us

  cpu.rt_period_us:  这两个值建议不要设,让OS去调度占用的CPU时间的绝对值。

  进入 cpu 目录:

  sina@ubuntu:~$ cd /sys/fs/cgroup/cpu

  创建目录:

  # mkdir   tinker

  # mkdir   tailor

  下面通过taskset -c 3 ,启动两个虚拟机  并指定其 cpu affinity为cpu 3,启动2个虚拟机:

  # taskset -c 3 ./for-test.sh

  并在每个虚拟机中 满负荷运行 计算密集型程序。

  观察两台虚拟机的PID,及cpu使用率:


root@ubuntu:~# ps -C qemu-system-i386 -opid,%cpu,psr,args

PID %CPU PSR COMMAND

3237 50.1   3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386

3306 49.8   3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386

  此时把两个qemu 任务的 pid分别 echo 进 tasks 文件中。并且修改  cpu/tinker  的 cpu.shares 为2048, cpu/tailor  的 cpu.shares 为512:


root@ubuntu:~# echo 3237 > /sys/fs/cgroup/cpu/tinker/tasks

root@ubuntu:~# echo 3306 > /sys/fs/cgroup/cpu/tailor/tasks

root@ubuntu:~# echo 2048 > /sys/fs/cgroup/cpu/tinker/cpu.shares

root@ubuntu:~# echo 512 > /sys/fs/cgroup/cpu/tailor/cpu.shares

  此时观察两个任务的 cpu 使用率:


root@ubuntu:~# ps -C qemu-system-i386 -opid,%cpu,psr,args

PID %CPU PSR COMMAND

3237 80   3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386

3306 20   3 /home/sina/Downloads/qemu-kvm-1.1.0/i386-softmmu/qemu-system-i386

  设置了cpu.shares之后CPU利用率不会立刻就变为shares指定的那样,需要等待一段时间,基本上是个曲线的变化过程,之后就按照设置的数值来分配cpu使用率。

  (须待以后在测试!!)   

最新内容请见作者的GitHub页:http://qaseven.github.io/

  

时间: 2024-09-30 17:33:17

cgroup--cgroup 测试的相关文章

执行lxc-start时lxc-start: cgroup is not mounted问题

lxc-start: cgroup is not mounted 在执行lxc-start时出现上述问题是因为cgroup在宿主机上没有挂载. fix: vim /etc/fstab none        /sys/fs/cgroup        cgroup        defaults    0    0 重启机器即可 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/Linux/

下一代Cgroup——unified hierarchy

Cgroup的管理问题: 一般来说,Cgroup的设计在一般情况下还是没什么问题的,除了操作上的用户体验不是很好,但基本满足我们的一般需求了. 只是有个叫Tejun Heo的同学非常不爽,他在Linux社区里对cgroup吐了一把槽,还引发了内核组的各种讨论. 对于Tejun Heo同学来说,cgroup设计的相当糟糕.他给出了些例子: 大意就是说,如果有多种层级关系,也就是说有多种对进程的分类方式,比如,我们可以按用户来分,分成Professor和Student,同时,也有按应用类似来分的,比

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #7 Cgroup、Namespace、Linux容器

HACK #7 Cgroup.Namespace.Linux容器 本节将介绍Cgroup与Namespace以及通过这两个功能实现的容器功能. Cgroup Cgroup(control group)是将任意进程进行分组化管理的Linux内核功能.Cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的.这些具体的资源管理功能称为Cgroup子系统或控制器. Cgroup子系统有控制内存的Memory控制器.控制进程调度的

Docker应用容器基础技术:Linux CGroup 学习教程

虽然你通过Namespace把我Jail到一个特定的环境中去了,但是我在其中的进程使用用CPU.内存.磁盘等这些计算资源其实还是可以随心所欲的.所以,我们希望对进程进行资源利用上的限制或控制.这就是Linux CGroup出来了的原因. Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU.内存.磁盘输入输出等).这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Roh

CGroup 介绍、应用实例及原理描述

CGroup 介绍 CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制.记录.隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制.2007 年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者是 Google 的 Paul Menage.CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段. CGroup 功能及组

cgroup限制mongodb进程内存大小_MongoDB

以限制mongodb的内存大小为例. mkdir /cgroup/memory/test/ echo 50M > /cgroup/memory/test/memory.limit_in_bytes echo 50M > /cgroup/memory/test/memory.memsw.limit_in_bytes cgexec -g memory:test mongod -port 27017 --bind_ip 127.0.0.1 --dbpath /var/lib/mongo 通过cgro

cgroup测试存储设备IOPS分配

1 使用:创建树并且attach子系统 首先要创建文件系统的挂载点作为树的根 mkdir /cgroup/name mkdir /cgroup/cpu_and_mem Mount这个挂载点到一个或者多个子系统  mount -t cgroup -o subsystems name /cgroup/name  mount -t cgroup -o cpu,cpuset,memory cpu_and_mem /cgroup/cpu_and_mem 这个时候查看子系统  ~]# lssubsys -a

《自己动手写Docker》书摘之五: 增加容器资源限制

增加容器资源限制 上一节中,我们已经可以通过命令行mydocker run -ti的方式创建并启动容器,这一节我们将通过Cgroup对容器的资源进行控制. 这一节中我们将实现通过mydocker run -ti -m 100m -cpuset 1 -cpushare 512 /bin/sh的方式控制容器容器的内存和CPU配置. 定义Cgroups的数据结构 上一章中我们介绍了Cgroups包含的三个概念:  cgroup hierarchy中的节点,用于管理进程和subsystem的控制的关系.

PostgreSQL 主机性能测试方法 - 单机多实例

背景 业界有一些通用的数据库性能测试模型,可以用来测试硬件在不同测试模型下的性能表现. 参考http://www.tpc.org/https://github.com/oltpbenchmark/oltpbenchhttp://oltpbenchmark.com/ 本文主要以PostgreSQL为例,向大家介绍一下,如何使用PostgreSQL来测试硬件的性能. PostgreSQL 的功能非常的强大,所以可以适用于几乎所有的测试模型,同时用户还可以根据自己的应用场景设计测试模型. 一.机器部署

在 CentOS 6.4(64位) 安装 docker.io

Docker.io 是轻量级的"容器引擎+映像仓库",在LXC(linux轻量级容器)的基础上构建,可以运行任何应用程序. docker.io的核心层由以下几个部分组成: 1.可执行程序,"/usr/bin/docker" 2.docker.io网站上有一系列创建好的操作系统和应用程序映像 3.AUFS(另一个统一文件系统)来实现文件系统的快照,文件变化,控制只读或读写的需求. 4.LXC(Linux轻量级容器) 5.Cgroups(各种资源和命名空间的管理) 在本