Linux 缓存内存:超过 85% 的缓存内存并使用交换

Linux 缓存内存:超过 85% 的缓存内存并使用交换

我阅读了有关 Linux 和 cahd 内存的文章linuxatemyram但有些事情对我来说没有意义,如果服务器的负载很低,它不会释放一些缓存内存,而是开始使用交换,这会使服务器变慢。

即使现在,当服务器负载很大时,load average: 0.00, 0.00, 0.00一些内存会被交换,而超过 85% 的内存会被用于交换。

我读过类似的问题,例如,但提到不应发生交换。另外,直到 3 周前,缓存占用的内存还很小一部分,而且我们没有更改任何可能影响缓存内存的内容。

你能告诉我这些值是否仍然正常或者可能是我遇到了问题?

谢谢!

[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

答案1

不!在您的示例帖子中,实际上没有使用任何交换空间。您使用了 92k(或第二张屏幕截图中的 132k)的交换空间,这是偶然的和微不足道的。

缓存内存是已用磁盘块内容填充的空闲内存。一旦其他内容需要该空间,就会将其清空。这是提高性能的好事。

将您的问题与 服务器拒绝使用交换分区

至于服务器为何会交换数据而不是释放缓存,可能是因为读取缓存数据的次数比存储在内存中的数据要多得多。程序有时会有一些很少访问的页面。缓存可以更好地利用这些空间。

vm.swappiness 设置(也可通过 /proc 实时修改...)将影响这一点,但在调整之前,请花一些时间仔细观察发生的情况,尤其是使用交换入/出计数器。sar并且atop是实现此目的的有用工具。

答案2

然后尝试添加vm.swappiness = 0/etc/sysctl.conf运行sysctl -p,如果用户应用程序需要内核的内存区域,这将指示内核更积极地释放文件缓存占用的内存。

相关内容