4.3.6. プロセスごとのシステムコールボリュームの追跡
このセクションでは、最もボリュームの大きいシステムコールを実行しているプロセスを判定する方法を説明します。ここまでのセクションでは、システムが使用している上位のシステムコールを監視する方法を説明しました (「最もよく使われるシステムコールの追跡」)。また、どのアプリケーションが最も多く特定の「ポーリング容疑者」のシステムコールを使用しているかを特定する方法も説明しました (「ポーリングアプリケーションの監視」)。プロセスごとのシステムコールのボリュームを監視することで、ポーリングプロセスおよび他のリソースの大量消費についてシステムを調査する際により多くのデータが提供できます。
syscalls_by_proc.stp
syscalls_by_proc.stp は、システムコールを多く実行している上位 20 位のプロセスを一覧表示します。また、一定期間内に各プロセスが実行したシステムコールの数も表示されます。例4.16「topsys.stp のサンプル出力」 がサンプル出力になります。
例4.16 topsys.stp のサンプル出力
プロセス名の代わりにプロセス ID を表示するには、以下のスクリプトを使用します。
syscalls_by_pid.stp
出力で表示されているように、結果を表示するにはスクリプトを手動で終了する必要があります。どちらのスクリプトにも
timer.s()
プローブを追加して、一定時間後に終了させることができます。たとえば、5 秒後にスクリプトを終了させるには、以下のプローブをスクリプトに追加します。
probe timer.s(5) { exit() }
probe timer.s(5)
{
exit()
}