在大多数(如果不是全部)Linux 发行版的安装过程中,默认情况下会对硬盘驱动器进行分区以包含交换分区。
可以通过以下方式改变这种行为swapon -p priority
根据手册页,优先级是:
PRIORITY
Each swap area has a priority, either high or low. The default priority is
low. Within the low-priority areas, newer areas are even lower priority
than older areas.
All priorities set with swapflags are high-priority, higher than default.
They may have any non-negative value chosen by the caller. Higher numbers
mean higher priority.
Swap pages are allocated from areas in priority order, highest priority
first. For areas with different priorities, a higher-priority area is
exhausted before using a lower-priority area. If two or more areas have the
same priority, and it is the highest priority available, pages are
allocated on a round-robin basis between them.
As of Linux 1.3.6, the kernel usually follows these rules, but there are
exceptions
为什么您需要多个交换文件?
系统管理员配置多个交换是一种常见做法吗?
答案1
即使您只有一个主轴,也有很多理由需要拥有多个交换区域(它们不需要是文件)。
20-20 事后诸葛亮:您部署了一台具有单个交换区域的计算机,但最终意识到这还不够。你不能随意重新部署机器,但你能创建另一个交换区域(可能是一个文件),直到重做分区布局成为一种选择。
调整交换区域的大小或移动交换区域:您无法调整交换区域的大小(如埃文·泰特曼)。而且除非您有足够的 RAM ,否则您不能只是swapoff
创建一个新的交换区域,然后再次创建:想要在释放交换区域之前将所有换出的页面移至 RAM。因此,您创建一个临时交换区域(原始交换区域),等到所有页面都从旧交换区域移动到临时交换区域,调整原始交换分区的大小,然后调整大小的交换分区和临时交换分区的大小。交换的页面将从临时交换区域复制到调整大小的页面,然后就完成了。如果您要移动交换区域,您甚至不需要临时区域。新的,它,然后旧的,一切都移动了。swapon
swapoff
swapoff
mkswap
swapon
swapoff
mkswap
swapon
swapoff
疯狂快速交换:现代磁盘采用区域位记录。磁盘的第一个区域速度最快。您可能需要测量磁盘,并创建一个恰好覆盖驱动器第一个最快区域的分区。这可能小于您预期的交换大小。因此,您可以使用相同的技术在多个磁盘上添加多个分区。
疯狂的快速交换,续集:或者,一旦您知道磁盘最快的区域在哪里,您可以在第一个区域中创建高优先级交换区域,在第二个区域中创建较低优先级交换区域,等等。这样您的交换系统就会自动知道在所有快速磁盘之间进行负载平衡区域,优先选择较快的区域,并在需要时使用较慢的区域作为溢出区域。
对称负载均衡:在一个拥有许多轴(如服务器)的精心构建的系统上,我喜欢有多个交换分区占据每个磁盘的开头(以利用区域位记录)。它们都具有相同的优先级,因此内核将对交换进行负载平衡。一个主轴可能为您提供 100 MB/s,但跨所有主轴进行交换可能会为您提供数倍的速度。 (天真地说)
瓶颈感知负载平衡:但实际上,还存在其他瓶颈。例如,一台 16 磁盘服务器可能有四个 6 Gbps SATA 端口,每个端口都有一个四端口倍增器,四个磁盘共享带宽。如果您了解这一点,则可以组织交换空间,使端口 1-4 上的磁盘 1 具有最高优先级,端口 1-4 上的第二个磁盘具有第二高优先级,依此类推。这将平衡交换负载,但不会压倒交换空间。端口倍增器。
在具有不同性能的设备之间交换:(正如卢克所提到的)如果您的系统不是全新的服务器,并且多年来它一直在有机增长,那么它可能拥有比其他系统快得多的块设备。您需要先切换到最快的设备,然后切换到下一个最快的设备,依此类推。
尺寸注意事项:(由大卫·科恩)也许将所有交换放在一个驱动器上会在驱动器上留下一些空闲空间(这听起来像是 2001 年的情况,但有很多旧的或嵌入式设备,这可能是一个问题)。将其拆分到所有驱动器上,除了上述所有其他好处之外,您还可以提高每个驱动器的磁盘空间使用率。每个轴丢失几个千兆字节是一回事,而一个磁盘丢失 300 个千兆字节又是另一回事。
紧急情况:你有整整 96 个小时的时间来提交你的博士论文,而你的最后一个实验(这个实验可能会让你获得诺贝尔奖,并且你的名字后面会出现一些时髦的混合大小写字母)正在以惊人的速度消耗你的记忆。你的交换空间快用完了。您创建的交换文件的优先级低于主交换设备的优先级 - 内核将使用它作为溢出交换空间。你甚至可以安装交换自动为您执行此操作,因此您还将有足够的交换空间用于那些巨大的emacs
LaTeX 运行。
跨不同媒体交换:Linux 无法交换到字符设备,但是有许多不同的介质,物理的和虚拟的:SSD(注意:您可能不想在 SSD 上交换)、数十种不同类型的旋转硬盘、软盘(是的) ,你可以换上软盘——你总是可以用 Unix 搬起石头砸自己的脚),DRBD卷、iSCSI、LVM 卷、LUKS 加密分区等(包括这些超现实的、令人难以置信的分层组合 — 在并行端口 ZIP 驱动器上、通过 iSCSI、通过 IEEE802.3ad 聚合以太网在 LVM 上交换 LUKS?没问题,你这个肮脏的变态)。这些是利基场景,旨在支持利基需求。
答案2
您无法在使用交换文件(至少据我所知)或交换分区时对其进行扩展。如果您即将填满可用交换区域,则可能需要创建额外的交换文件。
此外,如果系统需要 4GB 交换空间并具有两个 2GB 存储单元,则必须至少使用两个交换区域。
答案3
多速磁盘驱动器。您可以设置先使用较快的,如果该较慢的失败,则先使用较慢的。
答案4
1995 年,我尝试过不同类型的优化意识。我什至尝试过在不同类型的 CPU 中动态更改已知和未知位的实用程序,尝试过内存块大小、磁盘块大小和分区大小。
我在 PC 上见过的最好的性能提升是 15 512 MB 分区,每个分区上都有一个交换文件或者是一个交换分区。 1024 MB 分区比 512 MB 分区慢得多,我想 256 MB 会更快。这适用于 Windows,对于 Linux,您必须学习一些知识才能利用超过 30 个交换分区(交换轴)。这最适合 SSD。您只需要一张磁盘,但两张更好。一份用于操作系统,一份用于交换分区和临时文件。
问题是,一旦所有内容都被加载到内存 RAM、交换文件等的各种类型中......通过重新启动计算机来重新启动漏洞进程是一种负担。以我所说的配置,我可以轻松地离开我的计算机 15 天。在尝试交换主轴之前。每天当我的电脑内存耗尽时,我都会重新启动它。现在我认为当我第一次重新启动计算机时速度会变慢,并且所有内容都必须加载到内存中并再次放回交换文件中。一旦它位于此配置的交换文件中,评估速度就会更快。