2011-08-05 61 views
3

我需要对文件进行随机更新。我们需要更新偏移量为k1,k2,...,kn的文件。从性能的角度来看,如果我按任何顺序编写,或者如果我按照递增的偏移顺序编写,性能会有所提高,那么这很重要吗?更具体地说,我要在RAM中缓冲一堆更新,然后更新。所以当我准备刷新磁盘更新时,我知道需要写入的偏移量。随机磁盘写入

回答

2

在处理旋转磁盘上的大文件时,将硬盘驱动器的磁头从一个磁盘移动到另一个磁盘是最大的性能杀手。头部移动得越远,影响就越大。

按顺序进行写入。这将导致(统计上至少)气缸上的所有扇区被写在一起(无头移动),然后头移动到相邻气缸(尽可能短的头移动)。

请注意,如果您正在处理具有多个后备物理磁盘(例如RAID,NAS)的逻辑磁盘,则通过增加磁盘可以缓解磁头寻道问题,但除非您具有逻辑扇区映射的特定知识到物理存储,按照扇区顺序进行更新仍然最有可能使头部移动最小化。

0

除非你知道你的偏移如何转换成特定的气缸/头/部门,我不会担心它。您的磁盘控制器可能会自行重新排序请求以提高效率,并且如果您的磁盘碎片化,您不知道文件的逻辑块是否是顺序的。

+0

不......如果您正在批量处理大量随机更新,则磁盘控制器将知道对邻近扇区的更新尚未在下一批中进行更新。百分比来看,写作顺序和随机写作之间存在巨大差异。绝对数字是否重要取决于需求,硬件和文件的大小。 –

+1

有关碎片的好处。 – bosmacs

+0

@bosmacs:即使您有文件碎片,文件在磁盘上随机组织也不太可能。即使是高度碎片化(现代操作系统也不太可能),两个相邻的逻辑扇区更可能与物理上相邻。 –