顶级报告交换100%,可用内存

在RedHat 5服务器上,我们看到最高报告交换空间为0k。 vmstat显示相同数量的交换使用,但没有分页。 我们杀了我们唯一的应用程序,顶部仍然报告使用100%的交换。 如果我们重新启动,交换到0k使用。 任何意见:我是否正确解释顶部? 在交换分区中是否真的有一些东西? 你能指出我的文件来解决这个问题吗? 如果不正确,我们可以纠正吗?

更新:Swappiness默认值为60.为了澄清上述情况,在杀死我们的应用程序之后,我们(即非OS拥有的进程)除了我的shell和top本身之外没有任何进程运行,但是继续显示0k自由交换。 我认为top是报告不正确的信息,而不是我们没有空闲的交换空间。

谢谢。

检查你的swappiness。 有人可能会把它设置得很高。

cat / proc / sys / vm / swappiness

只是因为你杀了你最大的内存使用过程并不意味着内核将立即开始从磁盘交换页面。 如果这些页面没有被主动使用,那么它们将一直保持在那里,直到那些将内存部分换出的进程再次被引用。 Swappiness会影响内核在进出交换时的进取性。

https://help.ubuntu.com/community/SwapFaq#What_is_swappiness_and_how_do_I_change_it.3F有一个很好的讨论什么swappiness实际上做,以及如何改变它可能会影响你的系统。

就像查尔斯说的那样,你可能会因为某种原因将它设置的不合适。

顶部通常不会以百分比报告任何内存统计数据,所以我将运行假设您已经计算出自由百分比。 当您在顶部按“G3”显示每个进程使用的内存摘要。 哪个进程占用了所有的内存,是你的APP还是你的APP正在使用的东西? 如果您可以尝试杀死正在占用内存的应用程序,您应该会在一段时间后看到自由内存回来。 一旦系统开始交换,可能需要一些时间才能恢复。 另外确保你已经分配了足够的物理内存。 如果您的内存分配小于512MB,请考虑使用512MB作为您的基本最低限度,但这只适用于您的系统是虚拟客人。