2

我一直在使用 pstack(定期在循环中调用)来代替真正的分析工具。我注意到,即使顶部的该 pid 的 cpu 使用率超过 85%,pstack 显示 pid 在 I/O 上被阻塞的频率比 CPU 受限的频率更高。

pstack 是如何实现的?当 pstack 在 I/O 上实际被阻塞时,是否有任何理由更容易附加到 pid?

4

1 回答 1

0

您说您pstack在循环中定期调用 - 即在与您正在分析的进程 (A) 不同的进程 (B) 中。如果它们在单核中运行,那么当 A 被阻塞时,B 更有可能“唤醒”。

无论如何,我会pstack手动触发,理论上不需要太多样本。相反,我得到的样本需要仔细检查,而不仅仅是集中在一起。

一般来说,最好在 I/O 时间和 CPU 时间进行采样,因为 I/O 和 CPU 浪费都会使您的程序变慢。如果它有点夸大其中之一,那是相当无害的,假设您的真正目标是精确识别要优化的事物,而不是仅仅获得模糊事物(如函数)的精确测量。

于 2012-11-15T14:27:37.733 回答