문맥
주기적으로 사용량을 확인해야 하는 시스템이 있습니다.
- 상대(퍼센트)
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
현재 구현이 중첩된 파일 구조를 기반으로 하기 때문에 지원이 부족하다는 것입니다.
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