#概述
我的上一篇博客Docker底层的内核知识——namespace讲解了内核中支持Docker作资源隔离的机制namespace。本篇文章主要讲述Docker背后内核的另一机制——cgourps。cgroups不仅可以用来限制被namespace隔离的资源,还可以为资源设置权重、计算使用量、操控任务启停等。
#从Linux系统中看cgroups
我们依然先从操作系统中直观的看一下cgroups是个什么东西。
进入到sys/fs/cgroup/
目录下,我们可以看到许多目录,如上图所见。
这些如blkio、cpu、cpuacct等目录都是cgroups机制的子系统,子系统的概念一会再解释。简单来说,就是这些东西就是对cgroup做资源限制的。blkio负责为块设备设定输入/输出限制,比如物理驱动设备——磁盘。cpu使用调度程序控制任务对cpu的使用,cpuacct自动生成cgroup中任务对CPU资源使用情况的报告。
而正如我们所见,为了让cgroups便于用户理解和使用,也为了用精简的内核代码为cgroup提供熟悉的权限和命名空间管理,内核开发者们按照Linux虚拟文件系统转换器接口实现了一套名为cgroup的文件系统,非常巧妙地用来表示cgroups的层级概念,把各个子系统的实现都封装到文件系统的各项操作中。那么,我们就可以像操作文件一样对cgroups的层级进行浏览和操作管理。除了cgroup文件系统以外,内核没有为cgroups的访问和操作添加任何系统调用,这点与namespace不同
Docker底层的内核知识——cgroups
最新推荐文章于 2024-07-21 18:29:45 发布