我在linuxatemyram上阅读了关于Linux和cachd内存的知识,但是如果服务器负载较低,那么对我来说就没有任何意义,而不是释放一些使用swap开始的caching内存,从而使服务器变慢。
即使是现在,当服务器负载是load average: 0.00, 0.00, 0.00某些内存交换,而超过85%的内存交换。
我读了类似的这个和这个问题 ,但是提到交换不应该发生。 同样,直到3个星期前,内存的一小部分被caching占用,我们没有改变任何影响caching的内存。
你能告诉我,如果这个数值仍然可以,或者是我有问题吗?
谢谢!
[root@web01 ~]# cat /proc/meminfo MemTotal: 5183448 kB MemFree: 249260 kB Buffers: 330848 kB Cached: 4317828 kB SwapCached: 92 kB Active: 2883596 kB Inactive: 1882468 kB HighTotal: 4315324 kB HighFree: 63516 kB LowTotal: 868124 kB LowFree: 185744 kB SwapTotal: 5799928 kB SwapFree: 5799796 kB Dirty: 368 kB Writeback: 0 kB AnonPages: 117356 kB Mapped: 21076 kB Slab: 152668 kB PageTables: 4184 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 8391652 kB Committed_AS: 268708 kB VmallocTotal: 116728 kB VmallocUsed: 5404 kB VmallocChunk: 110964 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 Hugepagesize: 2048 kB
[root@web01 ~]# free total used free shared buffers cached Mem: 5183448 4932936 250512 0 330840 4317340 -/+ buffers/cache: 284756 4898692 Swap: 5799928 132 5799796
[root@web01 ~]# uname -a Linux web01 2.6.18-164.15.1.el5PAE #1 SMP Wed Mar 17 12:14:29 EDT 2010 i686 i686 i386 GNU/Linux
没有! 在你的示例文章中,实际上没有用于交换。 你正在使用92k(或第二个截图中的132k)交换,这是偶然的和微不足道的。
caching的内存是空闲的内存,已经填满了磁盘上的块的内容。 一旦空间被其他任何东西需要,它将被腾空。 这是一个提高性能的好东西。
比较你的问题与服务器拒绝使用交换分区 。
至于为什么服务器可能会交换数据,而不是释放caching,可能是您的caching数据被读取的数量远远超过存储在内存中的数据。 程序有时会有很less的页面访问。 caching可以更好地利用这个空间。
vm.swappiness设置(也可以通过/ proc进行修改)会影响到这一点,但是在调整之前要花一些时间仔细观察发生了什么事情,特别是使用swap / out计数器。 sar和atop是这个有用的工具。
尝试将vm.swappiness = 0添加到/etc/sysctl.conf ,然后运行sysctl -p ,这将指示内核在用户应用程序需要来自内核的内存区域时更积极地释放文件caching占用的内存。