DTraceで解析する流れ
ここ最近のFreeBSD DevSummitで感じることですが、
DTraceでトレースできる対象は随時追加されていますので、
DTraceは今後さらにパフォーマンス分析で中心的な役割を果たしていくと思います。便利なショートカット的なDスクリプトの情報も増えていくでしょう。DTraceに詳しいかどうかが開発者のスキルとして重要になっていくと考えられます。
しかしながら、
しばらく、
プロセッサパフォーマンスチェック
システム全体のプロセッサの使用状況を見るにはvmstat(8)コマンドを使います。cpuの項目にシステム全体のプロセッサの使用状況が表示されています。とくにusとsysの項目の合算でどの程度の負荷状態なのかがわかります。
% vmstat 1 procs memory page disks faults cpu r b w avm fre flt re pi po fr sr mf0 mf1 in sy cs us sy id 0 0 0 667M 186M 18 0 0 0 37 1 0 10312 19 408 201 0 0 100 0 0 0 667M 186M 3 0 0 0 0 3 0 13 25 124 228 0 0 100 0 0 0 667M 186M 1 0 0 0 0 3 0 0 6 132 91 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 30 126 228 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 6 132 100 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 49 92 132 699 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 17 126 187 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 2 132 81 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 8 0 8 127 87 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 2 126 83 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 14 132 195 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 2 132 82 0 0 100
プロセッサの合算値ではなく、
% vmstat -P 1 procs memory page disks faults cpu0 cpu1 cpu2 cpu3 r b w avm fre flt re pi po fr sr mf0 mf1 in sy cs us sy id us sy id us sy id us sy id 0 0 0 667M 186M 18 0 0 0 37 1 0 0 19 407 201 0 0 100 0 0 100 0 0 100 0 0 100 0 0 0 667M 186M 2 0 0 0 0 3 0 0 7 134 95 0 1 99 0 0 100 0 0 100 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 2 131 78 0 1 99 0 0 100 0 0 100 0 1 99 0 0 0 667M 186M 0 0 0 0 0 3 0 0 15 134 187 0 1 99 0 0 100 0 0 100 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 4 129 94 0 1 99 0 0 100 0 0 100 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 51 96 128 725 0 1 99 0 0 100 0 0 100 0 1 99 0 0 0 667M 186M 0 0 0 0 0 3 0 0 5 134 89 0 0 100 0 0 100 0 0 100 0 1 99 0 0 0 667M 186M 0 0 0 0 0 3 0 0 19 132 195 0 1 99 0 0 100 0 0 100 0 0 100 0 0 0 667M 186M 0 0 0 0 0 3 0 0 7 131 97 0 0 100 0 1 99 0 0 100 0 0 100
vmstat(8)と似た情報はtop(1)コマンドでも得られます。top(1)ではvmstat(8)で表示させたシステムまるごとのプロセッサの使用状況ではなく、
% top last pid: 48396; load averages: 0.29, 0.21, 0.22 up 4+10:46:53 21:32:45 40 processes: 1 running, 39 sleeping CPU: 0.0% user, 0.0% nice, 0.8% system, 0.0% interrupt, 99.2% idle Mem: 8640K Active, 1601M Inact, 6076M Wired, 341M Buf, 185M Free ARC: 4262M Total, 1027M MFU, 743M MRU, 16K Anon, 42M Header, 2450M Other Swap: 4096M Total, 1748K Used, 4094M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 48396 daichi 1 20 0 20120K 3568K CPU2 2 0:00 0.06% top 2356 root 1 20 0 10436K 2016K select 0 0:43 0.01% powerd 2379 daichi 1 20 0 25412K 6292K kqread 2 0:20 0.01% nginx 47925 daichi 1 20 0 83092K 8284K select 1 0:00 0.01% sshd 2353 root 1 20 0 20536K 12448K select 2 0:17 0.00% ntpd 2596 root 1 20 0 24104K 1812K select 1 0:05 0.00% sendmail 2311 root 1 52 0 12500K 3088K rpcsvc 1 0:01 0.00% rpc.lockd 2418 root 1 20 0 20600K 6656K select 0 0:05 0.00% sendmail 2425 root 1 20 0 12564K 2492K nanslp 3 0:01 0.00% cron
top(1)の方は-Sオプションを指定するとカーネルプロセスまで含めてどのプロセスがどの程度消費しているのかをチェックできます。
% top -S last pid: 48453; load averages: 0.27, 0.23, 0.22 up 4+10:48:39 21:34:31 64 processes: 2 running, 61 sleeping, 1 waiting CPU: 0.0% user, 0.0% nice, 0.3% system, 0.0% interrupt, 99.7% idle Mem: 8560K Active, 1601M Inact, 6076M Wired, 341M Buf, 185M Free ARC: 4262M Total, 1027M MFU, 743M MRU, 16K Anon, 42M Header, 2450M Other Swap: 4096M Total, 1748K Used, 4094M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 11 root 4 155 ki31 0K 64K CPU0 0 426.6H 399.24% idle 0 root 262 -16 - 0K 4192K swapin 0 0:46 0.35% kernel 12 root 15 -72 - 0K 240K WAIT 1 1:57 0.07% intr 48453 daichi 1 25 0 20120K 3568K CPU3 3 0:00 0.06% top 41 root 8 -8 - 0K 144K arc_re 3 0:35 0.05% zfskern 14 root 15 -68 - 0K 240K - 0 0:56 0.03% usb 13 root 3 -8 - 0K 48K - 3 0:19 0.03% geom 6 root 1 -16 - 0K 16K - 1 1:37 0.02% rand_harvestq 2356 root 1 20 0 10436K 2016K select 0 0:43 0.01% powerd 47925 daichi 1 20 0 83092K 8284K select 2 0:00 0.01% sshd 2353 root 1 20 0 20536K 12448K select 1 0:17 0.00% ntpd 2418 root 1 20 0 20600K 6656K select 0 0:05 0.00% sendmail
システム全体のプロセッサ使用状況についてはuptime(1)コマンドでも確認できます。load averageの項目がそれです。この部分がコア/論理コア(スレッド)の個数よりも大きな値を占めているようだと、
% uptime 9:35PM up 4 days, 10:50, 1 users, load averages: 0.32, 0.24, 0.23 %
ハードウェアよりになってきますが、
勉強会
第58回 11月29日(火) 19:00- FreeBSD勉強会
2016年11月29日(火)には佐藤広生先生をお招きして第58回FreeBSD勉強会をドワンゴセミナールームで開催します。FreeBSD ZFS性能測定とチューニングのお話をしていただく予定です。第58回FreeBSD勉強会では、
参加申請はこちらから。
第59回 12月21日(水) 19:00- FreeBSD勉強会
ストレージシステムの基盤として使われることの多いZFS。いったん運用を開始あるとあとはボリュームの管理や、
参加申請はこちらから。