3

我们大约每 10 秒经历一次对磁盘的“脉冲”写入(从 1 次写入/秒脉冲到 142+ 次写入/秒)。

请参阅此示例图像: 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 软件镜像。

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

4

1 回答 1

3

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

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

于 2013-07-15T23:01:15.060 回答