我是新来的英特尔VTune。所以,我有一个普遍的怀疑。
我正在尝试用VTune配置一个应用程序,并想知道VTune核心的位置。
VTune在分析应用程序时占用多少核?
是否依赖于操作系统?
从硬件PMU事件收集数据只需要在运行所分析代码的内核上的中断处理程序中做一点工作。这是故意相当轻的重量,比如只在计数器环绕时触发。这是一个"样本"。如果你运行的是相当于perf record
而不是perf stat
的东西:CPU必须将该事件与指令地址相关联,即使是像cycles
这样的事件,CPU正在忙着处理数百条指令。
分析器将调整包装阈值以生成具有有用频率的事件(因此您甚至可以获得一些罕见事件的样本,但对于常见事件,您不会花费所有CPU时间来处理中断)。
IDK,如果VTune在收集配置文件时对该数据进行任何实时可视化;如果是这样的话,那将发生在VTune进程本身,无论最终运行在哪个内核上,根据操作系统调度它。
VTune当然能够"在后台"运行。(通过在某些核心上分时),而它正在监视使用所有核心的作业。有些版本可以很好地处理这个问题,而其他版本(结合特定的内核版本)在监控使用所有内核的作业时(例如,大量丢失的样本)会遇到困难。(考虑到内核的数量惊人& &;线程,这一点也不奇怪。)
根据我的观察,VTune在作业运行时不做任何重要的后处理(甚至不压缩输出文件)。"report"通常在被测作业完成后运行,但也可以延迟到一个独立的步骤,以便在您方便时运行。可视化和后处理是由"查看器"完成的,而不是由"收集器"完成的,因此它不会与正在调查的应用程序争夺处理资源。这是"经典"的。VTune的版本,将结果保存到本地文件。
还有一个版本运行web服务器来托管"查看器";功能,但我从来没有尝试过在我的环境中使用它。