Linuxの性能関連のまとめ

性能測定コマンド

 sar   :システム稼動状況
 mpstat:CPU稼働状況
 vmstat:仮想メモリ稼働状況
 free  :メモリ情報
 iostat:ハードディスク,CPU使用状況
 ps    :プロセス情報
 top   :プロセス情報

目安

  • CPU
    • CPU使用率:90%以上
    • CPU待ちプロセス数:2より大きい(1CPUあたり)
  • メモリ
    • メモリ使用量:ページングの発生回数
  • ディスク
    • ディスク使用率:80%以上
  • ネットワーク
    • ネットワーク使用率:80%以上
    • パケット衝突回数:送信パケットの10%以上

sarコマンド

 # sar [オプション] [-o ファイル名] 取得間隔 取得回数
 -u:CPU:CPU使用状況
 -q:CPU:プロセスキュー、システム稼動負荷
 -r:メモリ:メモリ,スワップ領域使用状況
 -R:メモリ:メモリ動作状況
 -B:メモリ:ページング統計値
 -W:メモリ:スワッピング統計値
 -b:入出力:ディスク動作状況
 -d:入出力:ブロックデバイス動作状況
 -v:入出力:i-node、ファイル使用状況
 -c:カーネル:プロセス生成状況
 -w:カーネル:コンテキストスイッチ発生状況
 -x:アプリケーション: プロセス動作状況
 -n:ネットワーク:ネットワーク動作状況
 -A:その他 :すべてのデータを表示

※runq-sz÷CPU数>10
※ldavg-5÷CPU数>2
→CPU負荷が高く複数のプロセスがCPU待ちの可能性あり
  CPU,メモリ,IOを調査

vmstatコマンド

# vmstat 3 10
   procs                      memory    swap          io     system         cpu
 r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs  us  sy  id
 0  0  0      0 123604  89996 239012   0   0     0     4   26     7   0   0  26
 0  0  0      0 123604  89996 239012   0   0     0    11  102    11   0   0 100

proc(アクティブなプロセスの統計)
  r    :CPU へのアクセスを待っている実行可能なプロセスの数
  b    :割り込みできないスリープ状態にあるプロセスの数
memory(メモリの使用量に関する統計、キロバイト)
  swpd :使用されている仮想メモリ量
  free :空きメモリ量
  buff :バッファに使用されているメモリ量
  cache:ページキャッシュとして使用されているメモリ量
swap(スワップに関する統計、キロバイト/秒)
  si   :ディスクから swap インされたメモリ量
  so   :ディスクに swap アウトされたメモリ量
io(デバイスとのデータ転送量に関する統計、ブロック数/秒)
  bi   :ブロックデバイスに送られたブロック
  bo   :ブロックデバイスから受け取ったブロック
system(割り込みとコンテキストの切り替えレートに関する統計)
  in   :毎秒の割り込み数
  cs   :毎秒のコンテキストスイッチ数
cpu(CPU使用量の割合に関する統計、%)
  us   :CPU のユーザーレベルコード実行時間の割合
  sy   :CPU のシステムレベルコード実行時間の割合
  id   :CPU がアイドルだった時間の割合
  wa   :I/O 待機

※CPU使用率(us+sy):procsのrが頻繁に3以上ならCPU増設を検討
※メモリ:swapのsi,soはOであることが望ましい

freeコマンド

# free -s 5 (-s:間隔を指定)
              total       used       free     shared    buffers     cached
 Mem:        512844     389240     123604          0      89996     239024
 -/+ buffers/cache:      60220     452624
 Swap:      1048816          0    1048816

Mem              :物理メモリの使用状況を表示
-/+ buffers/cache:現在システムバッファに充てられている物理メモリ量を表示
Swap             :システムの swap 領域を表示

※shared、Swapの欄の値が大きくなってきたらメモリ増設を検討

iostatコマンド

# iostat 
avg-cpu:  %user   %nice    %sys   %idle
           6.11    2.56    2.15   89.18

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
dev3-0            1.68        15.69        22.42   31175836   44543290

※デバイスの指定、dev<major-number>-sequence-numberで表示され
  <major-number> はデバイスのメジャー番号で [1]<sequence-number>0 から始まる連番

毎秒ごとの転送数(または I/O 処理数)
毎秒 512 バイトブロックが読み込まれる数
毎秒 512 バイトブロックが書き込まれる数
512 バイトブロックが読み込まれた総計
512 バイトブロックが書き込まれた総計

psコマンド

# ps -el
# ps ax
# ps auw
  a  自分以外のユーザが実行しているプロセスも表示
  u  ユーザ名と開始時間を表示
  x  制御端末のないプロセスも表示
  w  出力幅が一行に収まらないときにも次の行を使って表示

topコマンド

 # top

メモリ使用量でソート
 → M
実メモリ使用量でソート
 → shift + o を押して n を押す
更新時間を短くする 
 → d を押して、秒数を指定(top -d1 でもOK)
色を付ける 
 → B もしくは z を押す / x を押すとソートしているカラムの色だけ反転表示 

watchコマンド

 # watch -n 1 -d free
  -n オプション:更新の間隔をコントロールする
  -d オプション:変化した部分をハイライトさせる

killコマンド

 # kill -l	利用できるシグナルの表示
 HUP	1	ハングアップ
 INT	2	割り込み(Ctrl+C)
 KILL	9	強制終了
 TERM 15	終了
 TSTP 18	サスペンド(Ctrl+Z)