聊一聊应用的资源限制(cgroup篇)
💡
原文中文,约5600字,阅读约需14分钟。
📝
内容提要
本文介绍了在Linux操作系统下使用cgroup对应用进行资源限制的实现细节,包括内存、CPU和cpuset的限制。同时提供了一个使用cgroup限制内存和CPU的Docker示例和相关代码实现细节。
🎯
关键要点
- Docker等容器化工具使得应用资源限制变得简单,Linux使用cgroup进行资源限制。
- Linux的资源限制主要依赖于cgroup-tools,需先安装。
- cgroup v1和v2之间存在差异,使用命令stat -fc %T /sys/fs/cgroup/区分版本。
- 创建cgroup的命令cgcreate在v1和v2中相同,主要限制内存、CPU和cpuset。
- v1内存限制使用memory.limit_in_bytes,v2使用memory.max。
- v1 CPU限制使用cpu.cfs_period_us和cpu.cfs_quota_us,v2整合为cpu.max。
- cpuset的限制在v1和v2中没有变化,使用cpuset.cpus和cpuset.mems。
- cpuset.mems的取值在v1和v2中有所不同,v2的层级发生变化。
- 提供了一个使用crank的具体示例,展示如何设置资源限制。
- Docker示例展示了如何启动带有资源限制的nginx容器。
- cgroup v1和v2的控制文件路径不同,分别在/sys/fs/cgroup/docker和/sys/fs/cgroup/system.slice/下。
- 总结了cgroup的知识,并提供了实现细节的链接,后续将讨论Windows下的资源限制。
➡️