返回顶部
首页 > 资讯 > 操作系统 >Linux中Cgroup是什么
  • 958
分享到

Linux中Cgroup是什么

2023-06-27 12:06:57 958人浏览 独家记忆
摘要

这篇文章给大家分享的是有关linux中Cgroup是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中

这篇文章给大家分享的是有关linux中Cgroup是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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

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

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

Linux中Cgroup是什么

cgroups子系统

  1. cpu 子系统,主要限制进程的 cpu 使用率。
  2. cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
  3. cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。
  4. memory 子系统,可以限制进程的 memory 使用量。
  5. blkio 子系统,可以限制进程的块设备 io。
  6. devices 子系统,可以控制进程能够访问某些设备。
  7. net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
  8. net_prio — 这个子系统用来设计网络流量的优先级
  9. freezer 子系统,可以挂起或者恢复 cgroups 中的进程。
  10. ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace
  11. hugetlb — 这个子系统主要针对于HugeTLB系统进行限制,这是一个大页文件系统。

cgroups 层级结构(Hierarchy)

内核使用 cgroup 结构体来表示一个 control group 对某一个或者某几个 cgroups 子系统的资源限制。cgroup 结构体可以组织成一颗树的形式,每一棵cgroup 结构体组成的树称之为一个 cgroups 层级结构。

cgroups层级结构可以 attach 一个或者几个 cgroups 子系统,当前层级结构可以对其 attach 的 cgroups 子系统进行资源的限制。每一个 cgroups 子系统只能被 attach 到一个 cpu 层级结构中。

好好理解下这个图即可:

Linux中Cgroup是什么

创建了 cgroups 层级结构中的节点(cgroup 结构体)之后,可以把进程加入到某一个节点的控制任务列表中,一个节点的控制列表中的所有进程都会受到当前节点的资源限制。同时某一个进程也可以被加入到不同的 cgroups 层级结构的节点中,因为不同的 cgroups 层级结构可以负责不同的系统资源。所以说进程和 cgroup 结构体是一个多对多的关系。

Linux中Cgroup是什么

上面这个图从整体结构上描述了进程与 cgroups 之间的关系。最下面的P代表一个进程。每一个进程的描述符中有一个指针指向了一个辅助数据结构CSS_set(cgroups subsystem set)。 指向某一个css_set的进程会被加入到当前css_set的进程链表中。一个进程只能隶属于一个css_set,一个css_set可以包含多个进程,隶属于同一css_set的进程受到同一个css_set所关联的资源限制。

上图中的”M×N Linkage”说明的是css_set通过辅助数据结构可以与 cgroups 节点进行多对多的关联。但是 cgroups 的实现不允许css_set同时关联同一个cgroups层级结构下多个节点。 这是因为 cgroups 对同一种资源不允许有多个限制配置。

一个css_set关联多个 cgroups 层级结构的节点时,表明需要对当前css_set下的进程进行多种资源的控制。而一个 cgroups 节点关联多个css_set时,表明多个css_set下的进程列表受到同一份资源的相同限制。

实践操作

查看cgroup挂载点(Centos7.5):

 1 [root@k8s-master ~]# mount -t cgroup 2 cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) 3 cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) 4 cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) 5 cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) 6 cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) 7 cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) 8 cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) 9 cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)10 cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)11 cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)12 cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)

创建隔离组

[root@k8s-master ~]# cd /sys/fs/cgroup/cpu

[root@k8s-master cpu]# mkdir cpu_test

目录创建完成会自动生成以下文件 [root@k8s-master cpu]# ls cpu_test/ Linux中Cgroup是什么

写个死循环测试程序增加cpu使用率

 1 int main(void) 2 { 3     int i = 0; 4     for(;;) i++; 5     return 0; 6 }

启动程序后cpu使用100%

Linux中Cgroup是什么

默认-1不限制,现在改成20000,可以理解使用率限制在20%

[root@k8s-master cpu]# echo 20000 > /sys/fs/cgroup/cpu/cpu_test/cpu.cfs_quota_us

找到进程号增加到cpu tasks里面,在看top cpu使用率很快就下来

[root@k8s-master ~]# echo 23732 >> /sys/fs/cgroup/cpu/cpu_test/tasks

