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

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

  • 直接从容器内部安装cgroups。为此,我需要为容器提供CAP_SYS_ADMIN功能。我认为这是仅读取资源使用指标的方法,太过费力。
  • 使用docker卷,指向主机cgroup挂载点。这个解决方案或多或少是适当的,但是我正在寻找一种更优雅的方式。

  • 我不是“内核专家”,也不熟悉内核源代码和文档,因此我可以提出noob的问题。

    是否有任何内核接口(interface)可以让我读取cgroup指标而无需挂载cgroups文件系统?

    最佳答案

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

    08-27 23:08