探查器是不是会错过花在被阻止呼叫上的时间?

Posted

技术标签:

【中文标题】探查器是不是会错过花在被阻止呼叫上的时间?【英文标题】:Could profiler be missing time spent on blocked call?探查器是否会错过花在被阻止呼叫上的时间? 【发布时间】:2014-08-19 00:51:46 【问题描述】:

我正在使用 Visual Studio 2013 分析器,使用采样模式分析应用程序。有时,应用程序使用 .net 远程处理对远程进程进行阻塞调用。有时这个调用会等待很长时间才能得到响应。例如,在 30 秒的时间间隔内,它可能会花费 10 秒等待响应。我希望它会显示为热点,因为对远程进程的调用将出现在许多样本的堆栈中。但是,事实并非如此。在调用方法上花费的时间可以忽略不计。有解释吗?

【问题讨论】:

【参考方案1】:

在采样模式下,该分析器不会在线程被阻塞时进行采样。 因此它对 I/O 视而不见,即使它需要 99.9% 的时间。 (他们称之为“CPU 采样”,试图让它听起来像一个功能。)

在检测模式下,它通过计时器而不是样本工作,因此它包括阻塞时间,但它只提供函数级分辨率。

this question 的第二个回答列出了所有这些问题。

【讨论】:

【参考方案2】:

热点与 CPU 利用率有关,在这种情况下阻塞的线程不符合条件,所以您看到的是正确的。

【讨论】:

以上是关于探查器是不是会错过花在被阻止呼叫上的时间?的主要内容,如果未能解决你的问题,请参考以下文章

设置“期望大小:0”是不是会阻止集群自动缩放器扩展托管节点组?

noindex 标签是不是会阻止机器人抓取页面上的链接?

谷歌浏览器显示XHR呼叫的状态为(阻止:其他)

使用会话管理器连接到 EC2 上的 django 项目突然被阻止

CSS Id 选择器阻止所有内容在 Android 10 上的 Xamarin.Forms WebView 中显示

从托管在被 CORS 策略阻止的 Asp.net 核心 Web 服务器中的 Angular 应用程序调用我的休息服务