在阅读了互联网上的大量不同文章后,我仍然不清楚如何准确地找到使用我记忆的内容。
从 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 内存在哪里?
答案1
您正在运行的进程似乎占用了大约 18% 的内存。剩余的使用量可能是 ZFS ARC(默认情况下基本上最多占系统内存的 50%)。请参阅Ubuntu 20.04 上的 ZFS 是否使用大量内存?
PS 不要看“空闲”内存 - 本质上它是未使用的内存。想象一下,我的电脑现在有 35% 的 RAM 被浪费了(也就是说,现在它是多余的)。
从 20.04 升级到 Ubuntu Server 21.10 后,我的内存使用量急剧增加
加上free
和的输出,top
这仅意味着 21.10 能够比 20.04 更好地利用您的内存,仅此而已。
答案2
RSS(驻留集大小)显示特定进程使用的物理内存量。部分内存可由更多进程共享,因此您不能直接将它们相加。
这个Stackoverflow中的答案给出了更深层的解释:什么是 RSS 和 VSZ。
答案3
我的机器也有32GB内存:
$ free -m
total used free shared buff/cache available
Mem: 32027 14140 6459 490 11427 16733
Swap: 8058 0 8058
$ snap list
Name Version Rev Tracking Publisher Notes
core 16-2.54.3 12725 latest/stable canonical✓ core
core18 20211215 2284 latest/stable canonical✓ base
pycharm-community 2021.3.2 267 latest/stable jetbrains✓ classic
要列出使用内存的进程(按百分比排序),请使用:
$ ps -o pid,user,%mem,command ax | sort -k3 -r -n
5364 rick 10.5 /snap/pycharm-community/267/jbr/bin/java (... SNIP ...)
3219 rick 8.1 /usr/lib/firefox/firefox
31414 rick 7.2 /usr/lib/firefox/firefox -contentproc -childID 20 -isForBrowser -prefsLen 10960 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
3385 rick 4.7 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 387 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
1449 root 3.0 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
14808 rick 2.9 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 6660 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
3552 rick 2.5 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 532 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
2928 rick 2.2 compiz
25621 rick 2.1 /usr/lib/firefox/firefox -contentproc -childID 12 -isForBrowser -prefsLen 6660 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
18592 rick 1.6 /usr/lib/firefox/firefox -contentproc -childID 11 -isForBrowser -prefsLen 6660 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
3843 rick 1.5 /usr/lib/firefox/firefox -contentproc -childID 5 -isForBrowser -prefsLen 5369 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
3522 rick 1.5 /usr/lib/firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLen 532 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
3660 rick 1.4 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 532 -prefMapSize 244395 -parentBuildID 20210415204500 -appdir /usr/lib/firefox/browser 3219 true tab
3156 rick 0.9 /usr/bin/nautilus --gapplication-service
(... SNIP ...)