如何在磁盘调度算法中找到平均寻道时间?
Posted
技术标签:
【中文标题】如何在磁盘调度算法中找到平均寻道时间?【英文标题】:How to find average seek time in disk scheduling algorithms? 【发布时间】:2019-04-26 08:37:39 【问题描述】:Seek Time :将读/写磁头从当前位置移动到所需磁道所需的时间。
我正在寻找磁盘调度算法中使用的平均寻道时间公式。
【问题讨论】:
这里已经回答了:***.com/questions/41767414/… How is Average Seek Time Calculated?的可能重复 这里我正在寻找我们在磁盘调度算法中使用的公式,这不是一个重复的问题。 【参考方案1】:如何在磁盘调度算法中找到平均寻道时间? 我正在寻找磁盘调度算法中使用的平均寻道时间公式。
第一步是确定设备本身的地理位置。这是困难的。现代硬盘不能用旧的“柱面、磁头、扇区”三元组来定义,每个磁道的扇区数对于不同的磁道是不同的(外磁道上的扇区越多,圆周越大,内磁道上的扇区越少,圆周长更小),并且您可以获得的有关驱动器的所有信息(从设备本身,或从任何固件或操作系统 API)都是为了让旧版软件高兴的谎言。
要解决这个问题,您需要采用“基准测试策略”。具体来说,从 LBA 扇区 0 和 LBA 扇区 1 读取并测量它所花费的时间(建立“两个扇区在同一磁道上所用的时间”假设),然后在循环中从 LBA 扇区 0 然后 LBA 扇区 N 读取( N 从 2 开始并增加),同时测量它所花费的时间并将其与之前的值进行比较,并寻找更大的时间增加,这表明您已经找到了“轨道 0”和“轨道 1”之间的边界。然后重复这个(从“track 1”中的第一个扇区开始)找到“track 1”和“track 2”之间的边界;并不断重复此操作以构建“每个轨道上有多少个扇区”的数组。请注意,事情并非如此简单 - 需要考虑各种缺陷(例如,物理扇区大于逻辑扇区、在轨道上交错的扇区、坏块替换、内置于磁盘驱动器中的内部缓存等)。当然,这会非常耗时(例如,您不想在每次操作系统启动时对每个磁盘都执行此操作),因此您需要获取硬盘的标识(制造商和型号)并存储自动在某处检测到几何,因此如果先前存储了该磁盘模型的几何,您可以跳过自动检测。
下一步是使用关于真实几何(而不是假几何)的信息与更多“基准测试策略”相结合来确定性能特征。理想情况下,您会尝试为expected_time = sector_read_time + rotational_latency + distance_between_tracks * head_travel_time + head_settle_time
之类的公式查找常量,可以这样完成:
sector_read_time
。
测量从第一个磁道中的第一个扇区然后在第一个磁道中的扇区 N 读取的时间;对于 N 的每个值(对于第一个磁道中的每个扇区)并找到它可以花费的最长时间,将其除以第一个磁道中的扇区数,并将其命名为 rotational_latency
。
测量从第 N 道的第一个扇区读取到第 N+1 道的第一个扇区的时间,N 的范围从 0 到“max_track - 1”,并确定平均值,并将其命名为time0
测量从磁道 N 的第一个扇区到磁道 N+2 的第一个扇区读取的时间,N 的范围从 0 到 "max_track - 1",并确定平均值,称为time1
假设head_travel_time = time1 - time0
假设head_settle_time = time0 - head_travel_time - sector_read_time
请注意,这也存在各种陷阱(与以前相同),并且(如果您解决它们)您可以期望的最好结果是通用估计(而不是准确的预测器)。
当然,这也将非常耗时,如果您将自动检测到的几何图形存储在某个位置,那么将自动检测到的性能特征也存储在同一个位置是一个好主意;这样您就可以跳过所有自动检测,如果该型号磁盘的所有信息之前都已存储。
请注意,以上所有内容均假设“没有缓存且没有混合/闪存层的独立旋转盘片硬盘”,并且在很多情况下完全没用。对于其他一些情况(SSD、CD/DVD),您需要不同的技术来自动检测它们的几何形状和/或特性。然后是 RAID 和虚拟化之类的东西,让事情变得更加复杂。
主要是; 实践起来太麻烦了。
相反;只需假设 cost = abs(previous_LBA_sector_number - next_LBA_sector_number)
和/或让硬盘自行整理出最佳顺序(例如,使用本机命令队列 - 参见 https://en.wikipedia.org/wiki/Native_Command_Queuing )。
【讨论】:
以上是关于如何在磁盘调度算法中找到平均寻道时间?的主要内容,如果未能解决你的问题,请参考以下文章