具有dtrace错误的高写入I / O“脉冲”

时间:2013-07-03 12:58:35

标签: macos dtrace

我们正在经历对磁盘的“脉冲”写入(从1次写入/秒脉冲到最多142次写入/秒)每10秒钟左右。

查看此示例图片: https://discussions.apple.com/servlet/JiveServlet/showImage/2-22394173-269851/Screen+Shot+2013-07-03+at+13.22.28.png

我们挖掘了这些“脉冲”写入,发现它们与IOTOP的这些错误完全同时发生:

dtrace: error on enabled probe ID 5 (ID 992: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0

“脉冲”仅在上述错误出现在IOTOP中时才会发生。

注意:我们正在为两个驱动器运行Apple RAID软件镜像。

任何建议,帮助和提示将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:3)

您看到的脉冲I / O模式是许多/大多数文件系统写入都是异步的应用程序的特征 - 这是因为文件系统将批量写入,因此它可以同时执行许多操作以避免执行一个磁盘寻求每次写作。我能想到的最常见的例子是数据库写入数据 - 除了数据库的预写日志之外,所有内容通常都是异步写入的;其他事务访问模式往往类似,因为如果崩溃中丢失了某些异步写入,它们会有一个预写日志来恢复。这是一种常见的访问模式,并不一定是个问题,但是当磁盘碎片很多而且文件系统无法批量写入所有内容时(例如它试图避免)会导致许多搜索,这可能会成为一个问题。

您看到的DTrace / iotop错误意味着DTrace实现本身或iotop DTrace脚本中存在错误。查看iotop的源代码(在OS X上的/usr/bin/iotop中),有三个io:::start回调可能是罪魁祸首。对于某些类型的I / O,脚本中可能存在某种类型的空指针访问,但它看起来不太可能基于脚本和io:::start探测器所采用的参数。也许这最好通过向Apple提交的错误报告来解决。