我一直在使用pstack(定期循环调用)作为真正的分析工具的替代品。我注意到即使顶部的pid有超过85%的cpu使用率,pstack也会显示pid在I / O上被阻塞的频率高于CPU限制。
如何实施pstack?有什么理由说当pstack在I / O上被阻塞时更容易附着到pid上吗?
答案 0 :(得分:0)
你说你在一个循环中定期调用pstack
- 即在与你正在分析的一个单独的过程(B)中(A)。如果它们在单个核心中运行,那么当A被阻止时,B更有可能“醒来”。
无论如何,我会手动触发pstack
,理论上不需要很多样本。相反,我做的样本需要仔细检查,而不仅仅是集中在一起。
通常,在I / O时间和CPU时间内采样是很好的,因为I / O和CPU浪费都会使程序变慢。 如果它有点膨胀,这是相当无害的,假设你的真正目标是精确地识别要优化的东西,而不是仅仅对函数等模糊事物进行精确测量。