哪些内存未被进程使用并被 `echo 3 > /proc/sys/vm/drop_caches` 释放?

哪些内存未被进程使用并被 `echo 3 > /proc/sys/vm/drop_caches` 释放?

在没有打开程序的情况下,我的电脑使用大约512M内存。昨天,我没有打开任何东西,但使用了 2 GB 内存(已使用 - 缓存 = 2153):

             total       used       free     shared    buffers     cached
Mem:          3261       2875        386         30        199        523
-/+ buffers/cache:       2153       1108
Swap:         8187          0       8187

Top显示没有进程处理这个问题:

top - 23:10:38 up 1 day, 14:35,  3 users,  load average: 0,31, 0,94, 1,29
Tasks: 172 total,   3 running, 169 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6,5 us,  4,2 sy,  0,0 ni, 89,1 id,  0,1 wa,  0,0 hi,  0,1 si,  0,0 st
KiB Mem:   3340164 total,  2937728 used,   402436 free,   201484 buffers
KiB Swap:  8384444 total,      180 used,  8384264 free.   531636 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2520 halfgaar  20   0 3869744 173620  38568 S   1,6  5,2  52:20.03 plasma-desktop
 1535 root      20   0  246420 108512  40420 S   2,0  3,2  22:36.65 Xorg
 2665 halfgaar  20   0 1354660  50624  15116 R   0,0  1,5   0:10.08 krunner
 2513 halfgaar  20   0 2966468  48564  19280 S   0,0  1,5   0:34.62 kwin
 2306 halfgaar  20   0 1329360  41448  12488 S   0,0  1,2   0:09.80 kded4
 2675 halfgaar  20   0  796712  37360  13804 S   0,0  1,1   0:04.23 kmix
 2619 halfgaar  20   0  649136  34160  14204 S   0,0  1,0   0:00.95 akonadi_mailfil
 2629 halfgaar  20   0  621348  33860  13876 S   0,0  1,0   0:00.88 akonadi_sendlat
 2562 halfgaar  20   0 1242180  33212   2504 S   0,2  1,0   3:20.05 mysqld
 2611 halfgaar  20   0  649132  33048  14140 S   0,0  1,0   0:01.29 akonadi_archive
18552 halfgaar  20   0  508376  32948  24108 S   2,6  1,0   0:02.23 konsole
 2645 halfgaar  20   0  506340  32204   8796 S   0,0  1,0   0:05.13 mintUpdate
 2626 halfgaar  20   0  552648  31768  14152 S   0,0  1,0   0:00.93 akonadi_notes_a
 2430 halfgaar  20   0  556864  30052   9484 S   0,0  0,9   0:10.57 ksmserver
 2546 halfgaar  20   0  866520  28528  12584 S   0,0  0,9   0:04.34 knotify4
 2302 halfgaar  20   0  382404  26896  10112 S   0,0  0,8   0:01.17 kdeinit4
 2304 halfgaar  20   0  387792  23516   4892 S   0,0  0,7   0:00.55 klauncher
 2648 halfgaar  20   0  541576  22824  13864 S   0,0  0,7   0:01.36 polkit-kde-auth
 2623 halfgaar  20   0  390412  19216  13712 S   0,0  0,6   0:00.79 akonadi_newmail
 2615 halfgaar  20   0  340388  18200  13276 S   0,0  0,5   0:00.75 akonadi_maildis
 2621 halfgaar  20   0  303972  17884  13272 S   0,0  0,5   0:00.70 akonadi_migrati
 2612 halfgaar  20   0  306052  17856  13188 S   0,0  0,5   0:00.71 akonadi_followu
 2606 halfgaar  20   0  327700  16772  12600 S   0,0  0,5   0:00.53 akonadi_agent_l
 2613 halfgaar  20   0  321704  16740  12576 S   0,0  0,5   0:00.52 akonadi_agent_l
 2614 halfgaar  20   0  327680  16560  12420 S   0,0  0,5   0:00.54 akonadi_agent_l
 2325 halfgaar  20   0  735344  14928  10116 S   0,0  0,4   0:04.63 kactivitymanage
 2313 halfgaar  20   0  282096  14832   9488 S   0,0  0,4   0:00.74 kglobalaccel
 2554 halfgaar  20   0  276912  14472  10148 S   0,0  0,4   0:02.04 kuiserver

只是为了尝试,我删除了缓存:

echo 3 > /proc/sys/vm/drop_caches

内存使用量下降了:

             total       used       free     shared    buffers     cached
Mem:          3261        850       2411         30          1         79
-/+ buffers/cache:        770       2491
Swap:         8187          0       8187

怎么会这样?为什么缓存以内核认为不是缓存的方式存储?它可以是我的 ecryptfs 加密主目录的缓存吗?我刚刚运行了它的备份,所以它上面的很多文件和元数据都被缓存了。

  • Linux 薄荷 17.1
  • 内核3.13.0-37

答案1

将 1 写入 drop_caches 只会删除(数据)缓存。 3 还会删除 dentry 缓存,即磁盘上文件名称的缓存。如果您最近使用过包含许多小文件的目录,那就可以解释这一点。

相关内容