首页 > 其他分享 >cgroup技术概述

cgroup技术概述

时间:2024-09-19 16:22:18浏览次数:10  
标签:00 17 May 30 技术 概述 cgroup root

cgroup 全称是 control group,顾名思义,它是用来做“控制”的。控制什么东西呢?当然是资源的使用了。

cgroup 定义了下面的一系列子系统,每个子系统用于控制某一类资源。

  • CPU 子系统,主要限制进程的 CPU 使用率。
  • cpuacct 子系统,可以统计 cgroup 中的进程的 CPU 使用报告。
  • cpuset 子系统,可以为 cgroup 中的进程分配单独的 CPU 节点或者内存节点。
  • memory 子系统,可以限制进程的 Memory 使用量。
  • blkio 子系统,可以限制进程的块设备 IO。
  • devices 子系统,可以控制进程能够访问某些设备。
  • net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
  • freezer 子系统,可以挂起或者恢复 cgroup 中的进程。

在 Linux 上,为了操作 cgroup,有一个专门的 cgroup 文件系统,我们运行 mount 命令可以查看。

# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)

cgroup 文件系统多挂载到 /sys/fs/cgroup 下,通过上面的命令行,我们可以看到我们可以用 cgroup 控制哪些资源。

在 /sys/fs/cgroup/ 下面能看到下面的目录结构。

drwxr-xr-x 5 root root  0 May 30 17:00 blkio
lrwxrwxrwx 1 root root 11 May 30 17:00 cpu -> cpu,cpuacct
lrwxrwxrwx 1 root root 11 May 30 17:00 cpuacct -> cpu,cpuacct
drwxr-xr-x 5 root root  0 May 30 17:00 cpu,cpuacct
drwxr-xr-x 3 root root  0 May 30 17:00 cpuset
drwxr-xr-x 5 root root  0 May 30 17:00 devices
drwxr-xr-x 3 root root  0 May 30 17:00 freezer
drwxr-xr-x 3 root root  0 May 30 17:00 hugetlb
drwxr-xr-x 5 root root  0 May 30 17:00 memory
lrwxrwxrwx 1 root root 16 May 30 17:00 net_cls -> net_cls,net_prio
drwxr-xr-x 3 root root  0 May 30 17:00 net_cls,net_prio
lrwxrwxrwx 1 root root 16 May 30 17:00 net_prio -> net_cls,net_prio
drwxr-xr-x 3 root root  0 May 30 17:00 perf_event
drwxr-xr-x 5 root root  0 May 30 17:00 pids
drwxr-xr-x 5 root root  0 May 30 17:00 systemd

 cgroup 对于 Docker 资源的控制,在用户态的表现如下图所示:

cgroup技术概述_cgroup

cgroup 是一种特殊的文件系统。它的定义如下:

struct file_system_type cgroup_fs_type = {
  .name = "cgroup",
  .mount = cgroup_mount,
  .kill_sb = cgroup_kill_sb,
  .fs_flags = FS_USERNS_MOUNT,
};

内核中 cgroup 的工作机制:

cgroup技术概述_cgroup_02

第一步,系统初始化的时候,初始化 cgroup 的各个子系统的操作函数,分配各个子系统的数据结构。

第二步,mount cgroup 文件系统,创建文件系统的树形结构,以及操作函数。

第三步,写入 cgroup 文件,设置 cpu 或者 memory 的相关参数,这个时候文件系统的操作函数会调用到 cgroup 子系统的操作函数,从而将参数设置到 cgroup 子系统的数据结构中。

第四步,写入 tasks 文件,将进程交给某个 cgroup 进行管理,因为 tasks 文件也是一个 cgroup 文件,统一会调用文件系统的操作函数进而调用 cgroup 子系统的操作函数,将 cgroup 子系统的数据结构和进程关联起来。

第五步,对于 CPU 来讲,会修改 scheduled entity,放入相应的队列里面去,从而下次调度的时候就起作用了。对于内存的 cgroup 设定,只有在申请内存的时候才起作用。


标签:00,17,May,30,技术,概述,cgroup,root
From: https://blog.51cto.com/key3feng/12057649

