Перестановка машины, несмотря на то, что памяти достаточно

Один из наших хостов Docker обменивается как ад без причины - по крайней мере, без видимой (это виртуальная машина Ubuntu 16.04LTS). Все контейнеры Docker в сумме используют только ~4 ГБ от общего объема ОЗУ 12 ГБ, но система использует 10 ГБ физической ОЗУ в дополнение к 6 ГБ подкачки.

Что может вызвать это? "Большие" являются одним из примеров sonatype/nexus3 и один случай gitlab/gitlab-ce, При просмотре процессов в htop и сортировке по MEM%не появляется ничего необычного, особенно ничего в диапазоне 14 ГБ, который где-то "используется".

xxx@docker-static:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          12015       10441         563         537        1010         670
Swap:         11670        6623        5047
xxx@docker-static:~$ docker stats --no-stream
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
18c956010080        0.81%               541.9MiB / 11.73GiB   4.51%               82.1GB / 3.8TB      149GB / 2.25GB      230
35ec9741be74        0.48%               1.887MiB / 11.73GiB   0.02%               22.1MB / 30.1MB     8.82GB / 5.57MB     8
e90b429c45f4        0.00%               68KiB / 11.73GiB      0.00%               10.5MB / 23kB       19.4MB / 11.2MB     1
091fd79b7b3c        19.17%              1.908GiB / 11.73GiB   16.26%              6.36GB / 526GB      985GB / 43.7GB      353
a1e0dd98679f        0.53%               924.2MiB / 11.73GiB   7.69%               83.9GB / 37.5GB     347GB / 9.98GB      182
1d5368d1ce24        0.25%               60.54MiB / 11.73GiB   0.50%               40.1GB / 112GB      102GB / 2.7GB       12
a0aba32126ec        0.00%               56KiB / 11.73GiB      0.00%               17.1MB / 9.48MB     6.25GB / 18.5MB     4
cc9065d65372        0.00%               256KiB / 11.73GiB     0.00%               1.12MB / 92.6kB     3.07GB / 12.3MB     2
92cb16f6bfc8        0.04%               6.031MiB / 11.73GiB   0.05%               13.1TB / 13.1TB     21.6GB / 1.81GB     4

1 ответ

Большинство инструментов состояния памяти включают только то, сколько физической памяти используется, чтобы своп оказался скрытым. Попробуй это:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less

Также top -oRES может быть более полезным. Так как хост может видеть все процессы даже в контейнерах, которые должны перечислять все. Вполне возможно, что ваша память не находится даже в одном из контейнеров.

https://www.cyberciti.biz/faq/linux-which-process-is-using-swap/

Другие вопросы по тегам