读取cgroups数据而不用挂载它

我有一些cgroupspipe理的服务(实际上在docker中运行)。 为了公平地调度一些资源要求较高的任务,集装箱化的服务需要知道它(尽可能)的资源使用情况。 我决定从cgroups读取这个指标。

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

  1. 直接从容器内部挂载cgroups。 要做到这一点,我需要CAP_SYS_ADMINfunction容器。 我认为这太辛苦了,只能阅读资源使用指标。

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

我不是一个“内核人员”,不熟悉内核源码和文档,所以我可以问noob的问题。

有没有任何内核接口,允许我读取cgroups指标而无需挂载cgroups文件系统?

您在用户空间中获得的唯一接口是挂载cgroup或从/proc/<pid>/cgourps (但仅限于进程所属的cgroup)。 如果您正在查找用于读取cgroups数据的系统调用(),则无法使用IMU。 Docker需要cgroups服务(cgconfig,cgred等)才能运行,因此需要安装cgroups。