linux – 如果它不在缓存/缓冲区中或由进程使用,那么我的RAM在哪
我知道
Linux喜欢吃我的内存,这很好,但它并不能解释我在运行CentOS 6.5的VPS(KVM)上看到的内容.事实上,我在1GB VM上至少缺少200MB.它可能在哪里?
total used free shared buffers cached Mem: 996 907 89 0 76 379 -/+ buffers/cache: 451 545 Swap: 1023 5 1018 free -m表明,如果没有缓冲区/缓存,系统将使用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 在可见的运行进程之外还有什么东西可以占用我的内存吗?或者是免费的-m错误报告内存使用情况?有关回收此内存的任何提示(无需重新启动)? cat / proc / meminfo的结果:http://paste.ubuntu.com/6949236/ 编辑:原来是一个大的slab缓存,请参阅:http://www.52php.cn/article/p-aedhdroo-btv.html.我感到困惑的是它比我习惯的要大得多,并且像free -m,htop之类的工具报告这个用作内存而不是比缓存/缓冲区. 解决方法
> free -m是准确的.我不熟悉ps_mem,但怀疑它只报告程序的某些内存使用情况.尝试使用top -a,看看它是否为您提供了更多信息.
>内存可能被程序的“资源”空间使用.重新启动它们会清除其中的一部分,但如果它在一小时内没有回到同一个地方,我会感到惊讶. >你为什么要“回收”这段记忆.你没有RAM. “免费”内存浪费了内存.你最好使用100%,即使只是为了获得最大的性能提升(这就是为什么Linux使用它来进行缓存). >另见: Why is Linux reporting “free” memory strangely? 听起来你对内存利用率的误解与许多人一样.这个Q& A有很好的解释,以及更多信息的链接.但简而言之,除非OOM正在杀死进程,否则让操作系统做到这一点.严肃的,内核程序员为了做到这一点已经投入了大量的时间,除非出现明显的问题,否则我不敢质疑他们的专业知识. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |