несоответствие между командой docker stats и docker rest stats памяти API - PullRequest
0 голосов
/ 13 декабря 2018

, глядя на работающий контейнер командой docker stats, я вижу, что использование контейнера контейнером составляет 202,3 МБ.Однако, если посмотреть на тот же контейнер через REST API с использованием GET / container / container_name / stats -> memory_stats->, то использование там показывает 242,10 МБ.

между этими значениями есть большая разница.В чем может быть причина разницы?Я знаю, что докер-клиент использует REST API для получения своей статистики, но чего мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Используйте значение rss , т. Е. (Rss = использование - кэш)

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

В Linux интерфейс командной строки Docker сообщает об использовании памяти, вычитая использование кэша страницы из общего объема используемой памяти.

API не выполняет такие вычисления, а предоставляет общее использование памяти и объем из кэша страниц, чтобы клиенты могли использовать данные по мере необходимости.(https://docs.docker.com/engine/reference/commandline/stats/)

0 голосов
/ 31 декабря 2018

Решил мою проблему.Изначально я не учитывал кеш-память при расчете использования памяти.

Скажем, "stats" - это возвращенный json из GET / container / 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...