我有一个500 GB的磁盘,并试图决定是否将它们分成三个分区在Linux中的性能有所不同。 即,如果有多个线程写入同一磁盘中的不同分区, – 如果第一个线程正在写入磁盘1中的分区1,第二个线程是否必须等待写入同一磁盘上的分区2?
磁盘是具有物理写入磁头的物理设备(暂时忽略SSD)。 它一次只能写入一个位置。 试图同时写入的多个线程将会相互竞争,实际上总体速度要慢一些,因为头部必须更多地寻找正确的位置。 最快的写法是在相邻的部门长期持续的权利。
固态硬盘没有物理方面,但他们的IO速度有限制。 添加线程不会改变潜在的瓶颈,所以不会增加速度。
这一切都假设给定的线程已经准备好以最快的速度写入。 如果某个应用程序依赖于某些其他资源(用户input,networking),那么添加线程可能会使其显得写得更快,因为这些线程正在进行更多的工作来“排队”要写入磁盘的数据。
不,相反。 写入磁盘相互靠近的区域时,常见的磁盘是最高性能的。 考虑一个简单的例子,在这个例子中写入两个大文件,一次写入磁盘的几乎相同的区域,一次写入很远的部分。 在第一种情况下,书写头可以实际上连续地移动,在后一种情况下,花费相当多的时间在两个远点之间移动头部。
通用的文件系统驱动程序已经经过了高度优化,可以在何时何地继续编写合理的决策。 如果您同时写入到磁盘完全不同的区域,那么这些优化中的许多优化都会丢失,并使用文件系统驱动程序的两个实例,每个实例都有自己有限的未完成写入视图。
甚至SSD(不花费更多时间处理物理距离)在一次性写入大面积的情况下性能更好(仅跨越整块,而不是在这里写小写,然后写小写)。 因此,即使在SSD的情况下,您也可以期望单独的文件系统在单独分区上的性能仍然优于多个文件系统。
如果你对这个分区的想法也来自于想要确保一个文件系统已经满了并不会阻止对其他文件系统的写入(为每个文件夹保留不同的最大空间),那么对于单一文件系统也是有解决scheme的。 在这种情况下,你正在寻找关键字是配额 。