コンテクスト

コンテクスト

コンテクスト

定期的に使用状況を確認する必要があるシステムがあります。

  • 相対的(パーセント)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

必要なもの

ここで、2 つの質問に対する答えが必要です。

  • ファイルから直接値を読み取ることに基づく現在の実装は、 に適していますかcgroup?
  • いいえの場合、そのような情報を簡単に取得できるツールはありますか。
  • はいの場合、このソリューションをどのように適応させることができますかcgroup2?

現在の解決策が機能しない理由cgroup2

私が現在抱えている主な問題は、cgroup2現在の実装がネストされたファイル構造に基づいているため、サポートが不足していることです。

cgroupの上Ubuntu 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

cgroup2の上Ubuntu 22.04

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

関連情報