Answers:
在大型系统上,如果有8GB的物理RAM,我们通常会分配2GB的交换空间。这些是运行Oracle或PostgreSQL的已加载数据库服务器。多年来,即使负载很重,我也从未见过交换失败。重载大约是100到150个用户,它们执行大约10,000次SQL读取,每分钟可能需要2500次写入。
我们还调整了交换级别,以阻止交换,并且关闭了我们不需要运行的不需要的进程。(自定义Linux版本)
就像上面提到的Eddie一样,对于4GB以下的任何内容,1x物理RAM是一个很好的经验法则。我为一家大型的《财富》 500强公司提供了定制的Linux构建,而这正是我们通常要做的事情,在我为他们咨询的最近5年左右的时间里,我们没有遇到任何问题。
在较大的系统上:这是我们的Oracle数据库服务器,具有32GB和64GB RAM的64位Linux,对于上述Eddie指出的问题,我们通常保留2GB的交换空间-空闲进程将根据交换设置设置进行交换。
一个看似永恒的问题。SlashDot上的好伙伴们在前段时间对此进行了讨论。看看他们怎么说:
如果我在2个小时的时间内看过4 GB的电影,很多内存管理器都会决定尝试缓存所有这些数据可能是一件好事。电影播放一半时,它会认为所有其他正在运行的程序都已经使用了一个小时,并且可以安全地换出以缓存4 GB以上的文件。最终结果是,看完电影后,您的一半程序被换出,导致系统呆滞,整个交换文件都报废了。
如果您有[足够的RAM来运行要每天使用的程序],则没有理由使用swap。
查看答案高内存系统上有多少SWAP空间?寻求指导,尽管您的问题更笼统。关于此问题的意见分歧很大,但是通常具有1 GiB RAM或更高内存的人似乎要么完全没有交换就运行,要么以1x内存作为交换而运行。
即使您不打算使用过多的RAM来强制进行交换,但至少有1x内存作为交换还是有一定价值的:它允许操作系统交换一些不希望使用的东西立即,以便它可以代替使用该内存作为磁盘或IO缓冲区。
考虑到现代硬盘驱动器的速度,进行大量交换只是just动的邀请。固态硬盘也许会扭转这种趋势,但是如果磁盘的最大传输速度可能达到300MB / s,则需要2-4GB的交换时间。
在过去(例如:Linux 1.2,i386,SunOS 4.x),您可能正在运行5-15 MB的守护程序进程,而运行在4-32MB RAM中的任何地方,因此被阻塞的守护进程在等待I / O可以被替换掉而不会影响实际性能...而且它们更好,因为用户程序可能只有2-3MB的可用RAM。交换很有意义。
现在在我的环境中,大多数服务器都具有单个内存的繁重工作负载,并且可以相当准确地估计RAM ...交换可用于紧急情况,流程失控等。
该例外是笔记本电脑和可能会休眠的工作站。许多操作系统将使用交换区来保存挂起映像,在这种情况下,交换区必须大于物理内存。在具有suspend2 / tuxonice的Linux中,交换大小应为2xRAM,以支持从磁盘挂起。
这些天,如果您正在运行32GB或64GB服务器,则4 GB的默认交换空间是安全的。如果有那么多物理内存,则任何超出此范围的配置都是过大的。