使用四分之一内存无法find进程

我正在运行一个Debian 9(伸展)和2GB内存的小型vServer。

几个月来,我不知何故失去了大约500MB的RAM,我不知道如何使用它们。

当我free -h运行free -h

  total used free shared buff/cache available Mem: 2.0G 1.0G 482M 66M 511M 764M Swap: 1.0G 0B 1.0G 

我可以看到有一半的内存被使用,大约四分之一用于caching,如果需要的话可以释放,剩下的是免费的。

但是当我现在检查我正在运行的进程时,我只能发现我的进程使用了​​大约500MB。

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1458 mysql 20 0 927516 359260 0 S 0.0 17.5 108:31.26 mysqld 877 seafile 20 0 258032 94644 4876 S 0.0 4.6 0:22.92 python2.7 460 seafile 20 0 237156 85504 8036 S 0.0 4.2 0:13.14 python2.7 463 seafile 20 0 233096 82236 8956 S 0.0 4.0 0:05.79 python2.7 875 seafile 20 0 244356 81644 5408 S 0.0 4.0 0:19.50 python2.7 461 seafile 20 0 232464 81032 8232 S 0.0 3.9 0:03.58 python2.7 4054 www-data 20 0 374264 54976 45128 S 0.0 2.7 0:07.58 php-fpm7.0 4026 www-data 20 0 372652 54840 44408 S 0.0 2.7 0:10.36 php-fpm7.0 1865 seafile 20 0 1704520 52828 16 S 0.0 2.6 3:45.10 seaf-server 4021 www-data 20 0 370836 48880 40468 S 0.0 2.4 0:10.83 php-fpm7.0 1975 seafile 20 0 129128 47156 1944 S 0.0 2.3 0:02.06 python2.7 21106 netdata 20 0 189412 36600 2660 S 0.3 1.8 16:07.50 netdata 1604 lukas 20 0 107132 34860 2736 S 0.0 1.7 2:07.91 gunicorn 

我不知道剩下的500MB内存在哪里。

我怀疑内核,但运行slabtop显示它只使用约80MB。

  Active / Total Size (% used) : 76599.41K / 79594.40K (96.2%) 

我在我的服务器上运行netdata ,它显示了每个类别的内存使用情况的一个很好的概述,实际上它显示我缺less的530MB。 我玩了分组,并创build了一个叫做testing的新组,它包含了我缺less的内存(在/etc/netdata/apps_groups.conf

 testing: systemd* 

Netdata

为什么systemd(或netdata分类为systemd)使用大约四分之一的内存? 重新启动后,它只使用50MB,但一段时间后总是使用约500MB。

systemd是pid 1的进程。所有其他进程都是systemd的subprocess。

在netdata中,所有与给定组不匹配的进程都被分配给other类别。

由于netdata将进程分配给尊重其层次结构的组,因此systemd*只是将大多数进程从other进程移动到testing 。 所以systemd*不是一个真正有用的匹配。

如果我是你,我会尝试了解服务器运行的应用程序,并为这些特定的应用程序添加组。

另外,您可以在netdata中启用systemd图表 。 这将允许您看到netdata中的Services部分。 根据debian版本,可能需要重新启动内存报告(可能需要添加内核启动参数 – 检查wiki)。