2017-03-20 3 views
0

私は内部プロファイラのいくつかのフォームを実装しています。どのくらいの期間スレッドがコンテキストを切り替えるかを知る方法はありますか?私はウィンドウが知っているイベントは、APIをトレースしていると私はどのくらい多くのコンテキストスイッチが発生するperfログを知っている。それはLinux上で行う方法はありますか? root権限を必要とすることは、内部ツールになるため問題にはなりません。Linuxはコンテキストスイッチタイミングを取得します

+0

プロファイリングの*目的*が遅い理由を見つけることであると仮定したり、それと同等の方法でスピードを上げたりする場合、このようなタイミングは良い方法ではありません。むしろ、[状態をサンプリングする](http://stackoverflow.com/a/378024/23771)がうまく機能します。サンプルの小数部Xに現れるものは、それをどのように記述していても、それほど時間がかかりません。それを避けることができれば、対応する部分を保存します。タイミングの問題は、避けることができることを伝えることはずっと間接的です。 –

+0

フレームストールが自分のコードによって引き起こされていないという事実を知ることができれば便利です。私のコード内に問題がないときに、問題を探して時間を節約します。フレームごとのデータが必要なので、その特定のインスタンスを分離することができます。サンプルが見つからないものはそれほど素晴らしいものではありません。 – Temp4890

答えて

2

並べ替え

getrusage()機能については、http://man7.org/linux/man-pages/man2/getrusage.2.htmlを参照してください。

返される構造には、任意のコンテキストスイッチ番号と非自発的なコンテキストスイッチ番号があります。また、ユーザーとシステムの時間があります。他のAPIはウォールクロック時間を返します。

ユーザとシステムの時間よりも大きい壁時計の時間は、あなたが走っていない時間です。

これ以外にも、おそらくカーネルのftrace機能を使用できます。さらに多くのオプションについてはhttps://www.kernel.org/doc/Documentation/trace/ftrace.txt

をご覧ください。http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.htmlをご覧ください。

+0

ありがとうございます。私はこれについてしばらくの間グーグルで行っていた。私はそれをするための何らかの方法がなければならないことを知っていました。 – Temp4890

関連する問題