1

我有一些 cgroups 管理的服务(实际上在 docker 中运行)。为了公平地安排一些需要资源的任务,容器化服务需要知道它确切的(尽可能)资源使用情况。我决定从 cgroups 中读取这些指标。

但有一个问题。我知道从 docker 容器访问 cgroup 数据的两种方法。

  1. 直接从容器内部挂载 cgroups。为此,我需要为容器提供 CAP_SYS_ADMIN 功能。我认为这种方法过于简单,只能读取资源使用指标。

  2. 使用 docker 卷,指向主机 cgroups 挂载点。这个解决方案或多或少合适,但我正在寻找更优雅的方式。

我不是“内核专家”,也不熟悉内核源代码和文档,所以我可以问菜鸟的问题。

是否有任何内核接口允许我在不安装 cgroups 文件系统的情况下读取 cgroups 指标?

4

1 回答 1

2

您在用户空间中获得的唯一接口是通过挂载 cgroups 或从/proc/<pid>/cgourps, (但仅限于进程所属的 cgroups)。如果您正在寻找用于读取 cgroups 数据的 syscall(),则它不可用 IMU。Docker 需要运行 cgroups 服务(cgconfig、cgred 等),因此它需要您挂载 cgroups。

于 2014-09-17T13:30:02.390 回答