2010-06-23 44 views
2

我剛剛讀完this article關於如何創建一個性能計數器並更新計數器的值。但是我對Windows性能計數器的工作範式有點困惑。假設有2個節目A和B,A想通過一些性能計數器知道B的性能。以下哪種情況是正確的?什麼是Windows性能計數器的工作範式?

  • B在Windows中創建/註冊一些性能計數器,B負責更新計數器的值。 A可能是系統perfmon.exe。 A沒有主動探測B的執行狀態。 A只需檢查已註冊的計數器並獲取由B提供和更新的值。即使沒有A,B仍會始終更新其註冊的性能計數器。但是這對B的表現不是一種負擔嗎?

  • A主動探測B的執行狀態並計算出性能計數器的值。在這個範例中,B沒有任何額外的布爾特。

    簡而言之,誰負責創建和更新性能計數器?目標程序的性能正在被測量嗎?還是測量目標程序性能的主題程序?對於方案A,這是一種探測情景嗎?或只是一個閱讀場景?

非常感謝。

回答

1

Performance Counters可能是一個有趣的問題,但您的總體目標是什麼?您是否有興趣瞭解如何讓程序更快運行?

如果不是,請忽略此答案。

如果是這樣,那麼有一種觀點認爲績效指標是爲了計算事物而存在的,這些指標是您想要衡量的。此外,它表示,衡量是否適合查看您修正的問題是否有所作爲,但在找出性能問題(瓶頸)的確切位置方面幫助不大。

如果有瓶頸(有可能是),如果刪除會導致有些減少百分比的時間(如30%),然後是最大的,最明顯的線索是,這是什麼

  • 該程序在30%的時間內正在做什麼?

如果您隨機抽取10個樣本,然後在10個樣本中選擇3個(或多或少),您將會「在行爲上抓住它」來解決瓶頸問題。注意一件事 - 我們問「什麼」。我們不是問「多少」。

事實上,它需要時間是什麼使它很容易找到。調試很難 - 你必須跟蹤執行並捕捉錯誤。發現瓶頸很簡單 - 他們將自己暴露給你。

您無需爲了查找而進行測量。一旦找到,你可以測量。 Here's more on that subject.

+0

感謝您的回答。我不得不說,在「表現計數器」這個詞中,「表現」比「櫃檯」更吸引我,現在我知道他們只不過是「櫃檯」,他們只能顯示結果,而不是表現的原因。 – smwikipedia 2010-06-24 06:36:56

+0

我感興趣的是誰負責更新櫃檯價值。該值是由正在計數的程序推動的,還是由查詢計數值的程序拉動的。 – smwikipedia 2010-06-24 06:39:53