lamcro Asked: 2010-10-24 10:35:03 +0800 CST2010-10-24 10:35:03 +0800 CST 2010-10-24 10:35:03 +0800 CST 交换分区的重要性 772 交换分区的目的是什么? 我怎么知道我有足够的交换分区?不会太多/很少。 我的 Ubuntu PC 用于典型的东西: 网络(电子邮件、脸书等) 一些电影 游戏很少见 system-installation filesystem swap disk hard-drive 6 个回答 Voted richzilla 2010-10-24T11:19:17+08:002010-10-24T11:19:17+08:00 交换分区有几个目的。 它用作“备份”RAM。也就是说,如果您的计算机内存不足,它将使用交换区域作为更多内存的临时来源。更具体地说,它将RAM中未使用的项目“交换”到交换区域,以便为当时需要它的应用程序留下空闲空间。这并不理想,因为硬盘驱动器的数据传输速率明显低于普通 RAM。实际上,这意味着从交换区域检索信息要慢得多。 它在计算机休眠时使用。休眠涉及获取当前状态下的 RAM 映像(就像 ISO 表示映像),并将其保存到交换区域。然后在计算机重新启动时重新加载此图像。 为了最有用,交换区域至少应为 (RAM * 1.5),但建议使用更多。例如,在我有 3gb 内存的系统上,我有一个 7.2gb 的交换区。 RAOF 2010-10-24T17:45:34+08:002010-10-24T17:45:34+08:00 这与这个关于交换分区“正确”大小的问题非常接近。我的回答中的大部分信息都适用 - 基本上,如果你想休眠,你通常希望你的交换空间至少与你的 RAM 一样大,除此之外,像 1 或 2 GB 这样的整数很容易就足够了。因为交换空间比RAM 慢得多,如果你要填充数 GB 的交换空间,你的计算机几乎肯定会变得非常慢。 也没有真正需要交换分区 - 交换文件(在主流 linux 文件系统上可用)提供相同的性能,并且如果您认为没有足够的交换空间,则可以轻松添加更多交换空间。 hhlp 2010-10-24T10:48:13+08:002010-10-24T10:48:13+08:00 这里有关于交换的非常深入的信息 有人说你的公羊的两倍,但我个人推荐这个: 交换 = 1.5 X 总内存 例子 : 如果你有 2Gb 的内存 -> 交换 = 1.5 x 2 = 3 PD:Ubuntu Desktop 使用 Swap to Hibernate(PC 关闭,无需电源,程序状态已保存)。如果休眠对您很重要,请拥有更多的交换空间,然后 ram + 交换溢出。 msw 2010-10-24T11:16:03+08:002010-10-24T11:16:03+08:00 该free命令可以告诉您正在使用多少交换。例如在这台机器上: $ free -m total used free buffers cached Mem: 1947 1863 84 312 758 -/+ buffers/cache: 792 1154 Swap: 4000 3 3997 显示我有 2GB (1947m) RAM,并且系统已经使用了大部分。但是,312m 用于 I/O 缓冲区,其余的(758m)系统决定用磁盘缓存填充。 磁盘缓存很有趣,因为它使用快速内存而不是慢速磁盘来存储其内容。内容可以从磁盘中获取,但会保留以备不时之需。这也意味着有 758m 的内存可以在必要时立即回收,因为系统知道它可以在磁盘上找到该数据。 这就是为什么有第二行显示如果没有缓冲和缓存,我将有一半的 RAM (1154m) 可供使用。 第三行显示我有一个过大的交换分区(它在那里并且没有做任何事情),其中已使用了高达 3m。这是内核真的不希望很快使用的东西,所以它被放在“后廊”上。 虽然free现在给你快照,vmstat但可以给你一张运行图: $ vmstat 10 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 3588 86236 316524 769132 0 0 14 13 126 81 4 1 95 0 0 0 3588 83872 316532 770512 0 0 0 20 264 1229 3 1 96 0 那里有很多信息,但有趣的是没有换入 (si) 或换出 (so) 流量。这意味着我在过去 10 秒内根本没有使用交换。 joeytwiddle 2017-11-11T05:32:19+08:002017-11-11T05:32:19+08:00 我有一台笔记本电脑,其硬盘驱动器速度较慢,但 RAM 相对较高(8GB)。在此设置中,我发现交换驱动器会适得其反,原因如下: 从交换中恢复应用程序很慢,与从头开始加载应用程序相当。我宁愿有一个快速响应的环境,即使这意味着我有时必须关闭并重新加载应用程序,也不愿有一个有时会意外停止的环境。 如果我想要休眠的能力,那就意味着将大量数据写入磁盘。如果持续执行( swappiness 60的默认行为),或者仅在休眠时执行(通过减少 swapiness),这将持续消耗电池,那么实际休眠将需要很长时间。我发现挂起是 RAM 而不是挂起到磁盘是相当令人满意的。它可能会暂停几天,并且它会比完全休眠更快地解除暂停。 由于硬盘速度较慢,我更喜欢保留 1GB 的RAM 用于磁盘缓存,有效地以内存换取速度。这使我的机器保持敏捷,但这确实意味着我只能将 8GB 内存中的 7GB 用于应用程序。我用来实现这一点的软件是earlyoom的一个分支,它会在使用 88% 的 RAM 时杀死旧的浏览器选项卡。我有时不得不重新加载已被删除的旧浏览器选项卡。 这个建议什么时候不适用? 如果您有一个快速的硬盘驱动器或 SSD,并且对电池消耗的担忧较少,那么我上面概述的缺点将不适用。(虽然早期的 SSD 可能存在磨损问题,但我相信自 2018 年以来销售的任何 SSD 都应该没问题。) 如果您的机器内存很少,或者您喜欢同时使用多个需要大量内存的应用程序,那么您可能需要使用交换来完成您的工作,而不管其缺点如何。在内存开始变得更便宜之前,这是交换的主要用例。 如果你真的需要休眠(也许你想暂停你的笔记本电脑,并在几天后重新打开它而不充电),那么你需要一个交换驱动器(建议至少与你的 RAM 一样大)。 警告: 我们长时间运行的一些软件(尤其是操作系统和桌面环境)会将代码加载到内存中,这些代码将永远不会真正再次使用。这些页面可以移动到交换,并且永远不需要再次拉出,从而避免了我之前提到的缺点。出于这个原因,我有时会创建一个512MB 或 1GB 的小交换文件,并让未使用的内存页面被换出。这只是给我留了更多的内存用于应用程序。(需要:一种测量交换流失的技术,以帮助调整此交换文件的大小。) Vijesh 2017-11-11T06:19:25+08:002017-11-11T06:19:25+08:00 交换区是硬盘空间的一部分,用于支持有限空间的 RAM 内存。RAM 的大小有限,因此某些应用程序需要比可用 RAM 空间更多的 RAM,在这种情况下,此交换空间也称为用于支持 RAM 的虚拟内存。 与 RAM 的速度相比,它的速度较慢。当我们运行一个大型应用程序时,将该应用程序中最近最少使用的部分交换到硬盘驱动器上的交换区域,当需要时它会从交换区域交换回来。这让操作系统感觉只是拥有比实际更多的 RAM。 它是安装操作系统时在硬盘上创建的专用分区。 最好创建两倍于 RAM 大小的交换区域。 您可以使用以下命令检查已使用和可用的交换区域: $ cat /proc/swaps Filename Type Size Used Priority /dev/sda10 partition 7812092 16 -1
交换分区有几个目的。
它用作“备份”RAM。也就是说,如果您的计算机内存不足,它将使用交换区域作为更多内存的临时来源。更具体地说,它将RAM中未使用的项目“交换”到交换区域,以便为当时需要它的应用程序留下空闲空间。这并不理想,因为硬盘驱动器的数据传输速率明显低于普通 RAM。实际上,这意味着从交换区域检索信息要慢得多。
它在计算机休眠时使用。休眠涉及获取当前状态下的 RAM 映像(就像 ISO 表示映像),并将其保存到交换区域。然后在计算机重新启动时重新加载此图像。
为了最有用,交换区域至少应为 (RAM * 1.5),但建议使用更多。例如,在我有 3gb 内存的系统上,我有一个 7.2gb 的交换区。
这与这个关于交换分区“正确”大小的问题非常接近。我的回答中的大部分信息都适用 - 基本上,如果你想休眠,你通常希望你的交换空间至少与你的 RAM 一样大,除此之外,像 1 或 2 GB 这样的整数很容易就足够了。因为交换空间比RAM 慢得多,如果你要填充数 GB 的交换空间,你的计算机几乎肯定会变得非常慢。
也没有真正需要交换分区 - 交换文件(在主流 linux 文件系统上可用)提供相同的性能,并且如果您认为没有足够的交换空间,则可以轻松添加更多交换空间。
这里有关于交换的非常深入的信息
有人说你的公羊的两倍,但我个人推荐这个:
交换 = 1.5 X 总内存
例子 :
如果你有 2Gb 的内存 -> 交换 = 1.5 x 2 = 3
PD:Ubuntu Desktop 使用 Swap to Hibernate(PC 关闭,无需电源,程序状态已保存)。如果休眠对您很重要,请拥有更多的交换空间,然后 ram + 交换溢出。
该
free
命令可以告诉您正在使用多少交换。例如在这台机器上:显示我有 2GB (1947m) RAM,并且系统已经使用了大部分。但是,312m 用于 I/O 缓冲区,其余的(758m)系统决定用磁盘缓存填充。
磁盘缓存很有趣,因为它使用快速内存而不是慢速磁盘来存储其内容。内容可以从磁盘中获取,但会保留以备不时之需。这也意味着有 758m 的内存可以在必要时立即回收,因为系统知道它可以在磁盘上找到该数据。
这就是为什么有第二行显示如果没有缓冲和缓存,我将有一半的 RAM (1154m) 可供使用。
第三行显示我有一个过大的交换分区(它在那里并且没有做任何事情),其中已使用了高达 3m。这是内核真的不希望很快使用的东西,所以它被放在“后廊”上。
虽然
free
现在给你快照,vmstat
但可以给你一张运行图:那里有很多信息,但有趣的是没有换入 (si) 或换出 (so) 流量。这意味着我在过去 10 秒内根本没有使用交换。
我有一台笔记本电脑,其硬盘驱动器速度较慢,但 RAM 相对较高(8GB)。在此设置中,我发现交换驱动器会适得其反,原因如下:
从交换中恢复应用程序很慢,与从头开始加载应用程序相当。我宁愿有一个快速响应的环境,即使这意味着我有时必须关闭并重新加载应用程序,也不愿有一个有时会意外停止的环境。
如果我想要休眠的能力,那就意味着将大量数据写入磁盘。如果持续执行( swappiness 60的默认行为),或者仅在休眠时执行(通过减少 swapiness),这将持续消耗电池,那么实际休眠将需要很长时间。我发现挂起是 RAM 而不是挂起到磁盘是相当令人满意的。它可能会暂停几天,并且它会比完全休眠更快地解除暂停。
由于硬盘速度较慢,我更喜欢保留 1GB 的RAM 用于磁盘缓存,有效地以内存换取速度。这使我的机器保持敏捷,但这确实意味着我只能将 8GB 内存中的 7GB 用于应用程序。我用来实现这一点的软件是earlyoom的一个分支,它会在使用 88% 的 RAM 时杀死旧的浏览器选项卡。我有时不得不重新加载已被删除的旧浏览器选项卡。
这个建议什么时候不适用?
如果您有一个快速的硬盘驱动器或 SSD,并且对电池消耗的担忧较少,那么我上面概述的缺点将不适用。(虽然早期的 SSD 可能存在磨损问题,但我相信自 2018 年以来销售的任何 SSD 都应该没问题。)
如果您的机器内存很少,或者您喜欢同时使用多个需要大量内存的应用程序,那么您可能需要使用交换来完成您的工作,而不管其缺点如何。在内存开始变得更便宜之前,这是交换的主要用例。
如果你真的需要休眠(也许你想暂停你的笔记本电脑,并在几天后重新打开它而不充电),那么你需要一个交换驱动器(建议至少与你的 RAM 一样大)。
警告:
您可以使用以下命令检查已使用和可用的交换区域: