Ric*_*shi 10 linux performance filesystems debugging
这是一个晦涩的问题,我知道。我正在尝试对 Linux 机器上的某些磁盘进行一些性能测试。我得到了一些不一致的结果,在同一个磁盘上运行相同的测试。我知道磁盘具有不同的性能,具体取决于正在访问磁盘的哪个部分。特别是,由于接近恒定的数据密度和恒定的旋转速度,对磁盘外部的读取和写入比对磁盘内部的读取和写入具有更高的吞吐量。
我想看看我的不一致是否可以归因于这种几何引起的吞吐量差异。是否可以使用现有工具找出文件在磁盘上的位置?
如果没有,我想我可以写一些东西来直接查找、读取和写入设备文件本身,绕过(并破坏)文件系统,但我希望避免这种情况。我目前在 3.0 内核(Arch Linux,如果重要的话)上使用 ext4,但我对其他文件系统的技术也很感兴趣。
小智 10
您可以使用FIBMAP IOCTL,例证这里,或使用hdparm的:
/ $ sudo /sbin/hdparm --fibmap /etc/X11/xorg.conf
/etc/X11/xorg.conf:
filesystem blocksize 4096, begins at LBA 0; assuming 512 byte sectors.
byte_offset begin_LBA end_LBA sectors
0 1579088 1579095 8
Run Code Online (Sandbox Code Playgroud)
您可以debugfs为此使用:
debugfs -R "stat ~/myfile" /dev/hda1
Run Code Online (Sandbox Code Playgroud)
相应地更改硬盘/分区驱动器并确保驱动器已卸载。您将获得一个包含所有使用块的列表:
BLOCKS:
(0):1643532
TOTAL: 1
Run Code Online (Sandbox Code Playgroud)