Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker stats命令和docker rest api内存统计数据不一致_Docker_Ram - Fatal编程技术网

docker stats命令和docker rest api内存统计数据不一致

docker stats命令和docker rest api内存统计数据不一致,docker,ram,Docker,Ram,当使用docker stats命令查看正在运行的容器时,我可以看到容器的内存使用量是202.3MiB。 但是,当通过RESTAPI查看同一容器时 GET/containers/container\u name/stats->memory\u stats->usage,那里的用法显示242.10 MiB 这些值之间有很大的差异。 造成这种差异的原因可能是什么?我知道docker客户端使用RESTAPI获取其统计数据,但我在这里遗漏了什么?解决了我的问题。最初,我在计算内存使用率时没有考虑缓存内存

当使用docker stats命令查看正在运行的容器时,我可以看到容器的内存使用量是202.3MiB。 但是,当通过RESTAPI查看同一容器时 GET/containers/container\u name/stats->memory\u stats->usage,那里的用法显示242.10 MiB

这些值之间有很大的差异。
造成这种差异的原因可能是什么?我知道docker客户端使用RESTAPI获取其统计数据,但我在这里遗漏了什么?

解决了我的问题。最初,我在计算内存使用率时没有考虑缓存内存

Say“stats”是从 获取/containers/container\u name/stats

正确的公式是:

memory_usage = stats["memory_stats"]["usage"] - stats["memory_stats"]["stats"]["cache"]

limit = stats["memory_stats"]["limit"]

memory_utilization = memory_usage/limit * 100

使用rss值,即(rss=usage-cache)

在Linux上,Docker CLI通过从总内存使用量中减去页面缓存使用量来报告内存使用量


API不执行这样的计算,而是提供总内存使用量和页面缓存中的数据量,以便客户端可以根据需要使用数据。()

您能在两种方法中都仔细检查一下容器id吗?仔细检查一下。我正在运行一个容器来测试这个问题。在尝试了同样的方法之后,我得到了两种方法之间非常不同的结果。一个给我52.21%,另一个给91.55%
"memory_stats": {
        "stats": {
            "cache": 477356032,
            "rss": 345579520,
        },
        "usage": 822935552 
}