帮我找一些cgroup资料我学习下
ChatGPT 说: 我来帮你找一些关于cgroup的学习资料。让我先搜索一下最新的cgroup相关信息。
🔍 cgroup linux 教程 学习资料
🔗 Linux资源管理之cgroups简介 🔗 Linux Cgroup快速入门:基本概 🔗 cgroup使用举例和linux内核源码 🔗 [详解Cgroup V2 | Zorro’](https://zorrozou.github.io/docs/详解Cgroup V2.html) 🔗 [译] Control Group v2 🔗 Linux 教程_w3cschool 🔗 Chapter 3. Using lib 🔗 第 24 章 | 管理、监控和更新内核 🔗 第 3 章 使用 libcgroup 工 🔗 第 1 章 控制群组简介 | Red H
让我再搜索一些更全面的cgroup学习资源:
🔍 cgroup v2 tutorial documentation examples
🔗 Control Group v2 — T 🔗 Chapter 24. Using cg 🔗 cgroup-v2.txt 🔗 linux/Documentation/ 🔗 About cgroup v2 | Ku 🔗 A journey to underst 🔗 Practicing cgroup v2 🔗 cgroups(7) - Linux m 🔗 Chapter 26. Configur 🔗 Run Control Group Ve
基于搜索到的资料,我为你整理了一些优质的cgroup学习资源:
cgroup 学习资料推荐
- 官方文档和权威资料 Linux内核官方文档:
Linux内核官方的cgroup v2文档,这是最权威的技术文档
Linux manual page (man7.org) 提供了详细的cgroups手册页
Red Hat官方文档:
Red Hat Enterprise Linux 文档包含了完整的cgroup使用指南和实践案例
- 中文学习资料 技术博客和教程:
美团技术团队的cgroups简介:深入介绍了cgroups的内部实现机制,包括VFS接口等技术细节
CSDN上的Linux Cgroup快速入门:涵盖了基本概念、CPU和内存管理等核心内容
cgroup使用举例和linux内核源码详解:提供了实际的使用案例和源码分析
- cgroup v2 专门资料 最新版本学习:
详解Cgroup V2:专门讲解cgroup v2的特性和使用
Control Group v2权威指南(译文):权威的cgroup v2中文翻译文档
实践性文章:包含实际操作示例和最佳实践
- 容器相关应用 Kubernetes官方文档介绍了cgroup v2在容器编排中的应用
学习建议 从基础开始:先了解cgroup的基本概念和目的
理论结合实践:通过实际操作加深理解
版本差异:重点关注cgroup v1和v2的区别
应用场景:学习在容器化、资源管理等场景中的应用
这些资料涵盖了从入门到深入的各个层次,建议你按照自己的基础水平选择合适的材料开始学习。
您说: 美团技术团队的cgroups简介:深入介绍了cgroups的内部实现机制,包括VFS接口等技术细节 这个文章链接发一下
ChatGPT 说: 根据我之前搜索到的结果,美团技术团队的cgroups简介文章链接是:
https://tech.meituan.com/2015/03/31/cgroups.html
这篇文章标题是《Linux资源管理之cgroups简介》,由美团技术团队发布。文章深入介绍了cgroups的内部实现机制,包括VFS接口等技术细节,是学习cgroups非常好的中文资料。
你可以直接访问这个链接来阅读完整的文章内容。这篇文章对于理解cgroups的工作原理和底层实现机制很有帮助。
您说: cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。 这个帮我输出一个具体落地的小例子
ChatGPT 说: 我来为你提供一个cpuacct子系统的具体实践例子:
🔍 cpuacct cgroup 实例 例子 cpu 统计
🔗 cgroup 分析之CPU和内存部分 | 🔗 Cgroup分析之cpu、cpuacct 🔗 Linux资源管理之cgroups简介 🔗 Cgroup之cpuacct子系统 - 🔗 A.2. cpu | Red Hat P 🔗 [详解Cgroup V2 | Zorro’](https://zorrozou.github.io/docs/详解Cgroup V2.html) 🔗 第一千零一篇的 cgroups 介紹. 🔗 Cgroup - 从CPU资源隔离说起 🔗 Chapter 24. Using cg 🔗 [kernel_new_features/](https://github.com/0voice/kernel_new_features/blob/main/cgroups/文章/用 cgroups 管理 cpu 资源.md)
让我搜索更具体的cpuacct实例:
🔍 cpuacct.usage cpuacct.stat 例子 实际操作
🔗 cpuacct.txt 🔗 Calculating CPU usag 🔗 Android cpuacct.usag 🔗 linux - cgroup cpuac 🔗 Linux cgroup资源隔离各个击破 🔗 cgroup - Why do user 🔗 3.3. cpuacct | Resou 🔗 cpuacct: per-cgroup 🔗 Checking Kubernetes 🔗 Why do user and syst
基于搜索到的信息,我来为你提供一个cpuacct子系统的具体实践例子:
cpuacct子系统实践例子
- 创建和挂载cpuacct子系统 bash 复制
创建挂载点目录
sudo mkdir -p /sys/fs/cgroup/cpuacct
挂载cpuacct子系统(cgroup v1)
sudo mount -t cgroup -o cpuacct none /sys/fs/cgroup/cpuacct
验证挂载成功
ls /sys/fs/cgroup/cpuacct/ 2. 创建一个测试cgroup bash 复制
创建一个名为test_group的cgroup
sudo mkdir /sys/fs/cgroup/cpuacct/test_group
查看创建后的文件
ls /sys/fs/cgroup/cpuacct/test_group/
输出会包含:cpuacct.usage、cpuacct.stat、cpuacct.usage_percpu等文件
- 启动一个CPU密集型进程并加入cgroup bash 复制
启动一个CPU密集型进程(死循环)
在后台运行
while true; do echo “test” > /dev/null; done & CPU_PID=$!
将进程加入到test_group中
echo $CPU_PID | sudo tee /sys/fs/cgroup/cpuacct/test_group/cgroup.procs
echo “进程 $CPU_PID 已加入test_group” 4. 监控CPU使用情况 bash 复制
查看总CPU使用时间(纳秒)
echo ”= 总CPU使用时间 =” cat /sys/fs/cgroup/cpuacct/test_group/cpuacct.usage
查看用户态和内核态时间统计(USER_HZ单位)
echo ”= 用户态/内核态统计 =” cat /sys/fs/cgroup/cpuacct/test_group/cpuacct.stat
查看每个CPU核心的使用时间
echo ”= 每CPU核心使用时间 =” cat /sys/fs/cgroup/cpuacct/test_group/cpuacct.usage_percpu 5. 创建监控脚本 bash 复制 #!/bin/bash
monitor_cpu.sh - CPU使用量监控脚本
CGROUP_PATH=“/sys/fs/cgroup/cpuacct/test_group” INTERVAL=2 # 监控间隔(秒)
echo “开始监控CPU使用情况…” echo “时间戳 总使用时间(ns) 用户态(USER_HZ) 内核态(USER_HZ)” echo ”================================================================”
prev_usage=0 prev_user=0 prev_system=0
while true; do # 读取当前值 current_usage=CGROUP_PATH/cpuacct.usage) stat_line=CGROUP_PATH/cpuacct.stat) current_user=stat_line | awk ‘{print 2}') current_system=(echo stat_line | awk '{print 4}’)
# 计算差值
if [ $prev_usage -ne 0 ]; then
usage_diff=$((current_usage - prev_usage))
user_diff=$((current_user - prev_user))
system_diff=$((current_system - prev_system))
timestamp=$(date '+%Y-%m-%d %H:%M:%S')
printf "%-20s %15d %15d %15d\n" "$timestamp" $usage_diff $user_diff $system_diff
fi
# 保存当前值作为下次的前值
prev_usage=$current_usage
prev_user=$current_user
prev_system=$current_system
sleep $INTERVAL
done 6. 实际测试输出示例 运行监控脚本后,你会看到类似这样的输出:
markdown 复制 时间戳 总使用时间(ns) 用户态(USER_HZ) 内核态(USER_HZ)
2024-08-22 10:30:15 1234567890 45 12 2024-08-22 10:30:17 1156789012 43 11 2024-08-22 10:30:19 1345678901 47 13 7. 关键文件说明 cpuacct.usage: 统计了所有CPU核的累加使用时间,单位是纳秒
cpuacct.stat: 统计了该控制组中进程用户态和内核态的CPU使用量,单位是USER_HZ
cpuacct.usage_percpu: 显示每个CPU核心的使用时间
- 清理工作 bash 复制
停止测试进程
kill $CPU_PID
删除测试cgroup
sudo rmdir /sys/fs/cgroup/cpuacct/test_group
卸载cpuacct
sudo umount /sys/fs/cgroup/cpuacct 这个例子展示了如何使用cpuacct子系统来实时监控特定进程组的CPU使用情况,可以用于容器监控、资源管理等实际场景。