SlideShare a Scribd company logo
iostat の await, svctm
の 見かた、考え方
2
免責事項/注意事項
 本資料において示されている見解は、私自身(柴田 歩)の
見解であり、Oracle Corporation 及び 日本オラクル社
の見解を必ずしも反映したものではありません。
予めご了承ください。
3
1章. 前提知識
4
 下記はiostat -x のログのサンプル
iostat -x 1
:
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 1.52 0.00 97.22
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 2000.00 88.00 208.80 0.14 13.70 8.00 8.00
sdb 0.00 … 0.00 24.00 8.00 0.09 31.33 21.67 6.50
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 0.25 0.00 98.48
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 2000.00 0.00 666.67 0.01 2.00 1.33 0.40
sdb 0.00 … 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:
iostat の ログ(サンプル)
5
 下記はiostat -x のログのサンプル
iostat -x 1
:
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 1.52 0.00 97.22
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 2000.00 88.00 208.80 0.14 13.70 8.00 8.00
sdb 0.00 … 0.00 24.00 8.00 0.09 31.33 21.67 6.50
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 0.25 0.00 98.48
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 2000.00 0.00 666.67 0.01 2.00 1.33 0.40
sdb 0.00 … 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:
await と svctm に 注目
ここに注目
6
考え方はこのモデル(M/M/1待ち行列)
実作業
担当者受付
お客様
お客様
お客様
7
Linux/UNIXなシステムに当てはめると、こう。
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
LU#1sda
※実際のシステムのI/Oはもっと複雑ですが、
解り易くするために抽象化して書いてます。
8
svctmの考え方
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSのデバイスからストレージ(等)に
投げられたI/Oリクエストが
返ってくるまでレスポンスタイム
sda LU#1
9
awaitの考え方
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
複数のユーザープロセスからOSのデバ
イスに投げられたI/Oリクエストが返っ
てくるまでの"平均"レスポンスタイム
(※一般的にsvctmを包含する。)
sda LU#1
10
2章. I/O遅延のパターン①
リクエスト数が多い。
11
I/O遅延のパターン①・リクエスト数が多い
HDD/SSD/
ストレージ等
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSのデバイス
/dev/sda
数が多過ぎて
捌き切れない!
僕は楽勝~~♪
遅いなぁ…
svctm は 良好だが、
await が 悪くなるケース
LU#1sda
12
 下記はiostat -x のログのサンプル ※数字もサンプルです。
iostat -x 1
:
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 1.52 0.00 97.22
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1.55 100.03
sdb 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1.55 100.03
:
この状況の時のiostatログ
await >>> svctm な状況
13
M/M/1待ち行列
14
M/M/1の公式
IT Pro ネットワークの数学
M/M/1 より引用
http://itpro.nikkeibp.co.jp/
article/COLUMN/2006092
0/248528/
15
M/M/1の公式とsvctm、awaitの関係
svctmに相当
awaitに相当
IT Pro ネットワークの数学
M/M/1 より引用
http://itpro.nikkeibp.co.jp/
article/COLUMN/2006092
0/248528/
16
 下記の仮定をM/M/1公式に当てはめてグラフ化すると……
M/M/1の公式に下記の仮定を当てはめると…
変数名 定義
ρ(到着率) λ÷μ
単位時間 1sec(と定義)
先頭処理のレスポンス(Ts) 0.001sec(と定義)
μ(単位時間あたりの処理数) 単位時間(1sec)÷Ts(0.001sec)=
(最大で)1000件/sec
λ(単位時間当たりの到着数) 変数とする。
17
M/M/1公式のグラフ化(前ページの仮定の場合)
0
0.2
0.4
0.6
0.8
1
1.2
1
23
45
67
89
111
133
155
177
199
221
243
265
287
309
331
353
375
397
419
441
463
485
507
529
551
573
595
617
639
661
683
705
727
749
771
793
815
837
859
881
903
925
947
969
991
1013
1035
1057
1079
リクエスト数と平均待ち時間の推移(sec)
(Ts = 0.001secの場合, M/M/1モデル)
集計
リクエスト数
(λに相当)
Ts=0.001secで
捌いていても、
1000件/secの
リクエストで飽和
レスポンス
(Twに相当)
18
この状況は……
HDD/SSD/
ストレージ等
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSのデバイス
/dev/sda
数が多過ぎて
捌き切れない!
僕は楽勝~~♪
遅いなぁ…
svctm は 良好だが、
await が 悪くなるケース
LU#1sda
19
0
0.2
0.4
0.6
0.8
1
1.2
1
23
45
67
89
111
133
155
177
199
221
243
265
287
309
331
353
375
397
419
441
463
485
507
529
551
573
595
617
639
661
683
705
727
749
771
793
815
837
859
881
903
925
947
969
991
1013
1035
1057
1079
リクエスト数と平均待ち時間の推移(sec)
(Ts = 0.001secの場合, M/M/1モデル)
集計
Ts=0.001secで
捌いていても、
1000件/secの
リクエストで飽和
M/M/1モデルのTwが飽和している状態に相当
レスポンス
(Twに相当)
svctm(Ts)に相当
await(Tw)に相当
リクエスト数
(λに相当)
20
ストレージ側は
余裕があるのに、
ユーザプロセス
から見たI/Oは遅い。
21
この状況の
解決策は…
22
OSのデバイスを増やして、かつ分散させる
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSのデバイス
/dev/sdb
OSのデバイス
/dev/sdc
ユーザプロセス
LU#1
LU#2
LU#3
sdb
sda
sdc
ストレージからLUを
切り出して、OSデバイス
として追加する。
23
例えば
Oracle ASM
で分散(ステマ)
24
とは言え、
物理的な制約が有ると、
このやり方は採用できない。
25
例えば、ストレージが内蔵HDDの場合
内蔵HDD
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSのデバイス
/dev/sda
遅いなぁ…
sda
彡(゚)(゚)
できんわボケ!!!
LU新しく切り出して
デバイス増やしたら性能
スケールするで。
26
内蔵HDDではなく、RAIDなストレージでも……
RAIDストレージ
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSのデバイス
/dev/sda
遅いなぁ…
sda
彡(゚)(゚)
そんな領域はもう無いなぁ…
LU#1
LU新しく切り出して
デバイス増やしたら性能
スケールするで。
27
このように物理的に
制約が有るケースだと、
await >>> svctm
でも、ストレージの
性能限界と言える。
28
3章. I/O遅延のパターン②
svctmが悪化して遅延
29
I/O遅延のパターン②・svctmが悪化
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
作業担当者の
レスポンスが遅い!
遅いなぁ…
svctm が悪化して、
それに引き摺られて
await が 遅くなるケース
30
 下記はiostat -x のログのサンプル ※数字もサンプルです。
