作为LXC轻量级虚拟话的基础,Cgroup在很多领域可以取代虚拟化技术分割资源。此服务的软件包是libcgroup,有了这个,你就可以分配资源,例如:CPU time,系统内存, 网络带宽等。这个是被cgconfig服务所控制的。如果此服务没有启动,在根目录下的cgroup文件夹里就不会存在内容。
要使用Cgruop,首先得需要挂载这个虚拟文件系统:
mount -t cgroup -o debug cgroup /cgroup
cgroup类似与进程,他们是分等级的,各个属性都是从父进程哪里继承过来。cgroup包含了多个孤立的子系统,每一个子系统代表一个单一的资源。
blkio 这个子系统设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。
cpu 这个子系统使用调度程序为cgroup任务提供cpu的访问。
cpuacct 产生cgroup任务的cpu资源报告。
cpuset 如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。
devices 允许或拒绝cgroup任务对设备的访问。
freezer 暂停和恢复cgroup任务。
memory 设置每个cgroup的内存限制以及产生内存资源报告。
net_cls 标记每个网络包以供cgroup方便使用。
ns 名称空间子系统。
用法:对于CPU的设置,只需要修改 /cgroup/cpu/cpu.shares 参数,因为这个代表的是CPU的权重.
对于内存的设置,得修改:memory.limit_in_bytes。