本文参考以下文章:
58 | cgroup技术:内部创业公司应该独立核算成本
特此致谢!
一、cgroup简介
1. cgroup是什么
cgroup(Control Group)是Linux内核提供的一种机制,用于对进程或进程组进行资源限制、优先级控制、账户计费等操作。它可以将一组进程组织在一起,并为这组进程分配资源,以便更好地管理和控制系统资源的使用。
cgroup可以对CPU、内存、磁盘IO、网络等资源进行限制和控制。通过将进程分组并将资源限制应用于这些组,可以实现对系统资源的精细化管理。例如,可以限制某个进程组的CPU使用率,或者限制某个进程组的内存使用量。
cgroup的使用非常灵活,可以通过文件系统的方式进行配置和管理。在Linux系统中,cgroup通常被挂载在/sys/fs/cgroup目录下,通过在该目录下创建相应的文件和目录来配置和管理cgroup。
2. cgroup的主要功能
Cgroup的主要功能包括:
(1)资源限制
可以为每个cgroup分配特定的资源限制,如CPU使用时间、内存使用量等,以避免某个进程或进程组占用过多资源导致系统崩溃或变慢。
(2)优先级管理
可以为不同的cgroup设置不同的优先级,确保重要的进程或进程组能够获得更多的资源。
(3)资源统计
可以实时监视和记录每个cgroup使用的资源量,以便进行性能分析和故障排查。
(4)进程控制
可以对cgroup中的进程进行控制,如暂停、恢复、终止等操作。
3. cgroup的主要特点
cgroup的主要特点包括:
(1)层次结构
cgroup可以以层次结构的方式组织,形成一个树状结构,方便管理和控制。
(2)细粒度控制
cgroup可以对进程或进程组进行细粒度的资源限制和控制,满足不同应用场景的需求。
(3)动态调整
可以动态地调整cgroup的配置和资源限制,以适应系统负载的变化。
(4)账户计费
可以通过cgroup对资源的使用情况进行统计和计费。
二、cgroup命令行工具
cgroup命令行工具是用于管理Linux Control Groups(cgroups)的工具集合。cgroups是Linux内核提供的一种资源管理机制,可以对进程组进行资源限制、优先级控制等操作。cgroup命令行工具提供了一系列命令,可以用于创建、删除、查看和修改cgroup。以下是一些常用的cgroup命令行工具及其功能:
1. cgcreate
用于创建一个新的cgroup。
示例:cgcreate -g cpu:/mygroup
2. cgdelete
用于删除一个已存在的cgroup。
示例:cgdelete -g cpu:/mygroup
3. cgexec
用于在指定的cgroup中执行命令。
示例:cgexec -g cpu:/mygroup command
4. cgclassify
用于将一个或多个进程加入到指定的cgroup中。
示例:cgclassify -g cpu:/mygroup pid
5. cgset
用于设置cgroup的参数,如资源限制、优先级等。
示例:cgset -r cpu.cfs_quota_us=50000 cpu:/mygroup
6. cgget
用于获取cgroup的参数信息。
示例:cgget -r cpu.cfs_quota_us cpu:/mygroup
7. cgtop
以top命令的形式显示当前系统中各个cgroup的资源使用情况。
8. cgconfigparser
用于解析和加载cgroup配置文件。
以上这些命令只是cgroup命令行工具中的一部分,还有其它更多的命令可以用于管理和监视cgroup。可以通过运行man cgcreate
等命令来查看详细的帮助文档。这些命令也可以通过在终端中输入命令名称加上--help
参数来获取更详细的帮助信息,例如cgcreate --help
。