情境

情境

情境

我有一個系統,我必須定期檢查使用:

  • 相對(百分比)CPU
  • 和絕對 (GB) 的memory.

目前是如何實施的

我們使用的語言是python.

全系統psutil

對於系統範圍的統計數據來說,這很簡單,因為我們可以使用psutil.cpu_percent()psutil.virtual_memory()

cgroup(v1)

問題是,有時腳本在容器內運行,然後我們希望監視特定cgroup而不是系統範圍統計資訊的使用情況。

我們的系統中已經實現了cgroups基於:

  • 對於CPU:
    • cpu.cfs_period_us
    • cpu.cfs_quota_us
    • cpuacct.usage
  • 為了記憶:
    • memory.usage_in_bytes
    • memory.limit_in_bytes

我需要的

在這裡我需要回答兩個問題:

  • 目前的實作是基於直接從文件讀取值可以嗎cgroup
  • 如果沒有,是否有任何工具可以支援輕鬆獲取此類資訊。
  • 如果是,我該如何適應這個解決方案cgroup2

為什麼當前的解決方案不起作用cgroup2

我現在遇到的主要問題是缺乏支持,cgroup2因為目前的實作是基於嵌套檔案結構的。

cgroupUbuntu 20.04

$ cat /proc/mounts | grep cgroup
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup2 /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd 0 0
cgroup /sys/fs/cgroup/rdma cgroup rw,nosuid,nodev,noexec,relatime,rdma 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0

cgroup2Ubuntu 22.04

$ cat /proc/mounts | grep cgroup
cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime 0 0

相關內容