0

ボトルネックがどこにあるかを理解するために、カーネルのコード フローをプロファイリングしたいと考えています。関数プロファイラーがまさにそれを行っていることがわかりました: https://lwn.net/Articles/370423/ 残念ながら、表示される出力は意味がありません。上記のリンクから、関数プロファイラーの出力は次のようになります。

 Function        Hit        Time              Avg
--------          ---       ----              ---   
schedule         22943    1994458706 us     86931.03 us

「時間」は、実行中にこの関数内で費やした合計時間です。したがって、function_B を呼び出す function_A がある場合、出力を正しく理解していれば、function_A について測定された「時間」には function_B の期間も含まれます。

実際にこれを自分の PC で実行すると、出力用に別の新しい列が表示されます。

Function           Hit     Time          Avg          s^2   
--------           ---     ----          ---          ---           
__do_page_fault    3077   477270.5us    155.109 us  148746.9us
(more functions..)

s^2 は何の略ですか? 平均よりも高いので、標準偏差とは言えません...

ユーザー空間からこのコード フローの合計時間を測定したところ、400 ミリ秒でした。s^2 列を合計すると、400 ミリ秒近くになりました。おそらく__do_page_faultで費やされた「純粋な」時間であり、ネストされた関数の期間は含まれていないと思います。

これは正しいです?s^2 列のドキュメントが見つからなかったので、結論については躊躇しています。

ありがとうございました!

4

1 に答える 1