docker stats命令与docker rest api内存统计信息之间的不一致

时间:2018-12-13 15:08:07

标签: docker ram

当使用docker stats命令查看正在运行的容器时,我可以看到容器的内存使用率为202.3MiB。 但是,当通过REST API查看相同的容器时, GET / containers / container_name / stats-> memory_stats-> usage,那里的使用率显示为242.10 MiB。

这些值之间存在很大差异。 造成差异的原因可能是什么?我知道Docker客户端使用REST API来获取其统计信息,但是我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

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

说“ stats”是从中返回的json GET / containers / container_name / stats

正确的公式是:

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

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

memory_utilization = memory_usage/limit * 100

答案 1 :(得分:0)

使用 rss 值,即(rss =使用情况-缓存)

"memory_stats": {
        "stats": {
            "cache": 477356032,
            "rss": 345579520,
        },
        "usage": 822935552 
}

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

API不会执行这种计算,而是提供总内存使用量和页面缓存中的内存量,以便客户端可以根据需要使用数据。 (https://docs.docker.com/engine/reference/commandline/stats/