在执行特定功能期间监视性能计数器

时间:2019-02-25 02:19:24

标签: c linux memcached perf

对于某些情况,我正在分析Memcached的执行情况,并且我想监视特定功能执行期间的dTLB丢失。假设Memcached产生了多个线程,则每个线程都可能并行执行该函数。我发现的一个特定解决方案是Perf功能切换事件(Using perf probe to monitor performance stats during a particular function),应该让我通过在函数入口和出口设置探针并分别在每个探针上打开/关闭事件计数器来实现此目的。

我的问题是:

(a)据我了解,性能切换事件是Linux内核3.x分支的一部分。这是否已合并到Linux内核4.x的最新LTS版本中?如果没有,还有其他选择吗?

(b)我发现了另一个解决方法:performance monitoring for subset of process execution。但是我不太确定这是否可以解决当前的问题。我担心,因为Memcached是多线程的,因此让每个线程产生一个新的子进程可能会导致过多的开销。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我只能在/perf/core_toggle存储库中找到切换事件功能的实现,该功能由开发人员维护。您可能可以编译该代码并亲自使用该功能。您可以找到有关如何使用它的示例here。但是,我认为任何版本的内核都尚未在主要的Linux存储库中接受它。

如果要测量一个或多个事件的数量,则有一些易于使用的替代方法,但需要在代码库中添加几行代码。您可以通过编程方式使用perf interface或其他提供此类API的第三方工具,例如PAPILIKWID