Search code examples
dockerram

inconsistency between docker stats command and docker rest api memory stats


when looking at a running container with docker stats command, I can see that the memory usage of a container is 202.3MiB. However, when looking at the same container through the REST API with GET /containers/container_name/stats -> memory_stats-> usage , the usage there shows 242.10 MiB.

there is a big difference between those values. What might be the reason for the difference? I know that the docker client uses the REST API to get its stats, but what am I missing here?


Solution

  • Solved my problem. Initially, I did not take into account cache memory when calculating memory usage.

    Say "stats" is the returned json from GET /containers/container_name/stats,

    the correct formula is:

    memory_usage = stats["memory_stats"]["usage"] - stats["memory_stats"]["stats"]["cache"]
    
    limit = stats["memory_stats"]["limit"]
    
    memory_utilization = memory_usage/limit * 100