【问题标题】:Performance Overhead of Perf Event Subsystem in Linux KernelLinux内核中Perf事件子系统的性能开销
【发布时间】:2011-02-17 03:52:47
【问题描述】:

Linux 的性能计数器是一个新的基于内核的子系统,它为所有事物的性能分析提供了一个框架。它还涵盖了硬件级别(CPU/PMU、性能监控单元)功能和软件功能(软件计数器、跟踪点)。 从 2.6.33 开始,内核提供 'perf_event_create_kernel_counter' 内核 api 供开发人员创建内核计数器以收集系统运行时信息。我最关心的是启用 tracepoint/ftrace 时对整个系统的性能影响。我找不到关于它们的文档。曾经有人告诉我,ftrace 是通过动态修补代码来实现的,它会大大降低系统速度吗?

【问题讨论】:

  • perf 的目的是尽可能减少影响,具体影响多少取决于你用它做什么

标签: profiling linux-kernel performancecounter overhead ftrace


【解决方案1】:

动态修补用于在未激活跟踪时最大限度地减少开销。基于 PMU 的硬件计数器的开销应取决于您采样的不同事件的数量以及频率。它可能足够低,您可以根据需要找到可接受的配置。我会尝试启用您感兴趣的任何信息收集,仔细设置频率,然后凭经验检查开销是否可以接受。

【讨论】:

    【解决方案2】:

    那些东西被放进去是因为人们认为它们可能有用,而且毫无疑问它们可以收集到有趣的信息。如果这是目标,那很好。

    但是,如果目标是调整软件以获得更高的性能,那么它们几乎没有诊断价值。

    它们可以提供有趣的测量结果,但它们不会告诉您要修复什么

    This method does tell you what to fix.

    【讨论】:

    • 嗯,我的目标是在生产机器上运行长期分析,所以性能开销是我最关心的。
    • @Bo:我认为,对于健康的长期监测,您可能不需要高频率收集的信息——这更多的是整体时间问题。如果您有一些东西以如此高的频率收集信息以至于它可能会影响性能,我认为这将是比您可能理解的更多的信息。通常人们会进行“检测”(并且担心开销)以试图找到“瓶颈”(这不是一个好方法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2013-08-18
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多