iostat -x 1
:
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 1.52 0.00 97.22
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1109.91 100.03
sdb 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1109.91 100.03
:
この状況の時のiostatログ
await >= svctm な状況で、
かつ svctmの値が悪い。
31
このケースの遅延の
原因は幾つかあって…
32
②'ストレージ(等)の性能が飽和している場合
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
遅いなぁ…
複数システムでストレージを共有
している等の理由で、ストレージや
その経路の性能が飽和し、
OSから見たsvctmが悪化している。
忙しいよ
~~!
作業担当者の
レスポンスが遅い!
33
この状況の
解決策は…
34
余り良い策は無い。(基本はキャパの増強)
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
ストレージ性能
の増強
経路の増強
共有を止める
(処理量削減)
35
②'' OSデバイス~ストレージの経路の問題のケース
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
遅いなぁ…
OSデバイス~ストレージの
経路間で問題が発生して、
svctmが悪化している。
何も
来ないな?
作業担当者の
レスポンスが遅い!
36
この状況の
解決策は…
37
やっぱり余り良い策は無い。(経路間の問題を解消する)
HDD/SSD/
ストレージ等
OSのデバイス
/dev/sda
ユーザプロセス
ユーザプロセス
ユーザプロセス
OSデバイス~ストレージの
経路間で発生している問題を
解消する。
38
4章. 分析のアンチパターン
39
 下記はiostat -x のログのサンプル ※数字もサンプルです。
iostat -x 1
:
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 1.52 0.00 97.22
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03
sdb 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03
:
処理量の統計だけに着目して分析
I/Oの量が少ないので、
I/Oは問題無いです!!!!!!
40
(アカン)
41
■1回当たりのI/Oが"遅い"から
処理量が少なくなっているのか?
■そもそものリクエストが
少ないから、処理量が少ないのか?
処理量だけ見ても、区別ができない。
42
 下記はiostat -x のログのサンプル ※数字もサンプルです。
iostat -x 1
:
avg-cpu: %user %nice %system %iowait %steal %idle
0.76 0.00 0.51 1.52 0.00 97.22
Device: rrqm/s … rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03
sdb 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03
:
レスポンス(svctm, await)も見ること
レスポンスの統計も(を)
確認する。
43
5章. まとめ
44
まとめ
 遅延のパターンは複数あり、await や svctm の傾向を
分析して、遅延のパターンを見極めること
– await >>> svctm なパターン
– svctmがそもそも悪くなっているパターン
 処理量の統計だけでなくレスポンスの統計も確認すること
– 処理量が少ないから問題は無い。。。ではない。
– 処理量が少ない ⇒ 遅いから少ない、と云うケースが有り得る。
45
参考サイト/参考ブログ
M/M/1待ち行列について、
下記サイトを参考にさせて頂きました(`・ω・)ゞ
– IT Pro ネットワークの数学 M/M/1
http://itpro.nikkeibp.co.jp/article/COLUMN/20060920/248528/
yohei-aさん、いつもサンガツやで!彡(^)(^)
– iostat の見方
http://d.hatena.ne.jp/yohei-a/20110711/1310396665
– Linux の iostat の出力結果を銀行のATMに例えて説明してみる
http://d.hatena.ne.jp/yohei-a/20111203/1322909311
46
おわり
ご清聴、サンガツだったやで!

More Related Content

iostat await svctm の 見かた、考え方