AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 5841
Accepted
C. Ross
C. Ross
Asked: 2009-05-08 07:15:46 +0800 CST2009-05-08 07:15:46 +0800 CST 2009-05-08 07:15:46 +0800 CST

2-4GB 系统上有多少 SWAP 空间?

  • 772

我应该如何决定在具有 2-4 GB RAM 的新 Linux 机器 (Debian) 上进行交换的大小?我真的需要交换空间吗?

linux debian swap
  • 12 12 个回答
  • 42110 Views

12 个回答

  • Voted
  1. Best Answer
    Christopher Cashell
    2009-05-08T08:07:45+08:002009-05-08T08:07:45+08:00

    有很多方法可以计算出机器中有多少交换使用。常见建议使用基于 RAM 的公式,例如 2 x RAM、1.5 x RAM、1 x RAM、.75 x RAM 和 .5 x RAM。很多时候,公式会根据 RAM 的数量而变化(因此具有 1GB RAM 的盒子可能使用 2 x RAM 交换(2GB),而具有 16GB 内存的盒子可能使用 0.5 x RAM 交换(8GB)。

    要考虑的另一件事是盒子将用于什么。如果您要在盒子上运行大量并发运行的进程,但其中很大一部分会在一段时间内处于空闲状态,那么添加额外的交换是有意义的。如果您要运行少量关键进程,那么添加额外的交换是有意义的(这可能看起来违反直觉,但我会在一分钟内解释)。如果您将一个盒子作为桌面运行,那么添加额外的交换是有意义的。

    至于你是否应该包括交换,是的,你应该。除非您真的知道自己在做什么,并且您确实有充分的理由,否则您应该始终包含交换空间。

    看,Linux 内核的工作方式,交换不仅仅在你用尽所有物理内存时使用。Linux 内核将获取不活动(休眠)的应用程序,并在一段时间后将应用程序移至实际内存中的交换。结果是,当您需要该应用程序时,在将应用程序的内存从交换区读回 RAM 时,会出现短暂的延迟(通常只有一两秒)。这通常是一件好事。

    这允许您将不活动的应用程序置于“睡眠”状态,让您的活动应用程序可以访问额外的 RAM。此外,Linux 将使用机器上任何可用的(未分配的)RAM 作为磁盘缓存,使大多数(慢速)磁盘活动更快、响应更快。交换非活动进程可为您提供更多磁盘缓存,并使您的机器整体速度更快。

    最后,让我们面对现实吧,磁盘空间很便宜。真的很便宜。根本没有充分的理由不刷(相对)一小块空间进行交换。如果我在一台机器上运行 2GB - 4GB 的 RAM,我可能会将我的交换空间设置为至少等于 RAM。如果它小于 2GB 的 RAM,那么我仍然会选择至少 2GB 的交换空间。

    更新:作为一个很好的评论提到(我忘了包括),如果您正在运行可能想要置于“休眠”模式(挂起到磁盘)的笔记本电脑或台式机,那么您总是想要至少一样多交换,因为你有记忆。交换空间将用于在计算机“休眠”时存储 RAM 中的内容。

    • 54
  2. PEra
    2009-07-10T05:13:33+08:002009-07-10T05:13:33+08:00

    Red Hat建议具有大量内存的服务器使用以下公式:

    if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB
    

    如果您的系统有 1 GB 内存,那么您的交换空间将是 2 GB,对于 16 GB,它将是 18 GB。

    • 17
  3. ubiquibacon
    2013-03-30T07:38:33+08:002013-03-30T07:38:33+08:00

    迟到的答案,我认为所选答案中几乎涵盖了这一点,但是@ssapkota在这里提供的答案中有一些很好且易于理解的信息(复制/粘贴在下面)。

    这是 RedHat 的一个非常好的建议:推荐的系统交换空间

    同一链接的摘录:

    在过去的几年里,推荐的交换空间量随着系统中的 RAM 量线性增加。但是由于现代系统中的内存量已增加到数百 GB,因此现在认识到系统所需的交换空间量是该系统上运行的内存工作负载的函数。但是,考虑到交换空间通常是在安装时指定的,并且很难预先确定系统的内存工作量,我们建议使用下表来确定系统交换。

    当前表格(截至 2012 年 12 月):

    Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                                 if allowing for hibernation
    ---------------------------   ----------------------------   ---------------------------
    2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
    2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
    8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
    64GB of RAM or more           4GB of swap space              No extra space needed
    

    原表:

    Amount of RAM in the System     Recommended Amount of Swap Space
    4GB of RAM or less              a minimum of 2GB of swap space
    4GB to 16GB of RAM              a minimum of 4GB of swap space
    16GB to 64GB of RAM             a minimum of 8GB of swap space
    64GB to 256GB of RAM            a minimum of 16GB of swap space
    256GB to 512GB of RAM           a minimum of 32GB of swap space 
    
    • 12
  4. derobert
    2009-05-08T08:01:12+08:002009-05-08T08:01:12+08:00

    这在很大程度上取决于你用它做什么。在适当的工作负载下,您实际上不需要任何交换空间,无论您有 16MB 还是 16384MB 的 RAM;事实上,大多数嵌入式 Linux 设备都没有任何设备运行(它们会换成什么?)

    考虑到 RAM 价格,您可能不会将交换用于主动计算。那么,还剩下什么?

    1. 在台式机上,交换空间用于磁盘挂起。这个交换空间需要大约 1 × RAM,这取决于内存内容的压缩程度。
    2. 允许从 RAM 中删除不活动的任务,以便为磁盘缓存腾出更多空间
    3. 相同,但允许活动进程将其用于堆/堆栈

    (2) 和 (3) 很大程度上取决于工作量。在我的桌面上,我可以轻松地在 (2) 上使用 4GB+,而不是让 vims、xterms 等在其他桌面上运行。

    在我运行的大多数服务器上,几乎没有任何东西被换出,而且 1-2GB 的交换空间(不管 RAM 大小)似乎还可以。

    • 8
  5. Ivan
    2009-05-08T07:30:00+08:002009-05-08T07:30:00+08:00

    好吧,这取决于您计划运行哪些服务和应用程序。您可以使用free -m查看您的内存使用情况,并随着时间的推移相应地调整您的交换分区。

    这是关于该主题的有趣讨论。就个人而言(并且在阅读了该讨论之后)我仍然会留下大约 1 GB 的空间用于交换。

    • 4
  6. Milner
    2009-05-08T07:24:22+08:002009-05-08T07:24:22+08:00

    我不能直接与 Debian 交谈,但我知道当你的 RAM 超过 2 GB 时,原来的 2xRAM 等式会发生变化,通常会下降到 1xRAM。我认为一旦你达到 16 GB RAM,建议再次降低到 .75xRAM。

    当然,我发现 Solaris 确实如此,并且实际上是用于 Oracle 安装的指标,因此 YMMV 取决于您将在那里运行的应用程序。

    • 2
  7. Martin C.
    2009-05-08T08:12:03+08:002009-05-08T08:12:03+08:00

    我总是做与 RAM 一样多的交换(至少)。以防万一有一天我想使机器休眠。可以使用更少,但也可以不使用。

    现在硬盘空间很便宜,因此我会毫不犹豫地放弃交换空间。

    • 2
  8. starblue
    2009-05-24T00:53:27+08:002009-05-24T00:53:27+08:00

    当您会立即耗尽内存时,交换空间可以用作“填充”。

    当一个进程消耗了所有可用的 RAM,然后一些机器将运行非常缓慢,但您通常能够恢复。也更容易看出是哪个进程导致了问题。

    • 2
  9. Thomas Denton
    2009-05-08T07:46:18+08:002009-05-08T07:46:18+08:00

    多年来,我一直遵循这样的规则:对于 Windows 机器,交换空间与 RAM 一样多……在 Novell 上,如果我们有更多的打印机,我们会将交换空间调得更高……对于 linux,我的规则和实践是 1GB交换您拥有的每 2GB RAM。并且您将它放在磁盘的前面,以便更快地访问它。

    • 如果它是邮件/垃圾邮件网关,我使用双倍交换到 RAM
    • 如果它是 * 服务器,我根本不使用交换
    • 如果是 LAMP 服务器,则 1/2 规则生效。

    • 里程将根据应用程序和 GUI 使用情况而有所不同。

    • 1
  10. Adam Gibbins
    2009-05-08T07:24:51+08:002009-05-08T07:24:51+08:00

    我创建 1GB 交换并在第二次使用它时购买更多 RAM。你真的不需要在现代计算机上进行交换,RAM 很便宜。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve