1 简介
Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。然后,其它开始了他的发展。
Linux CGroupCgroup 可为系统中所运行任务(进程)的用户定义组群分配资源—比如CPU 时间、系统内存、网络带宽或者这些资源的组合。可以监控配置的 cgroup,拒绝cgroup 访问某些资源,甚至在运行的系统中动态配置cgroup。
1.1 主要功能
(1)限制资源使用,比如内存使用上限以及文件系统的缓存限制。
(2)优先级控制,CPU利用和磁盘IO吞吐。
(3)一些审计或一些统计,主要目的是为了计费。
(4)挂起进程,恢复执行进程。
1.2 cgroups子系统
Cgroups(Control Groups)基于进程的限制,而非用户,因此对于超户运行的进程也是一样;
cgroups子系统:
- blkio 限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb。
- cpu 限制使用cpu比例
- cpuacct 产生cgroup任务的cpu资源报告。
- cpuset 多核心的cpu时为cgroup任务分配单独的cpu和内存 绑定进程和cpu减少上下文切换 内存访问情况 就近访问内存
- devices 允许或拒绝对设备的访问。
- freezer 暂停和恢复cgroup任务。
- memory 设置内存限制以及产生内存资源报告。
- net_cls 可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
- net_prio — 这个子系统用来设计网络流量的优先级。
10.ns 可以使不同 cgroups 下面的进程使用不同的 namespace。
11.hugetlb — 这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。

2 绑定进程到指定cpu核数
#yum安装
yum install libcgroup libcgroup-tools numactl -y
#获取CPU线程数
grep 'processor' /proc/cpuinfo | sort -u | wc -l
#获取CPU NUMA内存节点信息
numactl --hardware
或
lscpu | grep NUMA

#创建设置small组策略 4核
cgcreate -g cpuset:small
cgset -r
LinuxCGroup:资源限制与管理系统

LinuxCGroup是一种内核功能,用于限制和控制进程组的资源,包括CPU时间、内存使用、磁盘I/O等。主要功能包括资源限制、优先级控制、审计和挂起进程。文章介绍了如何绑定进程到特定CPU核,限制进程CPU使用率,以及如何限制内存使用量和磁盘读取速度,提供了具体的操作示例。
最低0.47元/天 解锁文章
246





