我仍然看到系统管理员使用旧的经验法则,即交换应该是内存的两倍,即使在具有 32GB 内存的服务器上也是如此。
这些系统的磁盘相对昂贵(配备 200GB 驱动器),分配其中 64GB 进行交换似乎有点过分。
我想知道您为 Solaris 服务器分配了多少交换空间,以及为什么?
我看到还有其他类似的问题,但主要集中在 Linux 上。对于 Solaris,在决定交换空间时还有另一个考虑因素,因为 /tmp 文件系统通常与交换共享。
答案1
交换 = 2 * 内存 来自于以前的做法,当内核崩溃时,内核会将内存转储到交换设备,您可以在重新启动系统后检查发生了什么。例如,现在的 linux 完全跳过了这一步,我的系统也没有启用转储文件设置。所以,这种将内存翻倍来交换的做法不再有效,因为通常你有 16/32/64GB 的 RAM,而当磁盘比 RAM 大得多时,你显然在浪费磁盘空间。长话短说,如果你不想在生产中转储和分析内核崩溃,那么就没有逻辑理由坚持这个原则,只给你的系统几 G 的交换空间,通常我给 2/4 G,因为我想避免交换造成巨大的 IO 负载。
答案2
这是受到推崇的拥有足够的 RAM 来容纳所有应用程序主动使用的内存,同时还有足够的空间允许各种内核管理的缓存和其他动态缓冲区保持最佳性能。否则,分页会太多,系统性能会下降。
另一方面,强制的拥有足够大的交换空间,以便满足所有内存预留。否则,您的应用程序将随机崩溃。这与 RAM 使用无关。请注意,与 Linux 和其他系统不同,Solaris 不会过度使用内存。
在 Solaris 中不分配任何交换区域是一种不好的做法,因为这样会浪费一部分 RAM。通常有 50% 的保留但未使用的虚拟内存,因此我建议根据经验将交换区域的大小设置为 RAM 的 50% 到 100% 之间。在某些特定用途中,大量分页可能很有意义,因此也需要更大的交换空间。
答案3
Solaris 中不再需要交换空间。如果您知道您的系统将完全在内存中运行,那么您可以将其设置为零。除非磁盘空间确实是一个问题,否则请将其设置为您可以承受的最大空间,因为在紧急情况下您将需要一些空间。
我通常将该值设置为与 RAM 相同,除非系统可能需要更多的内存。
答案4
这很大程度上取决于您的应用程序。
因为 Solaris 似乎不能过度使用内存,即使没有实际使用,您也可能需要添加大量的交换。