看来,根据列出的进程的内存百分比,我的服务器的内存使用率不应该达到 98%。为什么累计内存使用率这么高?
top - 14:34:50 up 14 days, 22:54, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 139 total, 1 running, 138 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 32949428 total, 32566440 used, 382988 free, 604072 buffers
KiB Swap: 0 total, 0 used, 0 free. 31047712 cached Mem
-----------------------------------------------------------------------------------
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5897 20 0 906248 101500 6188 S 0.0 0.3 1:01.68 nscd
7880 20 0 154172 54840 18336 S 0.0 0.2 6:28.49 Xvnc-core
8012 20 0 544700 28344 18244 S 0.0 0.1 1:04.04 xfdesktop
23362 20 0 518688 21600 11504 S 0.0 0.1 6:05.26 xfce4-terminal
8010 20 0 626188 20388 14828 S 0.0 0.1 1:31.88 Thunar
1433 20 0 322828 19260 2224 S 0.0 0.1 0:35.91 rsyslogd
8008 20 0 427104 17992 11600 S 0.0 0.1 0:58.87 xfce4-panel
7904 20 0 88624 17928 692 S 0.0 0.1 0:00.00 Xvnc: [host res
24261 20 0 535632 16868 11448 S 0.0 0.1 0:24.36 xfce4-appfinder
3771 20 0 268892 12244 2816 S 0.0 0.0 2:29.83 fail2ban-server
8004 20 0 154564 11800 8424 S 0.0 0.0 0:06.79 xfwm4
23358 20 0 152468 9164 7044 S 0.0 0.0 0:00.80 panel-2-actions
7919 20 0 239968 8804 6388 S 0.0 0.0 0:00.10 x-session-manag
7918 20 0 127908 8428 6000 S 0.0 0.0 0:01.68 vncserverui-vir
17987 20 0 161240 7988 5948 S 0.0 0.0 0:00.04 sshd
23356 20 0 150596 7988 6164 S 0.0 0.0 0:00.78 panel-6-systray
8034 20 0 321392 7760 5428 S 0.0 0.0 0:39.73 xfsettingsd
7882 20 0 123264 6768 4352 S 0.0 0.0 0:09.57 vncserverui
8032 20 0 230664 6636 4896 S 0.0 0.0 0:00.12 xfce4-power-man
8098 20 0 286420 6244 2844 S 0.0 0.0 0:00.06 gvfs-udisks2-vo
1 20 0 32640 6160 1440 S 0.0 0.0 0:06.64 init
8118 20 0 355216 5488 2752 S 0.0 0.0 0:00.05 gvfsd-trash
24755 20 0 15100 4536 1808 S 0.0 0.0 0:01.67 bash
30756 20 0 103852 4400 3208 S 0.0 0.0 1:14.05 ntpd
7368 20 0 14924 4344 1796 S 0.0 0.0 0:00.08 bash
8027 20 0 286744 4216 3160 S 0.0 0.0 0:00.02 indicator-appli
18039 20 0 14900 4184 1660 S 0.0 0.0 0:00.09 bash
8101 20 0 362956 4132 2728 S 0.0 0.0 0:01.78 udisksd
8042 20 0 239344 4108 3244 S 0.0 0.0 0:00.05 upowerd
8124 20 0 291592 3848 3004 S 0.0 0.0 0:27.31 accounts-daemon
21857 20 0 112140 3764 2852 S 0.0 0.0 0:00.07 systemd-logind
8074 20 0 124908 3192 2640 S 0.0 0.0 0:01.36 at-spi2-registr
31316 20 0 61376 3048 2372 S 0.0 0.0 0:10.19 sshd
801 20 0 18188 2996 640 S 0.0 0.0 0:28.84 dhclient
8056 20 0 337316 2956 2448 S 0.0 0.0 0:00.01 at-spi-bus-laun
7881 20 0 76604 2940 2056 S 0.0 0.0 0:00.32 Xvnc
18038 20 0 161240 2928 888 S 0.0 0.0 0:00.46 sshd
8054 20 0 192444 2892 2356 S 0.0 0.0 0:00.01 gvfsd
6895 20 0 120244 2744 2244 S 0.0 0.0 0:00.00 gvfsd-metadata
1738 20 0 96896 2640 780 S 0.0 0.0 0:44.79 sendmail-mta
答案1
31047712 缓存内存
看起来你缓存了很多东西。请参阅古老的linuxatemyram.com
答案2
因为这就是现代操作系统的工作方式。您无法节省 RAM 以备日后使用。一台今天只使用 2GB 的 4GB 机器明天就无法使用 6GB ——它只是浪费了今天的 2GB。所以您唯一的选择就是使用它或浪费它。现代操作系统会尽最大努力使用它而不是浪费它。
如果你在想“我现在想要免费,以便以后可以使用”,那么你就忘记了你可以现在使用它和稍后再使用。无需权衡。现代操作系统会直接将 RAM 从一种用途转换为另一种用途,而无需在中间浪费精力释放 RAM。
使用不需要的内存并不是浪费,而是提高效率。不使用不需要的内存可以使用是浪费它。
答案3
Linux 使用所有可用 RAM 作为磁盘缓存,因此内存经常显示为“已满”。但是,这并不会阻止程序在需要时获取更多 RAM。