1. 容器技术基石:cgroups 核心机制剖析
在 Linux 容器生态中,cgroups(Control Groups)如同交通管制系统般精确调控着进程组的资源配给。2007年由 Google 工程师提出并贡献到 Linux 内核的这套机制,最初被命名为"process containers",后因命名冲突改为现名。其核心价值在于为进程组提供:
- 资源限制:内存、CPU等硬性天花板
- 优先级分配:带宽权重调控
- 资源统计:使用量精确计量
- 进程控制:组内进程的统一管理
与 namespace 的隔离特性形成互补,cgroups 通过/sys/fs/cgroup 虚拟文件系统暴露控制接口。以内存子系统为例,其典型目录结构包含:
code复制memory/
├── cgroup.procs
├── memory.limit_in_bytes
├── memory.usage_in_bytes
└── tasks
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. cgroups v1 架构设计与实现细节
2.1 层级化组织模型
cgroups v1 采用树状层级结构,每个层级(hierarchy)可挂载不同子系统。这种设计带来两个关键特性:
- 单子系统绑定:每个层级只能关联一个子系统(如cpu或memory)
- 进程单归属:进程在同一层级只能属于一个cgroup
通过 mount -t cgroup 可查看当前挂载点:
bash复制$ mount | grep cgroup
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec...)
2.2 核心子系统解析
| 子系统 | 功能描述 | 关键参数文件示例 |
|---|---|---|
| cpu | CPU时间片分配 | cpu.shares, cpu.cfs |
