Linux的Cgroup

简介:

为什么要有cgroup

Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。

Cgroup是将任意进程进行分组化管理的Linux内核功能。cgroup本身提供将进程进行分组化管理的功能和接口的基础结构。

而后的Android操作系统也就凭借着这个技术,为每个应用程序分配不同的cgroup,将每个程序进行隔离,达到了一个应用程序不会影响其他应用程序环境的目的。

概念

task:

一个进程

control group:

控制族群,按照某种标准划分的进程组

hierarchy:

层级,control group可以形成树形的结构,有父节点,子节点,每个节点都是一个control group,子节点继承父节点的特定属性。

subsystem:

子系统。

子系统就是资源控制器,每种子系统就是一个资源的分配器,比如cpu子系统是控制cpu时间分配的。

可以使用lssubsys -al来列出系统支持多少种子系统,和使用ls /sys/fs/cgroup/ (ubuntu)来显示已经挂载的子系统:

Image(6)

可以看到这里的几个子系统,比如cpu是控制cpu时间片的,memory是控制内存使用的。

如何安装cgroup

安装cgroup:

apt-get install cgroup-bin

如何为cgroup分配限制的资源

首先明白下,是先挂载子系统,然后才有control group的。意思就是比如想限制某些进程的资源,那么,我会先挂载memory子系统,然后在memory子系统中创建一个cgroup节点,在这个节点中,将需要控制的进程id写入,并且将控制的属性写入。

拿memory子系统为例:

通过查看cgroup的配置文件:

cat /etc/cgconfig.conf

Image(7)

看到memory子系统是挂载在目录/sys/fs/cgroup/memory下

进入这个目录

创建一个文件夹,就创建了一个control group了

mkdir test

发现test目录下自动创建了许多文件:

Image(8)

这些文件的含义如下:

Image(9)

于是,限制内存使用我们就可以设置memory.limit_in_bytes

Image(10)

将一个进程加入到这个test中

echo $$ > tasks

这样就将当前这个终端进程加入到了内存限制的cgroup中了。

将这个cgroup删除只要删除目录就行了

rmdir test




本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3298582.html,如需转载请自行联系原作者

相关文章
|
3月前
|
Linux 调度 Docker
Linux中的cgroup技术
【8月更文挑战第2天】cgroup (control group) 是 Linux 内核提供的资源管理机制,用于控制进程资源使用。它包含多个子系统,如 CPU、cpuacct、cpuset、memory、blkio、devices、net_cls 和 freezer,分别用于限制 CPU 使用率、统计 CPU 使用、分配 CPU 或内存节点、限制内存使用、限制块设备 I/O、控制设备访问、标记网络数据包和挂起或恢复进程。
|
4月前
|
监控 安全 Linux
systemd-cgls:Linux中的Cgroup层级结构查看利器
`systemd-cgls`是Linux工具,用于查看Cgroup层级结构,协助管理员管理资源。它以树形结构显示cgroup及其资源使用,用于监控、性能调优和安全隔离。通过`--no-page`, `--all`, `--full`等参数可定制输出。结合`systemd-cgtop`等工具,定期监控和配置资源限制,实现系统优化。
|
Shell Linux API
关于Linux中如何使用 systemd-run创建临时Cgroup来限制ad-hoc的资源消耗
分享一些临时命令资源限制的笔记 博文内容涉及: systemd-run 限制 ad-hoc 资源消耗基本原理 前后台 ad-hoc 资源限制 demo 理解不足小伙伴帮忙指正
290 0
|
Linux 调度 数据中心
Linux cgroup资源隔离各个击破之 - io隔离
Linux Cgroup blkio子系统的用法. blkio子系统支持两种IO隔离策略 .1. cfq io调度器,支持按权重分配IO处理的时间片,从而达到IO调度和限制的目的,权重取值范围100-1000。通过以下两个文件进行配置。 blkio.weight
11252 0
|
存储 自然语言处理 监控
关于Linux中控制群组(cgroup)的一些笔记
不加思考地滥读或无休止地读书,所读过的东西无法刻骨铭心,其大部分终将消失殆尽。——叔本华
1128 0
关于Linux中控制群组(cgroup)的一些笔记
|
调度 数据中心
Linux cgroup资源隔离各个击破之 - cpu隔离1
Linux cgroup 有两个子系统支持CPU隔离。一个是cpu子系统,另一个是cpuset子系统。 cpu子系统包括两种CPU资源隔离方法 .1. 完全公平调度 Completely Fair Scheduler (CFS) .2. 实时调度 Real-Time scheduler (
16942 0
|
Linux
【翻译】Linux 内核僵尸 cgroup 的清理
翻译自原文:https://lwn.net/Articles/787614/ Cgroup是linux内核中一种有效的资源管理机制,但是当cgroup本身成为一种资源问题时又会发生什么呢?在2019年的LSMM大会上,Roman Gushchin描述了一些他遇到的删除的cgroup会继续留在系统中的问题。其中有些已经被修复,但问题并没有被真正解决。 Cgroup是通过cgroup/cg
1287 0