Использование памяти Docker-контейнера кажется неправильным - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть контейнер, смонтированный с использованием docker-compose version 2, у которого ограничение памяти составляет 32 МБ.

Всякий раз, когда я запускаю контейнер, я могу отслеживать использованные ресурсы следующим образом:

docker stats 02bbab9ae853

Он показывает следующее:

CONTAINER ID        NAME                                            CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
02bbab9ae853        client-web_postgres-client-web_1_e4513764c3e7   0.07%               8.078MiB / 32MiB    25.24%              5.59MB / 4.4MB      135GB / 23.7MB      0

Что действительно странно для меня, так эточасть памяти:

8.078MiB / 32MiB    25.24%

Если за пределами контейнера я перечисляю PID Postgres, я получаю:

$ pgrep postgres
23051, 24744, 24745, 24746, 24747, 24748, 24749, 24753, 24761

Если я остановлю контейнер и перезапущу приведенную выше команду, я не получу PID,Это наглядное доказательство того, что все PID были созданы остановленным контейнером.

Теперь, если я перезапущу контейнер и получу каждый PID, я вычислю его использование в RSS-памяти и суммирую его вместе с методом python, Я не понимаю, докер ~ 8Mb говорит мне, но гораздо более высокое значение, даже близко к нему (например, ~ 100Mb или около того).

Это метод python, который я использую для вычисления памяти RSS:

def get_process_memory(name):
    total = 0.0
    try:
        for pid in map(int, check_output(["pgrep",name]).split()):
            total += psutil.Process(pid).memory_info().rss
    except Exception as e:
        pass
    return total

Кто-нибудь знает, почему память, объявленная Docker, настолько отличается?

Это, конечно, проблема для меня, потому что применяемый предел памяти не выглядит уважаемым.

Я использую Raspberry PI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...