私のプロセスが多くのコンテキスト切り替えを実行していることを確認したいと思います。また、ワークグループの運用がコンテキストコンバージョン数にどのように影響するかを理解したいと思います。
答え1
でプロセスコンテキストスイッチに関する情報を表示できます/proc/<pid>/status
。
$ pid=307
$ grep ctxt /proc/$pid/status
voluntary_ctxt_switches: 41
nonvoluntary_ctxt_switches: 16
更新された番号を表示するには、次を実行します。
$ # Update twice a second.
$ watch -n.5 grep ctxt /proc/$pid/status
数値のみを取得するには、次のように実行します。
$ grep ctxt /proc/$pid/status | awk '{ print $2 }'
答え2
pidstat(1) - Linux ジョブに関する統計を報告します。彼によるとman pidstat
とても簡単です。pidstat -w …
答え3
バラより男が情報を得るこれにより、自発的および非自発的なコンテキスト遷移の数を照会できます。
struct rusage {
struct timeval ru_utime; /* user CPU time used */
struct timeval ru_stime; /* system CPU time used */
long ru_maxrss; /* maximum resident set size */
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims (soft page faults) */
long ru_majflt; /* page faults (hard page faults) */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* IPC messages sent */
long ru_msgrcv; /* IPC messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary context switches */
};
次のようにスレッド固有の情報を報告するように指示できます。
struct rusage usage;
getrusage( RUSAGE_THREAD, &usage );
しきい値セクションの前後に 2 回呼び出して、use.ru_nivcsw の値が増加することを確認します。
答え4
sar -w
たとえば、1秒あたりのコンテキストコンバージョンの合計数を報告するために使用でき、sar -w 1 3
1秒ごとに合計3回報告します。