Linux的性能计数器是一个基于内核的新子系统,提供了一个框架来进行性能分析。它涵盖了硬件级别(CPU/PMU,性能监测单元)特性和软件特性(软件计数器,跟踪点)。自2.6.33以来,内核提供了“perf_event_create_kernel_counter”内核API,供开发人员创建内核计数器以收集系统运行时信息。我最关心的是当启用跟踪点/ftrace时对整个系统的性能影响。我找不到任何文档有关它们的情况。我曾经被告知ftrace是通过动态修补代码实现的,它是否会显著地降低系统速度?
Linux的性能计数器是一个基于内核的新子系统,提供了一个框架来进行性能分析。它涵盖了硬件级别(CPU/PMU,性能监测单元)特性和软件特性(软件计数器,跟踪点)。自2.6.33以来,内核提供了“perf_event_create_kernel_counter”内核API,供开发人员创建内核计数器以收集系统运行时信息。我最关心的是当启用跟踪点/ftrace时对整个系统的性能影响。我找不到任何文档有关它们的情况。我曾经被告知ftrace是通过动态修补代码实现的,它是否会显著地降低系统速度?
动态修补被用作一种在未激活跟踪时最小化开销的方式。基于PMU的硬件计数器的开销应该取决于你正在采样多少不同的事件以及采样频率。根据你的需求,它可能足够低,让你找到一个可接受的配置。我建议尝试启用你感兴趣的任何信息收集,仔细设置频率,然后通过实证检查开销是否可接受。
人们加入这些东西是因为认为它们可能有用,毫无疑问,它们可以收集有趣的信息。如果这是目标,那很好。
然而,如果目标是为了调整软件以提高性能,它们在诊断价值上没有多少作用。
它们可以提供有趣的测量结果,但它们并不告诉您要修复什么问题。