相关文章

  • 易优eyoucms网站插入字段长度超过设定的长度,请联系技术处理。
    报错/core/library/think/db/Connection.php第466行左右插入字段长度超过设定的长度,请联系技术处理。[错误代码]SQLSTATE[22001]:Stringdata,righttruncated:1406Datatoolongforcolumn'extract_code'atrow1解决 SQLSTATE[22001]:Stringdata,righttrun......
  • 传音控股与联发科技携手共建人工智能联合实验室,加速推进端侧AI技术创新
    9月13日,传音控股与联发科技携手共建的人工智能联合实验室在深圳正式揭牌。双方将整合人工智能领域的优势技术资源,加速推进AI技术在智能终端的应用和普及,为全球用户打造更智能便捷的移动体验。传音控股高级副总裁张祺、TEXAI中心总经理史团委,联发科技计算与人工智能技术事......
  • 【IEEE出版∣中国石油大学(华东)主办 | EI核心, Scopus检索,ICFTIC在多年内一直保持着非
    第六届信息与计算机前沿技术国际学术会议(ICFTIC2024)将在中国青岛举行,会期是2024年11月8-10日,为期三天,本次会议是由中国石油大学(华东)主办。大会安排主旨报告,特邀报告,以及数个专题讨论会(形式包括口头报告,海报展示,视频报告,以及在线报告等)。 重要信息大会网站:https://ai......
  • 特斯拉主动巡航技术解析
    特斯拉的主动巡航控制技术是其自动驾驶技术套件(Autopilot)中的一项重要功能,旨在提升驾驶的舒适性和便利性。以下是对特斯拉主动巡航技术的详细解析:一、技术原理与功能1.原理概述特斯拉的主动巡航控制通过车辆前部的摄像头、雷达等传感器实时监测前方道路情况,包括同车道内的......
  • 人工智能(AI)的现状与未来:技术变革与应用前景
    人工智能(AI)的现状与未来:技术变革与应用前景1.引言**人工智能(AI)**不再只是科幻小说中的概念,它已经成为现代技术的重要组成部分,并在各个行业中得到了广泛应用。从语音助手到自动驾驶,AI正在迅速改变我们生活和工作的方式。本文将深入探讨人工智能的现状、核心技术、实际应用......
  • 全网最火的AI技术:Rag详解
    “Rag”是机器学习中的术语,通常指的是“RaggedTensors”(不规则张量)。RaggedTensors是一种特殊类型的张量,允许不同的维度中的子张量有不同的长度或形状。这在处理诸如文本、序列数据等不定长的数据时特别有用。例如,在自然语言处理任务中,不同句子长度的序列很难直接放入普通的张量......
  • 一件部署安装百度开源数字人项目Hallo!图片视频!效果炸裂!含整合包!开源免费使用阿里蚂蚁
    一件部署安装百度开源数字人项目Hallo!图片视频!效果炸裂!含整合包!开源免费使用阿里蚂蚁集团推出的EchoMimic开源项目:为唱歌和对话提供支持的AI数字人技术(附代码)。近日,AI领域迎来了一个重磅消息——百度联合复旦大学、苏黎世联邦理工学院和南京大学共同推出一个开源项目,名为"Hallo"。......
  • 终于有人总结了大模型技术!
    本文分为三个章节,深入浅出地解读大模型的技术,具体如下三个部分*1、GPT、LLaMA、ChatGLM、Falcon等大语言模型的技术细节比较*在深入研究LLaMA、ChatGLM和Falcon等大语言模型时,我们不难发现它们在技术实现上有着诸多共通之处与独特差异。例如,这些模型在tokenizer(分词器)的......
  • BeautifulSoup与lxml解析网页:技术详解与实战案例
    在Python的Web数据抓取和网页解析领域,BeautifulSoup和lxml是两个极为强大且常用的库。它们能够帮助开发者轻松地从HTML或XML文档中提取所需数据,广泛应用于爬虫开发、数据预处理、自动化测试等领域。本文将详细介绍如何使用BeautifulSoup和lxml解析网页,并通过丰富的代码和案例帮助......
  • 【大模型技术】什么时候需要训练和微调属于自己的大模型——小微企业必须要明白的问题
    “从问题出发,先有需求再有解决方案”老板和员工在思维方式上有一个很大的差别就是,作为老板他们喜欢寻找现有的解决方案,如果现有的解决方案无法满足的情况下,才会自己设计一个解决方案。而作为员工来说特别是技术人员,大都有一种技术至上的心态,比如说很多技术人员找工作会......