Linux内核cgroup使用介绍

cgroup基本概念

cgroup是什么

cgroups本质上是对任意进程进行分组化管理的Linux内核模块功能。

cgroup解决的问题

Linux系统每个进程都可以自由竞争系统资源,部分项目中,需要保障一些重要进程的资源开销,如内存,cpu等,需要提前规划好。因此linux引入了cgroups来控制进程资源,让进程更可控。

cgroup功能

Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。
Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐。
Accounting: 一些审计或一些统计,主要目的是为了计费。
Control: 挂起进程,恢复执行进程。
使​​​用​​​ cgroup,系​​​统​​​管​​​理​​​员​​​可​​​更​​​具​​​体​​​地​​​控​​​制​​​对​​​系​​​统​​​资​​​源​​​的​​​分​​​配​​​、​​​优​​​先​​​顺​​​序​​​、​​​拒​​​绝​​​、​​​管​​​理​​​和​​​监​​​控​​​。​​​可​​​更​​​好​​​地​​​根​​​据​​​任​​​务​​​和​​​用​​​户​​​分​​​配​​​硬​​​件​​​资​​​源​​​,提​​​高​​​总​​​体​​​效​​​率​​​。

cgroup适用的场景

资源预分配,保证重要进程的资源
1、隔离一个进程集合(比如:nginx的所有进程),并限制他们所消费的资源,比如绑定CPU的核。
2、为这组进程分配其足够使用的内存,保障资源
3、为这组进程分配相应的网络带宽和磁盘存储限制
4、限制访问某些设备(通过设置设备的白名单)

cgroup能操控的资源

cgroup结构

cgourp构成
从上到下,分别是hiereachy下有很多cgroup节点,cgroup节点有自己的属性,属性为task和对应的资源组,资源组就是subsystem

cgroup支持的subsystem

目前Linux支持下面12种subsystem
1、cpu :用来限制cgroup的CPU使用率。
2、cpuacct :统计cgroup的CPU的使用率。
3、cpuset:绑定cgroup到指定CPUs和NUMA节点。
4、memory:统计和限制cgroup的内存的使用率,包括process memory, kernel memory, 和swap。
5、devices:限制cgroup创建(mknod)和访问设备的权限。
6、freezer:suspend和restore一个cgroup中的所有进程。
7、net_cls :将一个cgroup中进程创建的所有网络包加上一个classid标记,用于tc和iptables。 只对发出去的网络包生效,对 收到的网络包不起作用。
8、blkio:限制cgroup访问块设备的IO速度。
9、perf_event :对cgroup进行性能监控
10、net_prio:针对每个网络接口设置cgroup的访问优先级。
11、hugetlb :限制cgroup的huge pages的使用量。
12、pids:限制一个cgroup及其子孙cgroup中的总进程数。

可以通过下面的命令查看:
cat /proc/cgroups,结果如下
cgroup支持的资源子系统
不同subsystem的工作方式可能差别较大,有些需要做资源统计,有些需要做资源控制,有些即不统计也不控制,有些subsystem严重依赖继承关系,有些subsystem完全用不到继承关系,而有些对继承关系没有严格要求,对系统性能的影响也不一样,在使用中,根据场景需求,再分析具体要做些什么

对应的资源开关在内核编译配置文件中:
在这里插入图片描述

cgroup基本操作

cgroup文件系统挂载

cgroup相关的所有操作都是基于内核中的cgroup virtual filesystem,使用cgroup很简单,挂载这个文件系统就可以了。一般情况下都是挂载到/sys/fs/cgroup目录下,当然挂载到其它任何目录都没关系。
挂载 cgroup文件系统操作如下:
1、先创建一个空目录,如下,在home目录下创建cgroup子目录
在这里插入图片描述
2、执行挂载命令
centos 7 已经默认挂载在/sys/fs/cgroup中了
在这里插入图片描述

cgroup内容查看

cgroup下面是具体的分组,每个分组的具体内容,进去里面看就可以了
在这里插入图片描述

查看进程的cgroup

在这里插入图片描述
在这里插入图片描述
参考:https://segmentfault.com/a/1190000006917884?utm_source=sf-similar-article

cgroup实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

812503533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值