2014-10-05 18 views
2

我有興趣編寫一個性能分析器(只是爲了好玩)。我想跟蹤Linux中的上下文切換,以便我可以記錄線程(屬於正在分析的進程)的上下文切換和上下文切換之間的時間。除了時間之外,我還想記錄相關的調用堆棧(在與先前記錄的堆棧不同的情況下)。是否有可用於跟蹤上下文切換的Linux系統API?

此外,我想知道是否有什麼東西類似於Linux在Linux上的ETW? PS:我確實嘗試過在線搜索,但找不到任何相關信息。該方法似乎是使用基於計時器的信號,但我覺得這樣做會不準確。

回答

2

看看http://en.wikipedia.org/wiki/DTrace(它在許多Linux發行版上都可用)。除此之外,還可以通過儀器上下文切換來獲取該信息。

它與* nix上的ETW最爲相似。

而且linux_perf可能已經做你想做什麼 - https://perf.wiki.kernel.org/index.php/Main_Page

你不是你真正想要的很清楚,所以希望這些指針的幫助。

+0

對不起,你沒有找到我的問題清楚。每當感興趣的進程的線程涉及上下文切換時,我都想要回調。這樣,我想記錄在CPU上執行的時間,調用堆棧和其他細節。基本上,只有當感興趣的線程切換到上下文時,我纔想從中讀取相關數據(如時間,調用堆棧,IP等)(否則我將不得不根據定時器進行採樣)。如果我仍不清楚,請告訴我。我會檢查你提到的鏈接。 – Krishna 2014-10-20 19:15:24