Class ProcCgroupV2Discoverer

java.lang.Object
org.apache.druid.java.util.metrics.cgroups.ProcCgroupDiscoverer
org.apache.druid.java.util.metrics.cgroups.ProcCgroupV2Discoverer
All Implemented Interfaces:
CgroupDiscoverer

public class ProcCgroupV2Discoverer extends ProcCgroupDiscoverer
  • Constructor Details

    • ProcCgroupV2Discoverer

      public ProcCgroupV2Discoverer(Path procDir)
      Create a proc discovery mechanism based on a `/proc` directory.
      Parameters:
      procDir - The directory under proc. This is usually `/proc/self` or `/proc/#pid`
  • Method Details

    • discover

      public Path discover(String cgroup)
      Description copied from class: ProcCgroupDiscoverer
      Gets the path in the virtual FS for the given cgroup (cpu, mem, etc.). The method first retrieves 2 paths: - The cgroup virtual FS mount point by calling /proc/mounts. This is usually like '/sys/fs/cgroup/cpu'. - The heirarchy path by calling /proc/[pid]/cgroup. In Docker this can look like '/docker/4b053f1267369a19dcdcb293e1b4d6b71fd0f26bf7711d589f19d48af92e6278' The method then tries to find the final virtual FS path by contenating the 2 paths first, and then falling back to the root virtual FS path. In this example, the method tries '/sys/fs/cgroup/cpu/docker/4b053f1267369a19dcdcb293e1b4d6b71fd0f26bf7711d589f19d48af92e6278' and then falls back to '/sys/fs/cgroup/cpu'. An exception is thrown if neither path exists.
      Specified by:
      discover in interface CgroupDiscoverer
      Overrides:
      discover in class ProcCgroupDiscoverer
      Parameters:
      cgroup - The cgroup.
      Returns:
      the virtual FS path.
    • getCpuMetrics

      public Cpu.CpuMetrics getCpuMetrics()
      Description copied from interface: CgroupDiscoverer
      Gets CPU metrics (shares, quota, period, usage) appropriate for this cgroups version. Encapsulates the difference between v1 (cpu.shares, cpu.cfs_*) and v2 (cpu.weight, cpu.max).
      Specified by:
      getCpuMetrics in interface CgroupDiscoverer
      Overrides:
      getCpuMetrics in class ProcCgroupDiscoverer
      Returns:
      CPU metrics compatible with both cgroups v1 and v2
    • getCpuSetMetrics

      public CpuSet.CpuSetMetric getCpuSetMetrics()
      Description copied from interface: CgroupDiscoverer
      Gets CPU set metrics (effective CPU list) appropriate for this cgroups version. Encapsulates the difference between v1 (cpuset.effective_cpus) and v2 (cpuset.cpus.effective).
      Specified by:
      getCpuSetMetrics in interface CgroupDiscoverer
      Overrides:
      getCpuSetMetrics in class ProcCgroupDiscoverer
      Returns:
      CPU set metrics compatible with both cgroups v1 and v2
    • getCgroupVersion

      public CgroupVersion getCgroupVersion()
      Specified by:
      getCgroupVersion in interface CgroupDiscoverer
      Overrides:
      getCgroupVersion in class ProcCgroupDiscoverer