我的内存被用在哪里了?

我的内存被用在哪里了?

buff/cache 仅使用 28G。

$free -h
              total        used        free      shared  buff/cache   available
Mem:           188G         87G         72G         17M         28G         72G
Swap:          3.9G          0B        3.9G

该内存未被进程使用:

$ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | head
         0.00 Mb COMMAND
       753.30 Mb /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
       440.66 Mb /usr/lib/polkit-1/polkitd --no-debug
       297.09 Mb /usr/sbin/NetworkManager --no-daemon
       297.00 Mb /usr/bin/python -Es /usr/sbin/tuned -l -P
       216.72 Mb /usr/sbin/ModemManager
       153.12 Mb /usr/sbin/rsyslogd -n
       144.51 Mb /usr/libexec/dconf-service
        87.64 Mb /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
        72.33 Mb /sbin/audispd

已用 87G - 28G 缓存 = 59G 下落不明?

更新:

根据 Gilles 的说法,执行 .slab 时,slab 分配是不可见的free。在分析slabtop和计算了分配给“Slab”的内存后/proc/meminfo,我得出了分配给该slab的内存总数:

平板:46.8651GB

其余的可能可以在 /proc/meminfo 中找到。如果我理解正确的话,Free 似乎将 inode 和 dentry 缓存纳入“已使用”类别。

相关内容