我们正在经历对磁盘的“脉冲”写入(从1次写入/秒脉冲到最多142次写入/秒)每10秒钟左右。
我们挖掘了这些“脉冲”写入,发现它们与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软件镜像。
任何建议,帮助和提示将不胜感激。提前谢谢。
答案 0 :(得分:3)
您看到的脉冲I / O模式是许多/大多数文件系统写入都是异步的应用程序的特征 - 这是因为文件系统将批量写入,因此它可以同时执行许多操作以避免执行一个磁盘寻求每次写作。我能想到的最常见的例子是数据库写入数据 - 除了数据库的预写日志之外,所有内容通常都是异步写入的;其他事务访问模式往往类似,因为如果崩溃中丢失了某些异步写入,它们会有一个预写日志来恢复。这是一种常见的访问模式,并不一定是个问题,但是当磁盘碎片很多而且文件系统无法批量写入所有内容时(例如它试图避免)会导致许多搜索,这可能会成为一个问题。
您看到的DTrace / iotop错误意味着DTrace实现本身或iotop
DTrace脚本中存在错误。查看iotop
的源代码(在OS X上的/usr/bin/iotop
中),有三个io:::start
回调可能是罪魁祸首。对于某些类型的I / O,脚本中可能存在某种类型的空指针访问,但它看起来不太可能基于脚本和io:::start
探测器所采用的参数。也许这最好通过向Apple提交的错误报告来解决。