尽管内存足够,但仍进行机器交换

尽管内存足够,但仍进行机器交换

我们的一台 Docker 主机无缘无故地频繁交换 - 至少没有明显的原因(它是一台 Ubuntu 16.04LTS VM)。总的来说,所有 Docker 容器只使用了 12GB 内存中的约 4GB,但系统除了 6GB 交换空间外还使用了 10GB 物理内存。

是什么原因造成的?“大”是 的一个实例sonatype/nexus3和 的一个实例gitlab/gitlab-ce。当查看 htop 中的进程并按 排序时MEM%,没有出现任何异常,尤其是在某处“使用”的 14GB 范围内没有任何异常。

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/

相关内容