【问题标题】:write system call C - HDD Sequential or Random Access ?写系统调用 C-HDD 顺序访问还是随机访问?
【发布时间】:2015-10-17 22:17:01
【问题描述】:

我正在寻找一种解决方案来检测写入功能如何访问磁盘。我想知道它是顺序访问还是随机访问。我想过在 libC 上打开 write 系统调用并尝试对其进行编辑并计算它是随机访问还是 seq 访问。这可能吗?怎么样?

如果有其他解决方案,我将不胜感激!

【问题讨论】:

    标签: random system-calls hard-drive libc sequential


    【解决方案1】:

    我正在寻找一种解决方案来检测写入功能如何访问磁盘。

    由于您的问题提到了 libc,我们可以假设您在某个操作系统下运行,而不是在“裸机”系统上运行,在这种情况下,答案是 write 函数无法访问磁盘 完全没有。它只是要求操作系统(最终)将数据写入磁盘。

    【讨论】:

      【解决方案2】:

      您的问题今天可能没有意义,因为在今天的磁盘上,甚至硬件也在逻辑上处理磁盘扇区:两个“连续”磁盘扇区物理上并不接近,因为hard disk 控制器正在重新映射他们。另请阅读SATA。一些控制器甚至能够重新排序待处理的磁盘请求。

      顺便说一句,SSD 没有任何物理几何形状(对于扇区),但确实给出了扇区编号的外观。

      此外,操作系统内核(尤其是 Linux)正在管理page cache,因此write 通常不会直接写入磁盘。参见例如sync(2) 系统调用。

      最后,write(2) 是(在 Linux 和大多数 Unix 上)syscall,并且发生在内核内部。因此,您将无法在 libc 中更改其行为。

      另请阅读SMART

      【讨论】:

      • 感谢您的回答。好吧,我已经阅读了有关同步的内容,目前我在一些磁盘基准测试中使用了它。我做了一个 LD_PRELOAD 包装器来过滤 write/lseek 函数。也许这是跟踪随机和顺序访问的一个好的开始。没有?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2016-06-07
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      相关资源
      最近更新 更多