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系統上,它變得非常重要。

原作者:
...