2009-05-24 30 views
2

我一直在爲我的論文處理這個問題。 目標是開發專門用於Windows 2K8服務器的.net服務器監控工具。到目前爲止,我可以訪問的只有軟件性能計數器。意思是那些通過perfmon和WMI類可用的。如何編寫硬件性能計數器

但是,還有一個問題是我需要能夠監視諸如發生的TLB未命中數量或當前內存帶寬等事情。這就是我被卡住的地方...... 由於沒有標準的.net方法來獲取這些計數器,我一直在閱讀一些來自開源軟件如Oprofile的代碼。但因爲我不知道我在找什麼,所以在這方面沒有取得太多的進展。

所以我虛心地問是否有人在這裏,誰有這種事情的經驗,可以幫助我一點點。

在此先感謝。

回答

3

用於讀取性能計數器的應用最廣泛的庫是Performance API (PAPI)。 PAPI實際上是兩個API(high-levellow-level)。我傾向於使用低級別的,因爲我覺得它更直觀,但那可能就是我。

PAPI中有兩種類型的事件。 Preset events應該是平臺不可知的,儘管它們可以根據它們在內部的計數方式巧妙地不同。他們確實包括TLB失誤和記憶檔,所以也許你可以從那裏開始。如果這不符合您的需求,您可能需要查看本地事件,這些事件特定於您的特定硬件,並且通常包括硬件可以計數的所有事件。使用papi_native_aval獲取這些列表。

PAPI支持Windows,但我從來沒有嘗試過。我無法在專門提到Windows 2008的文檔/自述文件中找到任何內容,但至少也許可以通過源代碼查看如何訪問所需的計數器,即使無法直接訪問它們。

如果您需要更多,那麼可以看看perfmon2,如果可用的話,PAPI的新版本可以在Linux上使用。

+0

非常感謝,我一定會馬上看到這個! 如果我還有其他問題,我會回來^^ – 2009-05-24 11:18:19