Linux中Cgroup是什么

 

其它资源限制和cpu基本一致就先写这么多了

感谢各位的阅读!关于“Linux中Cgroup是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Linux中Cgroup是什么

本文链接: https://lsjlt.com/news/310685.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux中Cgroup是什么
    这篇文章给大家分享的是有关Linux中Cgroup是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中...
    99+
    2023-06-27
  • Docker中的cgroup怎么用
    小编给大家分享一下Docker中的cgroup怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是cgroupLinux CGroup(Linux Cont...
    99+
    2023-06-21
  • linux中bash是什么
    这篇文章将为大家详细讲解有关linux中bash是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。只要能够操作应用程序的接口都能称为shell。狭义的shell指的是命令行方面的软件,包括bash。广义...
    99+
    2023-06-13
  • linux中tty是什么
    这篇文章主要介绍“linux中tty是什么”,在日常操作中,相信很多人在linux中tty是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中tty是什么”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-22
  • linux中DAISY是什么
    这篇文章将为大家详细讲解有关linux中DAISY是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DAISY 是什么DAISY 是数字化无障碍信息系统Digital Accessible Inform...
    99+
    2023-06-16
  • linux中Joomla!是什么
    这篇文章将为大家详细讲解有关linux中Joomla!是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Joomla!是一套在国外相当知名的内容管理系统(Content Management Syste...
    99+
    2023-06-17
  • Linux中GRUB是什么
    这篇文章将为大家详细讲解有关Linux中GRUB是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。GRUB(Grand Unified Bootloader)是GNU项目提供的引导加载程序。引导程序非常...
    99+
    2023-06-27
  • linux中tmp是什么
    本篇内容主要讲解“linux中tmp是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中tmp是什么”吧!在linux中,tmp是临时文件;tmp是temporary的缩写,tmp目...
    99+
    2023-07-02
  • linux中platform是什么
    这篇文章主要讲解了“linux中platform是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中platform是什么”吧!在linux中,platform是一个虚拟总线,与...
    99+
    2023-07-02
  • linux中yum是什么
    这篇文章主要介绍“linux中yum是什么”,在日常操作中,相信很多人在linux中yum是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中yum是什么”的疑惑...
    99+
    2023-02-13
    linux yum
  • linux中shell script是什么
    这篇文章主要为大家展示了“linux中shell script是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中shell script是什么”这篇文章吧。其实,shell scr...
    99+
    2023-06-13
  • Linux中的&是什么
    本篇内容主要讲解“Linux中的&是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的&是什么”吧!实际上,命令的用法并不难,例如  mkdir、touc...
    99+
    2023-06-16
  • linux中eDEX-UI是什么
    这篇文章主要介绍了linux中eDEX-UI是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。eDEX-UI: 一个很酷的终端仿真器eDEX-UI 是一款开源的跨...
    99+
    2023-06-15
  • Linux中的semaphore是什么
    这篇文章给大家分享的是有关Linux中的semaphore是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以...
    99+
    2023-06-28
  • linux中的rpm是什么
    本篇内容介绍了“linux中的rpm是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,rpm全称“Red Hat Pack...
    99+
    2023-06-25
  • linux中的cvs是什么
    这篇文章主要介绍“linux中的cvs是什么”,在日常操作中,相信很多人在linux中的cvs是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中的cvs是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • linux中的makefile是什么
    makefile是一个文件,用于指导编译器执行源代码文件的编译和链接过程。它是GNU make工具的配置文件,用来描述源代码文件之间...
    99+
    2023-08-22
    Linux
  • linux中patch命令是什么
    这篇文章给大家分享的是有关linux中patch命令是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。patch命令是什么?如何使用?答: 顾名思义,patch命令就是用来将修...
    99+
    2024-04-02
  • linux中Blocks是什么意思
    这篇文章主要介绍了linux中Blocks是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux中Blocks是什么意思什么是Blocks Disk /dev/h...
    99+
    2023-06-13
  • Linux中uGet是什么意思
    这篇文章主要为大家展示了“Linux中uGet是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中uGet是什么意思”这篇文章吧。功能强大下载管理器在Linux平台并不常见,不过...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作