[英]Get docker cpu/memory limit inside container
这一切都由 cgroups 控制。 因此,您可以检查 cgroup 限制和利用率:
$ docker run -it --rm --cpus 1.5 --memory 1g busybox /bin/sh
/ # cat /sys/fs/cgroup/memory/memory.usage_in_bytes
3043328
/ # cat /sys/fs/cgroup/memory/memory.limit_in_bytes
1073741824
/ # cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us
150000
/ # cat /sys/fs/cgroup/cpu/cpu.cfs_period_us
100000
/ # cat /sys/fs/cgroup/cpu/cpuacct.usage
97206588
memory 的使用和限制非常易于监控。 这比监控 Java 堆使用情况更准确,因为堆只是 Java 使用的 memory 的一部分。
在此期间的 CPU 配额为您提供分配的部分 CPU 数量,150000/100000 = 1.5。 您可以随着时间的推移监控 cpuacct.usage 以计算它何时超过限制并限制您的进程。
对于 cgroup2:
/ # cat /sys/fs/cgroup/memory.current
503808
/ # cat /sys/fs/cgroup/memory.max
1073741824
/ # cat /sys/fs/cgroup/cpu.stat
usage_usec 58384
user_usec 23602
system_usec 34782
nr_periods 37
nr_throttled 0
throttled_usec 0
/ # cat /sys/fs/cgroup/cpu.max
150000 100000
参见: https://facebookmicrosites.github.io/cgroup2/docs/cpu-controller.html
见2: https://facebookmicrosites.github.io/cgroup2/docs/memory-controller.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.