【问题标题】:Why does a read(2) call on Linux spend several milliseconds more than what is spent on disk IO?为什么 Linux 上的 read(2) 调用花费的时间比磁盘 IO 上花费的时间多几毫秒?
【发布时间】:2012-04-06 23:07:50
【问题描述】:

我在一个带有 SATA 磁盘的 linux 机器上对同步读取性能进行了基准测试。我用gettimeofday(2) 为每个读取调用计时,并在程序运行时触发iostat -x 以查看磁盘统计信息。在 await 列上iostat 显示的磁盘 IO 时间平均约为 8 毫秒,但程序给出的读取时间平均约为 12 毫秒。这 4 毫秒可以用在哪里?

【问题讨论】:

  • 请注意,gettimeofday 不是进行性能计时的最佳方式,它会受到时钟变化的影响,例如ntpd。见stackoverflow.com/questions/88/…
  • 不要像以前那样在 Stack Overflow 上发布测试帖子。这样做可能会导致管理员采取进一步的行动。

标签: linux io


【解决方案1】:

复制内存、进行上下文切换和运行其他进程。

其他进程可以在您的读取开始之前或完成之后被调度和运行,这将延长您的进程看到的时间。

【讨论】:

  • 谢谢,由于基准测试时CPU不忙,所以你提到的可能不会花费几毫秒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 2018-11-05
相关资源
最近更新 更多