1

Linux カーネル上でアプリケーション (単純な C コード) を実行しています。コードの 2 点間の時間を測定しています。これら 2 つのポイントの間で、他のプロセスまたはスケジューラ自体がアプリケーションをプリエンプトしたかどうかを知りたいです。これを見つける方法はありますか。

4

1 に答える 1

1

コード内の 2 点間でコンテキストの切り替えがあったかどうかを識別する 1 つの方法は、次を使用することです。

getrusage(int who, struct rusage *usage)

ru_nvcswru_nivcswの値を呼び出して比較する

   struct rusage {
       ...
       long   ru_nvcsw;         /* voluntary context switches */
       long   ru_nivcsw;        /* involuntary context switches */
   };
于 2015-10-04T05:48:08.330 に答える