我该怎么做才能找到 pread64/pwrite64 挂起的原因?

Posted

技术标签:

【中文标题】我该怎么做才能找到 pread64/pwrite64 挂起的原因?【英文标题】:What can I do to find the cause of pread64/pwrite64 hangs? 【发布时间】:2011-07-01 07:20:09 【问题描述】:

我的应用程序正在使用 pread64/pwrite64 对原始 /dev/sdb 块设备执行一些繁重的 IO。有时它做得很好。调用 pread64/pwrite64 通常只需 50-100us。但有时需要更长的时间,最多几秒钟。

您有什么建议可以找到导致此类问题的原因?

【问题讨论】:

【参考方案1】:

我没用过,但听说有一个叫latencytop的工具。

【讨论】:

latencytop 对我的情况没有用。我已经知道哪些特定操作会导致挂起。但我想知道这种挂起的原因。但无论如何,谢谢你提到这样一个工具。我不知道。 @Sergej:如果您深入研究它,看起来内核对latencytop 的支持存储了完整的回溯,而不仅仅是系统调用。有了它,您应该能够看到在慢速 pread64 期间调用了哪些内核函数。 怎么做?我没有找到任何关于它的信息。【参考方案2】:

当它像这样挂起时,抓住stackshot。另一个选项是 pstacklsstack。 正如@Zan 指出的那样,latencytop 也可以为您提供这些信息。

这可能无法完全回答您的问题,但至少您可以肯定地知道它在挂起时试图做什么。

【讨论】:

以上是关于我该怎么做才能找到 pread64/pwrite64 挂起的原因?的主要内容,如果未能解决你的问题,请参考以下文章

我该怎么做才能使整数每次都随机[重复]

尝试打开 phpmyadmin 时出现错误 403。我该怎么做才能纠正它?

我该怎么做才能处理WebServiceException:

我该怎么做才能有没有符号的数字?

在某些情况下,我该怎么做才能使这个 SQL 返回结果?

我该怎么做才能让画布在不同的浏览器中工作[关闭]