2.7.9 演習: システムのコンテキスト・スイッチのカウント

タイムスタンプを表示して、1秒に一度、CPUごとのコンテキスト・スイッチの回数とすべてのCPUの合計回数をCPU番号または"total"とともに表示するcswpercpu.dという実行可能なDプログラムを作成してください。

  • BEGINプローブを使用して、TimestampCPUおよびNcswというラベルの列が表示されるヘッダーを出力します。

  • sched:::on-cpuプローブを使用してコンテキスト・スイッチの終了を検出し、プローブが実行されたコンテキストのCPU番号をlltostr()を使用して文字列に変換し、count()を使用して集積変数@nを増分します(キー値にCPU番号の文字列が設定されたとき、およびキー値に"total"が設定されたとき)。

    sched:::on-cpuプローブの詳細は、Oracle® Linux: DTraceガイドschedプロバイダを参照してください。

  • profile:::tick-1secプローブを使用し、printf()を使用してデータおよび時間を出力し、printa()を使用してキー(CPU番号文字列または"total")および集積値を出力します。 日付と時間は、%Y変換形式を使用して出力できるwalltimestamp変数の値として利用できます。

  • clear()を使用して、集積変数@nをリセットします。

(予想完了時間: 40分)