当前位置: 首页 > 知识库问答 >
问题:

CPU百分比大于100的Docker统计数据

易超
2023-03-14

我通过从Jmeter发送请求来强调容器,然后通过docker stats命令监视容器的cpu使用情况,该命令给出的值大于100%。

我不明白为什么即使只给容器分配一个核心,它也会给出超过100%的!。你知道原因吗?这个cpu值是否表示除了容器之外的某些系统进程的cpu使用情况?

提前感谢你的帮助。

docker信息结果:集装箱:2运行:1暂停:0停止:1图像:10服务器版本:17.06.0-CE存储驱动程序:aufs根目录:/var/lib/docker/aufs支持文件系统:extfs dirs:支持141 Dirperm1:真正的日志记录驱动程序:JSON-文件cgroupfs驱动程序:cgroupfs插件:卷:本地网络:网桥主机ipvlan macvlan null覆盖日志:awslogs fluentd gcplogs gelf journald JSON-文件日志条目splunk syslog SWARM:非活动运行时间:runc默认运行时间:runc Init binary:docker-init containerd版本:cfb82a876ecc11b5ca0977d1733adbe58599088a runc版本:2d41c047c83e09a6d464906feb2a2f3c52aa4 Init版本.0-98-通用操作系统:Ubuntu 16.04.2 LTS Ostype:linux体系结构:x86_64 CPU:8总内存:15.56 GIB名称:logti048131 ID:rhog:ir6n:fvc4:ydi5:a6t4:qa4y:ddyf:7hzn:ai3l:wvle:bnhy:6ynv Docker根目录:/var/lib/Docker调试模式(客户机):false调试模式(服务器):false注册表:https://index.Docker.io/v1/实验:true不安全注册表:127.0.0.0/8启用实时还原:false

警告:不支持交换限制

共有1个答案

郎飞航
2023-03-14

在Linux上,cgroups和Docker CPU stats处理CPU的“时间片”,即CPU使用的纳秒数。为了获得百分比,将容器cgroup中的“使用的时间”值与/proc/stat中的“可用的时间”的总体系统值进行比较。

由于存储的“时间片”值是累加的,因此将当前值与以前收集的值进行比较,以获得更瞬时的百分比。我认为这种比较是问题的基础。

Docker stats命令实际上在客户机中为这些信息做了大量的工作。客户端查询所有容器,监视容器启动/停止的事件,并为每个运行的容器打开单独的统计流。这些容器统计数据流用于计算来自流的每个统计数据转储的百分比。

→ find /sys/fs/cgroup/cpuacct/docker -type d
/sys/fs/cgroup/cpuacct/docker
/sys/fs/cgroup/cpuacct/docker/f0478406663bb57d597d4a63a031fc2e841de279a6f02d206b27eb481913c0ec
/sys/fs/cgroup/cpuacct/docker/5ac4753f955acbdf38beccbcc273f954489b2a00049617fdb0f9da6865707717
/sys/fs/cgroup/cpuacct/docker/a4e00d69819a15602cbfb4f86028a4175e16415ab9e2e9a9989fafa35bdb2edf
/sys/fs/cgroup/cpuacct/docker/af00983b1432d9ffa6de248cf154a1f1b88e6b9bbebb7da2485d94a38f9e7e15

→ cd /sys/fs/cgroup/cpuacct/docker/f0478406663bb57d597d4a63a031fc2e841de279a6f02d206b27eb481913c0ec
→ ls -l
total 0
-rw-r--r--    1 root     root             0 Nov 20 22:31 cgroup.clone_children
-rw-r--r--    1 root     root             0 Nov 20 04:35 cgroup.procs
-r--r--r--    1 root     root             0 Nov 20 21:51 cpuacct.stat
-rw-r--r--    1 root     root             0 Nov 20 21:51 cpuacct.usage
-r--r--r--    1 root     root             0 Nov 20 22:31 cpuacct.usage_all
-r--r--r--    1 root     root             0 Nov 20 21:51 cpuacct.usage_percpu
-r--r--r--    1 root     root             0 Nov 20 22:31 cpuacct.usage_percpu_sys
-r--r--r--    1 root     root             0 Nov 20 22:31 cpuacct.usage_percpu_user
-r--r--r--    1 root     root             0 Nov 20 22:31 cpuacct.usage_sys
-r--r--r--    1 root     root             0 Nov 20 22:31 cpuacct.usage_user
-rw-r--r--    1 root     root             0 Nov 20 22:31 notify_on_release
-rw-r--r--    1 root     root             0 Nov 20 22:31 tasks

→ cat cpuacct.usage_percpu
3625488147 6265485043 6504277830 
→ grep -w ^cpu /proc/stat
cpu  475761 0 10945 582794 2772 0 159 0 0 0
 类似资料:
  • 值得一提的是,我已经使用jconsole来监视进程,一切看起来都很好。 如果docker容器的内容不需要,为什么要使用所有可用的内存?我以为docker会比MyApp占用更多的内存...不是100%的可用内存。

  • 问题内容: 我有4个项目MySQL数据库:(数值),和。 在我的报告中,我需要通过“调查”中的数字来计算已参加调查的“雇员”的百分比。 这是我现在的声明: 表格如下: 我想按参加调查的人数来计算谁所占的百分比。即,如以上数据所示,分别为0%和95%。 问题答案: 尝试这个 在这里演示

  • 我有一个包含4个项的MySQL数据库:(数值)、、和。 在我的中,我需要根据“surveys”中的数字来计算接受调查的“employees”的百分比。 这就是我现在的说法: 下面是表格的原样: 我想根据中的数字计算参加调查的的百分比。即,如上面的数据所示,将为0%,将为95%。

  • 我正在对我的Azure Web App P3定价层运行负载测试。我们有以下自动横向扩展策略- 最小实例5和最大实例20,如果CPU百分比(Max)超过85%,则增加1个实例,如果CPU百分比平均低于50%,则减少1个实例 目前,它正在运行5个实例。如果我转到Applications Insights,所有可用实例的“Live Metrics Stream”窗格,它显示所有5个实例的CPU使用率约为

  • 我有以下代码片段: 我的问题是,它真的计算出25%的概率在这里获胜吗?球员在这里获胜的几率真的是25%吗? 编辑: 我刚刚写了这个: 它非常不准确。它从大约0.15到0.3。 但是当我做更多的检查时(从(i 这是为什么?为什么100张支票不够精确?

  • 我试图计算数字的百分比(取自一个文本字段),并将计算值设置为另一个表单字段。为此,我尝试了下面的代码,但我发现js正在检测的键事件/小数位数不匹配。 例如,如果我在第一个输入字段中提供100(以计算1.75的百分比),根据我的js代码,我预计是1.75,但在第二个文本字段中是0.175。我知道这是一个非常简单的计算,但我无法解决这个问题。