测量寻道次数



给定一个密集读/写文件系统的进程,我们的目标是测量进程中调用的查找次数?理想情况下,我们应该测量磁盘设备中的实际搜索操作。在libc/syscall中测量lseek就足够了。工作负载进程运行 C/C++ 程序。

是否有可行的测量方法?

要测量对lseek或类似调用,您可以使用 strace 命令(例如$ strace myprog- 并且可能会将输出从 strace 重定向到某个文件,以便您可以计算给定类型的操作数(。或者,您可以通过编写一个包装器函数(或包装器类(来检测代码,该函数对包装器内的调用进行计数,但是要使其适用于"一切"需要相当多的工作。

现代硬盘驱动器中的实际头部运动并不容易(甚至不可能(计算,因为这发生在驱动器内部。在遥远的过去,硬盘接口接收物理扇区和磁道的请求,因此至少在理论上,您可以发现磁道编号何时发生重大变化。这些天,它只是扇区编号 0..请求的扇区总数和每个轨道的扇区数通常是可变的(更远的扇区(。当然,除了这发生在操作系统驱动程序深处的明显因素之外,大多数人并不真正想检测硬盘驱动程序 - 更改硬盘驱动程序是一种非常确定的完全弄乱磁盘的方法......仅当您有(至少(两台计算机时,才执行此操作,其中一台是您尝试修改后的驱动程序,另一台是您的开发计算机。去过那里,做到了[虽然不是为了计算搜索 - 我需要修改硬盘驱动程序以使其在我拥有的古怪系统上工作]...... ;)

最新更新