プログラミングチューニングのために
Linuxを前提にしています。
time system OSが要したCPU時間 real 実際にかかった時間 user プログラムが使ったCPU時間
ps ps auxww | grep プログラム %CPU cpu使用率 VSZ 仮想メモリ使用量 RSS 物理メモリ使用量 STAT プロセス状態 TIME cpu使用時間
vmstat
uptime ロードアベレージを出力します。
top システム全体の負荷 プロセス, CPU, メモリ, スワップの統計情報 などのプロセス情報一覧
top -p プロセスID とすることで実行プロセスの情報を表示し続けることができます。 NI … プロセスの相対優先度(0を基準とし、-20(優先度高) ~ 19(優先度低)で表している) VIRT … プロセスの仮想メモリーサイズ(スワップアウトしたメモリー使用量を加えたメモリー容量) RES … プロセスの使用しているメモリー容量(物理メモリー容量) SHR … プロセスの使用している共有メモリー容量 S … プロセスの状態
プロセスの状態は S … スリープ T … 停止中 D … 割り込み不可(sleep) N … ナイス値がプラスの状態 < … ナイス値がマイナスの状態 R … 実行中 Z … ゾンビ状態 W … スワップアウト状態
sar cpu user nice system iowaitなどの平均が取得できる。 統計情報 sar -r
profile
strace プログラムが発行するシステムコールを出力することができます。 strace -p プロセスID とすることで実行プログラムのstaraceができます。 また strace -c でシステムコールの統計情報がでます。 strace -e システムコール で特定のシステムコールの情報だけを出力させることが出来ます。
strace -T でシステムコールの実行時間が出力されます。
参考 http://blog.livedoor.jp/sonots/archives/18193659.html http://www.intellilink.co.jp/article/column/oss11.html https://blogs.oracle.com/solairo/entry/ksplice_strace
/proc/pid /proc/cpu
/proc/meminfo
gdb gdb -p プロセスID とすることで実行中のプログラムのデバッグが出来ます。