我有一些cgroups管理的服务(实际上在docker中运行)。为了公平地安排一些需要资源的任务,容器化服务需要准确(尽可能)了解资源使用情况。我决定从cgroups中读取这些指标。
但是有一个问题。我知道两种从docker容器访问cgroup数据的方法。
直接从容器内部安装cgroup。为此,我需要为容器提供CAP_SYS_ADMIN功能。我认为这只是阅读资源使用指标的过硬方式。
使用docker volume,指向主机cgroups mountpoint。这个解决方案或多或少是合适的,但我看起来更优雅。
我不是一个“内核人”,不熟悉内核源代码和文档,所以我可以问一下noob的问题。
是否有任何内核接口允许我在不挂载cgroups文件系统的情况下读取cgroups指标?
答案 0 :(得分:2)
您在用户空间中获得的唯一接口是通过挂载cgroup或/proc/<pid>/cgourps
,(但仅限于进程所属的cgroup)。如果您正在寻找用于读取cgroups数据的系统调用(),则其不可用的IMU。 Docker需要运行cgroups服务(cgconfig,cgred等),因此它需要你安装cgroups。