2011-07-14 97 views
0

我正在嘗試計算我的系統中進程調用pull_task()的次數。 pull_task()是一個調度功能,用於將任務從繁忙CPU的runqueue移動到空閒CPU的runqueue。 我找不到任何簡單的機制(包括性能頂端)來找出這一點。跟蹤調用pull_task()以運行進程

在系統中有一個稱爲遷移的根進程,我有一個預感,這個進程可能負責調用pull_task()。但是我也不能在這個過程中附加strace,它會拋出以下錯誤:

attach:ptrace(PTRACE_ATTACH,...):不允許操作。

進程「遷移」的優先級是實時的。也許這就是斯特拉斯爲什麼不能重視它的原因?

請注意。謝謝。

回答

2

你需要看看Ftrace。這將在一段時間內給出系統中發生的所有內核函數調用的完整列表。

打開此功能示蹤劑是這樣的...

echo function > /sys/kernel/debug/tracing/current_tracer 

通過 貓/ SYS /內核/調試/查看跟蹤跟蹤/跟蹤

這些文章應該有所幫助:

Debugging with Ftrace part one

Debugging with Ftrace part two