performance - 如何测量?

  显示原文与译文双语对照的内容
0 0

当我进行性能调优时,我首先要在高级别工作,并尝试回答这个cpu绑定或者io绑定。

当我确保这是cpu绑定时,我将尝试通过添加一些计时器 code.This 来找到热点,但我无法找到这些问题:

  1. 高速缓存未命中的次数
  2. 线程上下文效果。

有人知道如何测量这些项目?

时间: 原作者:

0 0

你是否对性能调优有不同的思考方式?
它不查看 I/O vs CPU绑定,热点和计时器。

首先,考虑一个线程。 线程的执行非常类似于树。 有一个主要的函数( 躯干) 。 子例程被称为( 分支)的时候。 有终端指令( 树叶) 和阻塞调用如 I/O ( 水果) 。 程序的总时间是所有的叶子和所有的果实的总和。

你要做的是修剪树,使它尽可能的轻,不杀死它。

许多人做的是重量( 时间),然后重量它的中的部分,希望找到热点( 多分支分支) 可以能会修剪。

另一种方法是选择一些leave或者水果。 2 ) 从每个叶子或者果果中,沿着它所在的分支绘制一条线,所有的路回到主干。 3 ) 注意在它的上绘制了> 1 行的分支。 4 ) 询问"我需要这个分支"。 如果你能修剪它,那么做吧。 你会去掉树枝的全部重量,而你却没有称重。 然后重新开始。

这就是随机暂停的思想。 它会找到一些类型的问题,但它们中的大部分会发现,包括任何时间线程。

原作者:
0 0

1 ) 使用 cachegrind/callgrind/kcachegrind http://valgrind.org/info/tools.html#cachegrind 插件。

在分析特定假设下的内存局部性方面非常有用。

2 ) 正确配置线程非常痛苦。 在cpusets系统中使用和进程关联,在现代NUMA系统上,它变得非常重要。

原作者:
...