在互联网上阅读了很多不同的文章后,我仍然对如何准确地找到正在使用我的记忆的内容感到困惑。
从 20.04 升级到 Ubuntu Server 21.10 后,我的内存使用量急剧增加,我试图找出造成这种情况的原因。
当我登录服务器时,有一些受欢迎的统计数据显示:Memory usage: 65%
.
当我跑步时,free -m
我得到:
total used free shared buff/cache available
Mem: 31881 20575 9669 162 1636 10680
Swap: 8191 0 8191
到目前为止,它匹配。我知道这里有一些混乱,我的实际可用内存是free + buff/cache
或类似的,但后来我在互联网上找到了一个命令,它返回所有进程的内存消耗总和:
$ echo $(ps -o rss= ax | tr '\n' +) 0 | bc
5978056
这给了5-6GB。它与从返回的任何值都不匹配free -m
。按内存列排序的结果top
似乎证实了这一点:
top - 10:53:49 up 3 days, 13:28, 1 user, load average: 0.11, 0.10, 0.09
Tasks: 451 total, 1 running, 438 sleeping, 0 stopped, 12 zombie
%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 31881.4 total, 9791.5 free, 20453.8 used, 1636.1 buff/cache
MiB Swap: 8192.0 total, 8192.0 free, 0.0 used. 10801.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3930 mssql 20 0 20.6g 1.1g 44584 S 2.0 3.4 116:22.67 sqlservr
3115 mysql 20 0 5336868 726652 19148 S 0.3 2.2 11:29.69 mariadbd
19021 www-data 20 0 438324 231656 169396 S 0.0 0.7 3:31.67 php-fpm8.0
3348 www-data 20 0 438112 231096 171232 S 0.0 0.7 3:52.81 php-fpm8.0
3349 www-data 20 0 436832 227820 168664 S 0.0 0.7 3:26.81 php-fpm8.0
3356 www-data 20 0 429292 223864 171360 S 0.0 0.7 3:59.62 php-fpm8.0
3354 www-data 20 0 427580 221492 170016 S 0.0 0.7 3:47.99 php-fpm8.0
3357 www-data 20 0 428052 221336 169144 S 0.0 0.7 3:51.86 php-fpm8.0
3355 www-data 20 0 427056 220772 170064 S 0.0 0.7 3:35.60 php-fpm8.0
3345 www-data 20 0 427080 220116 169212 S 0.0 0.7 3:51.67 php-fpm8.0
3365 www-data 20 0 425712 220024 171216 S 0.0 0.7 3:42.05 php-fpm8.0
19700 www-data 20 0 424868 218940 169908 S 0.0 0.7 3:39.68 php-fpm8.0
3363 www-data 20 0 423260 218804 171252 S 0.0 0.7 3:45.00 php-fpm8.0
3341 www-data 20 0 423184 217468 170044 S 0.0 0.7 3:49.10 php-fpm8.0
3353 www-data 20 0 421016 214860 169556 S 0.0 0.7 3:30.55 php-fpm8.0
3351 www-data 20 0 420432 212680 169256 S 0.0 0.7 3:25.20 php-fpm8.0
2674 www-data 20 0 22.7g 169652 41068 S 0.0 0.5 3:03.73 dotnet
2696 git 20 0 2181008 165396 43788 S 0.0 0.5 7:55.15 gitea
1324 root 19 -1 134508 72360 71296 S 0.0 0.2 0:15.71 systemd-journal
4159 root 20 0 2052028 62724 31824 S 0.0 0.2 4:02.05 dockerd
2289460 root 20 0 1910052 39892 20176 S 0.0 0.1 0:23.22 snapd
2726 root 20 0 2011284 31740 16344 S 0.0 0.1 8:44.13 containerd
2703 root 20 0 270968 26244 19164 S 0.0 0.1 0:23.63 php-fpm8.0
3251 www-data 20 0 102500 21180 16652 S 0.0 0.1 6:46.80 nginx
2734 root 20 0 1139124 20408 7864 S 0.3 0.1 14:21.22 fail2ban-server
3254 www-data 20 0 101948 20048 16336 S 0.0 0.1 0:02.27 nginx
4165 minidlna 20 0 239012 19372 14324 S 0.0 0.1 0:39.26 minidlnad
2017 root rt 0 280960 18584 8772 S 0.3 0.1 0:47.47 multipathd
2801 root 20 0 112464 18560 9988 S 0.0 0.1 0:00.05 unattended-upgr
4242 root 20 0 84880 17604 14660 S 0.0 0.1 0:15.41 smbd
2664 root 20 0 34740 17488 8508 S 0.0 0.1 0:00.08 networkd-dispat
3253 www-data 20 0 101372 17020 13748 S 0.0 0.1 0:00.18 nginx
203855 root 20 0 295244 16160 13364 S 0.0 0.0 0:02.36 packagekitd
2700 mssql 20 0 72632 14852 6224 S 0.0 0.0 0:00.85 sqlservr
3257 www-data 20 0 101240 14756 11540 S 0.0 0.0 0:00.02 nginx
4234 root 20 0 22436 12928 3544 S 0.0 0.0 0:10.19 ddclient - slee
4160 root 20 0 70756 12212 9912 S 0.0 0.0 0:09.06 nmbd
2676 root 20 0 395152 11632 8612 S 0.0 0.0 0:53.73 udisksd
2591 systemd+ 20 0 23640 11164 7108 S 0.0 0.0 1:26.88 systemd-resolve
1 root 20 0 166644 10784 5516 S 0.0 0.0 0:29.92 systemd
4561 root 20 0 26968 10156 7144 S 0.0 0.0 0:44.81 portainer
4288 root 20 0 84864 9184 6240 S 0.0 0.0 0:00.99 lpqd
1319978 rychu 20 0 15832 8848 6896 S 0.0 0.0 0:00.06 systemd
4284 root 20 0 82640 8748 5956 S 0.0 0.0 0:00.59 smbd-notifyd
3255 www-data 20 0 101088 8668 5496 S 0.0 0.0 0:00.00 nginx
2706 redis 20 0 70552 8420 6348 S 0.0 0.0 13:27.82 redis-server
1319928 root 20 0 14860 8112 6648 S 0.0 0.0 0:00.03 sshd
2671 root 20 0 126992 7576 6720 S 0.0 0.0 0:22.24 thermald
这是我的snap list
输出:
$ snap list
Name Version Rev Tracking Publisher Notes
canonical-livepatch 10.1.2 126 latest/stable canonical✓ -
core 16-2.54.3 12725 latest/stable canonical✓ core
core18 20211215 2284 latest/stable canonical✓ base
core20 20220114 1328 latest/stable canonical✓ base
lxd 4.0.8 21835 4.0/stable/… canonical✓ -
所以我很困惑我的~14GB 已用内存在哪里?
RSS(驻留集大小)显示给定进程使用了多少物理内存。该内存的一部分可以由更多进程共享,因此您不能只是将它们相加。
这个 Stackoverflow 中的答案给出了更深入的解释:什么是 RSS 和 VSZ。
您正在运行的进程似乎使用了 ca. 18% 的记忆。剩余使用量可能是 ZFS ARC(默认情况下基本上最多 50% 的系统内存)。请参阅Ubuntu 20.04 上的 ZFS 是否使用大量内存?
PS不要看“空闲”内存-本质上是未使用的内存。考虑一下这就像我的计算机的 35% RAM 现在正在浪费(可以说现在是多余的)。
加上 和 的输出,
free
这top
意味着只有 21.10 能够比 20.04 更好地利用您的内存,仅此而已。我的机器也有 32GB 内存:
要列出使用内存的进程,按百分比排序,请使用: