交换分区应该有多大?


Answers:


11

在大型系统上,如果有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的交换空间-空闲进程将根据交换设置设置进行交换。


5

一个看似永恒的问题。SlashDot上的好伙伴在前段时间对此进行了讨论。看看他们怎么说:

  • 磁盘空间不是现代HDD的问题,对于现代TB驱动器而言,16GB仍然是微不足道的数量。
  • 但是,在内存管理不佳的情况下,大量的交换空间可能会成为问题:

如果我在2个小时的时间内看过4 GB的电影,很多内存管理器都会决定尝试缓存所有这些数据可能是一件好事。电影播放一半时,它会认为所有其他正在运行的程序都已经使用了一个小时,并且可以安全地换出以缓存4 GB以上的文件。最终结果是,看完电影后,您的一半程序被换出,导致系统呆滞,整个交换文件都报废了。

  • 最后,正确的决定应该来自内存需求,而不是标准公式:

如果您有[足够的RAM来运行要每天使用的程序],则没有理由使用swap。


3

查看答案高内存系统上有多少SWAP空间?寻求指导,尽管您的问题更笼统。关于此问题的意见分歧很大,但是通常具有1 GiB RAM或更高内存的人似乎要么完全没有交换就运行,要么以1x内存作为交换而运行。

即使您不打算使用过多的RAM来强制进行交换,但至少有1x内存作为交换还是有一定价值的:它允许操作系统交换一些不希望使用的东西立即,以便它可以代替使用该内存作为磁盘或IO缓冲区。


3

如果您希望系统能够休眠然后成功恢复:-),那么为交换分区分配更多的空间可能比物理RAM的数量要多。


3

我的VPS提供商甚至没有为服务器提供交换空间,没有它,我的服务器一直运行良好。

我每天在工作中看到的大多数服务器也是无交换的。

编辑

但是-如果你正在运行一个JVM,请确保您有至少尽可能多的交换空间,你将永远设置-Xmx,因为的已知 问题与JVM。

简而言之,当JVM需要的内存超过当前使用的内存(但仍未达到Xmx)时,它将:

  • 交换到磁盘
  • 分配新的内存
  • 读回RAM

这意味着,如果交换小于您的交换Xmx,则可能失败。

引用错误报告

最好的办法是增加遇到此错误的计算机上的交换大小。

我尝试在使用JVM时放心使用,并将交换设置为相等的物理内存。


2

考虑到现代硬盘驱动器的速度,进行大量交换只是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,以支持从磁盘挂起。


在过去,System V 3.2和更早版本使用完全与RAM大小相同的交换。更少的东西被破坏了,更多的钱被浪费了,因为它不像BSD那样复杂。
kmarsh

2

这些天,如果您正在运行32GB或64GB服务器,则4 GB的默认交换空间是安全的。如果有那么多物理内存,则任何超出此范围的配置都是过大的。


1

理想情况下,您根本不会使用交换功能,而2倍RAM的确是几年前的剩余产品。

但是,如果您担心它,我会做类似的事情:

Max Memory Requirement - Physical Ram = Swap

我个人认为16GB的声音太大了。


1

在过去您想要尽可能多的日子里,现代* nix内核中的内存消耗已成为过去。俗话说“两倍于您的记忆力”。如今,年龄介于2GB或计算机在ram中拥有的空间量将使您接近需要的位置。


1

内核崩溃后,该交换还用于存储转储。如果您对分析这些转储感兴趣,但未指定其他转储目标,则交换空间至少应与RAM一样大。


0

没有任何一种算法可以告诉您需要多少交换。实际上,您需要使系统处于计划支持的最大负载下,并找出其实际使用了多少资源。相应地设置交换文件。

对于物理RAM,应将系统置于您希望处理的实际“巡航”负载下,并进行相应购买。对于低延迟系统,您不应该在巡航负载范围内进行所有交换(这与未分配交换或什至没有使用交换是不同的。)由于很少使用的系统实用程序执行整理服务,可能会发生少量交换,但总的来说,您应该尽量减少交换。

当然,您可以牺牲性能来降低价格。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.