我的RAM在哪里,如果它不在caching/缓冲区或进程使用?

我知道Linux喜欢吃我的RAM,这很好,但是这并不能说明我在运行CentOS 6.5的VPS(KVM)上看到的东西。 事实上,我在一个1GB的虚拟机上至less缺less了200MB。 它可能在哪里?

total used free shared buffers cached Mem: 996 907 89 0 76 379 -/+ buffers/cache: 451 545 Swap: 1023 5 1018 

free -m表明,没有缓冲区/caching,系统使用451 MB内存。 但是,运行的程序(主要是nginx / php-fpm / mysqld / sshd)没有办法加起来那么多的RAM。

ps_mem报告90MB目前正在被程序使用,这里是什么smem说:

 Area Used Cache Noncache firmware/hardware 0 0 0 kernel image 0 0 0 kernel dynamic memory 820912 775204 45708 userspace memory 96300 27988 68312 free memory 103168 103168 0 ---------------------------------------------------------- 1020380 906360 114020 

在可见的正在运行的进程之外有什么东西可以吃我的RAM吗? 或者是免费的-m错误地报告内存使用情况? 任何提示回收这个内存(无需重新启动)?

cat /proc/meminfo : http : //paste.ubuntu.com/6949236/

编辑:原来是一个大的板坯caching,请参阅: https : //stackoverflow.com/questions/5463800/linux-memory-reporting-discrepancy 。 我感到困惑的是它比我以前大得多,事实上像free -mhtop之类的工具报告这是用过的内存而不是caching/缓冲区。

  1. free -m是准确的。 我不熟悉ps_mem ,但怀疑它只报告某些程序的内存使用情况。 尝试使用top -a ,看看它是否给你更多的信息。

  2. 内存可能被程序的“资源”空间使用。 重新启动它们会清除一部分,但是如果它不在一个小时内回到同一个地方,我会感到惊讶。

  3. 为什么你要“回收”这个记忆。 你不是没有内存。 “免费”内存是浪费内存。 即使只是为了获得最小的性能收益(这也是为什么Linux使用它来积极地caching),使用100%会更好。

  4. 另请参阅: 为什么Linux会奇怪地报告“空闲”内存?

    听起来像你已经有许多人对内存使用的误解一样。 这个问答有很好的解释,以及更多信息的链接。 但总之,除非OOM正在查杀进程,否则让操作系统去做这件事。 严重的是,内核程序员已经把生活的很大一部分花在了正确的方面,除非存在明显的问题,否则我不敢质疑他们的专业知识。

试着看看:

猫/ proc / meminfo

可以给你额外的信息,你需要:)