Bil*_*ray 81 linux windows pagefile swap virtual-memory
什么对性能更好?靠近磁盘内部的分区访问时间会更慢,我们必须等待驱动器在操作系统和交换分区之间切换。
另一方面,交换分区绕过所有文件系统,允许直接写入磁盘,这可能比文件更快。
什么是性能权衡?
固定大小的交换文件有多大区别?
是否会更改到交换分区会更长,但如果它是交换文件,则在交换分区上的性能会更好?
小智 43
在硬盘上,吞吐量和查找通常在磁盘开头处更快,因为数据存储在更靠近磁盘外部区域的地方,每个柱面有更多扇区。因此,在磁盘开头创建交换可能会提高性能。
对于 2.6 Linux 内核,交换分区和未分段的交换文件之间没有性能差异。当 swapon 启用交换分区/文件时,2.6 内核会查找交换文件存储在哪个磁盘块上,因此当需要交换时,它根本不必处理文件系统。
因此,如果交换文件没有碎片化,就好像在同一位置有一个交换分区一样。或者换句话说,如果您使用原始交换分区,或者使用文件系统对其进行格式化,然后创建一个填充所有空间的交换文件,您将获得相同的性能,因为该磁盘上的任何一种方式都有一个用于交换的连续区域,内核直接使用的。
因此,如果在文件系统新鲜时创建交换文件(从而确保它没有碎片并且在卷的开头),则性能应该与在卷之前具有交换分区相同。此外,如果有人在卷的中间创建了交换文件,在两侧都有文件,则可能会获得更好的性能,因为寻求交换的次数较少。
在 Linux 上,如果创建的交换文件没有碎片,并且从不扩展,它就不会变成碎片,至少对于像 ext3/4 这样的普通文件系统是这样。它将始终使用相同的连续磁盘块。
我的结论是,当您需要扩展时,专用交换分区的唯一好处是保证不碎片化;如果您的交换区永远不会扩展,则在新文件系统上创建的文件不需要额外的分区。
Mar*_* M. 27
实际上,只要您不使用稀疏文件,它就没有太大区别。
使用 dd 创建一个“普通”文件将在一次运行中分配该文件(如果可能的话),而创建一个稀疏文件将告诉您您有一个 10GB 的文件,但实际上并没有用完所有空间。我不太确定 mkswap 是否无论如何都不会分配空间,但通常交换文件会随时间增长,因此不会分配连续扇区(如磁盘的一部分)而是根据需要分配块,这会导致随着时间的推移碎片化(当然取决于您对磁盘的使用情况)
在内部,Linux 内核或多或少会直接访问交换文件的底层块 - 我现在无法找到链接在引擎盖下发生了什么,除非有人会找到更正式的东西,否则您必须相信我。我现在能想到的是:
这一切仅适用于 2.6 行的 Linux 内核。
如果您想要最佳性能(那是什么,真的?...交换很慢,期间。增加 RAM 以便您不交换以获得最佳性能),您会想要使用分区。
我认为在我们现在所处的阶段,除非您运行的笔记本电脑的配置是在挂起/睡眠时将数据写入交换区,否则交换区确实应该被视为“最后的手段”。最好的办法是在一个盒子里放入足够的 RAM,这样它就不会分页到磁盘。
话虽如此,从性能角度来看,分区可能是更好的方法,尽管文件更灵活。只要确保它位于 7200+ RPM 的主轴上即可。