iostat await svctm の 見かた、考え方

46
iostat の await, svctm の のののののの

Upload: -

Post on 09-Jan-2017

1.295 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: iostat await svctm の 見かた、考え方

iostat の await, svctm の 見かた、考え方

Page 2: iostat await svctm の 見かた、考え方

2

免責事項/注意事項

本資料において示されている見解は、私自身 ( 柴田 歩 )の見解であり、 Oracle Corporation 及び 日本オラクル社の見解を必ずしも反映したものではありません。予めご了承ください。

Page 3: iostat await svctm の 見かた、考え方

3

1 章 . 前提知識

Page 4: iostat await svctm の 見かた、考え方

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 %utilsda 0.00 … 2000.00 88.00 208.80 0.14 13.70 8.00 8.00sdb 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 %utilsda 0.00 … 2000.00 0.00 666.67 0.01 2.00 1.33 0.40sdb 0.00 … 0.00 0.00 0.00 0.00 0.00 0.00 0.00:

iostat の ログ ( サンプル )

Page 5: iostat await svctm の 見かた、考え方

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 %utilsda 0.00 … 2000.00 88.00 208.80 0.14 13.70 8.00 8.00sdb 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 %utilsda 0.00 … 2000.00 0.00 666.67 0.01 2.00 1.33 0.40sdb 0.00 … 0.00 0.00 0.00 0.00 0.00 0.00 0.00:

await と svctm に 注目

ここに注目

Page 6: iostat await svctm の 見かた、考え方

6

考え方はこのモデル (M/M/1 待ち行列 )

実作業担当者受付

お客様

お客様

お客様

Page 7: iostat await svctm の 見かた、考え方

7

Linux/UNIX なシステムに当てはめると、こう。

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセスLU#1sda

※ 実際のシステムの I/O はもっと複雑ですが、解り易くするために抽象化して書いてます。

Page 8: iostat await svctm の 見かた、考え方

8

svctm の考え方

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS のデバイスからストレージ ( 等 )に

投げられた I/O リクエストが返ってくるまでレスポンスタイム

sda LU#1

Page 9: iostat await svctm の 見かた、考え方

9

await の考え方

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

複数のユーザープロセスから OS のデバイスに投げられた I/O リクエストが返ってくるまでの " 平均 " レスポンス

タイム(※ 一般的に svctm を包含する。 )

sda LU#1

Page 10: iostat await svctm の 見かた、考え方

10

2 章 . I/O 遅延のパターン①リクエスト数が多い。

Page 11: iostat await svctm の 見かた、考え方

11

I/O 遅延のパターン①・リクエスト数が多い

HDD/SSD/ストレージ等

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS のデバイス/dev/sda

数が多過ぎて捌き切れない!

僕は楽勝~~♪

遅いなぁ…svctm は 良好だが、

await が 悪くなるケース

LU#1sda

Page 12: iostat await svctm の 見かた、考え方

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 %utilsda 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1.55 100.03sdb 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1.55 100.03

この状況の時の iostat ログ

await >>> svctm な状況

Page 13: iostat await svctm の 見かた、考え方

13

M/M/1 待ち行列

Page 14: iostat await svctm の 見かた、考え方

14

M/M/1 の公式

IT Pro ネットワークの数学 M/M/1 より引用

http://itpro.nikkeibp.co.jp/

article/COLUMN/20060920/248528/

Page 15: iostat await svctm の 見かた、考え方

15

M/M/1 の公式と svctm 、 await の関係

svctm に相当await に相当

IT Pro ネットワークの数学 M/M/1 より引用

http://itpro.nikkeibp.co.jp/

article/COLUMN/20060920/248528/

Page 16: iostat await svctm の 見かた、考え方

16

下記の仮定を M/M/1 公式に当てはめてグラフ化すると……

M/M/1 の公式に下記の仮定を当てはめると…

変数名 定義

ρ(到着率 ) λ÷μ

単位時間 1sec(と定義 )

先頭処理のレスポンス (Ts) 0.001sec(と定義 )

μ(単位時間あたりの処理数 ) 単位時間 (1sec)÷Ts(0.001sec)=(最大で )1000件 /sec

λ(単位時間当たりの到着数 ) 変数とする。

Page 17: iostat await svctm の 見かた、考え方

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 に相当 )

Page 18: iostat await svctm の 見かた、考え方

18

この状況は……

HDD/SSD/ストレージ等

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS のデバイス/dev/sda

数が多過ぎて捌き切れない!

僕は楽勝~~♪

遅いなぁ…svctm は 良好だが、

await が 悪くなるケース

LU#1sda

Page 19: iostat await svctm の 見かた、考え方

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) に相当

リクエスト数(λ に相当 )

Page 20: iostat await svctm の 見かた、考え方

20

ストレージ側は余裕があるのに、ユーザプロセス

から見た I/O は遅い。

Page 21: iostat await svctm の 見かた、考え方

21

この状況の解決策は…

Page 22: iostat await svctm の 見かた、考え方

22

OS のデバイスを増やして、かつ分散させる

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS のデバイス/dev/sdb

OS のデバイス/dev/sdc

ユーザプロセス

LU#1

LU#2

LU#3sdb

sda

sdc

ストレージから LU を切り出して、 OS デバイ

スとして追加する。

Page 23: iostat await svctm の 見かた、考え方

23

例えばOracle ASM

で分散 ( ステマ )

Page 24: iostat await svctm の 見かた、考え方

24

とは言え、物理的な制約が有ると、

このやり方は採用できない。

Page 25: iostat await svctm の 見かた、考え方

25

例えば、ストレージが内蔵 HDD の場合

内蔵 HDD

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS のデバイス/dev/sda

遅いなぁ…

sda

彡 ( ゚ )( ゚ )

できんわボケ !!!

LU 新しく切り出してデバイス増やしたら性能

スケールするで。

Page 26: iostat await svctm の 見かた、考え方

26

内蔵 HDD ではなく、 RAID なストレージでも……

RAID ストレージ

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS のデバイス/dev/sda

遅いなぁ…

sda

彡 ( ゚ )( ゚ )

そんな領域はもう無いなぁ…

LU#1

LU 新しく切り出してデバイス増やしたら性能

スケールするで。

Page 27: iostat await svctm の 見かた、考え方

27

このように物理的に制約が有るケースだと、

await >>> svctmでも、ストレージの性能限界と言える。

Page 28: iostat await svctm の 見かた、考え方

28

3 章 . I/O 遅延のパターン②svctm が悪化して遅延

Page 29: iostat await svctm の 見かた、考え方

29

I/O 遅延のパターン②・ svctm が悪化

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

作業担当者のレスポンスが遅い!

遅いなぁ…

svctm が悪化して、それに引き摺られて

await が 遅くなるケース

Page 30: iostat await svctm の 見かた、考え方

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 %utilsda 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1109.91 100.03sdb 0.00 … 1386.67 32.00 386.91 0.00 1109.91 1109.91 100.03

この状況の時の iostat ログ

await >= svctm な状況で、かつ svctm の値が悪い。

Page 31: iostat await svctm の 見かた、考え方

31

このケースの遅延の原因は幾つかあって…

Page 32: iostat await svctm の 見かた、考え方

32

②' ストレージ ( 等 ) の性能が飽和している場合

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

遅いなぁ…

複数システムでストレージを共有している等の理由で、ストレージや

その経路の性能が飽和し、OS から見た svctm が悪化してい

る。

忙しいよ~~!

作業担当者のレスポンスが遅い!

Page 33: iostat await svctm の 見かた、考え方

33

この状況の解決策は…

Page 34: iostat await svctm の 見かた、考え方

34

余り良い策は無い。 (基本はキャパの増強 )

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

ストレージ性能の増強

経路の増強

共有を止める( 処理量削減 )

Page 35: iostat await svctm の 見かた、考え方

35

②'' OS デバイス~ストレージの経路の問題のケース

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

遅いなぁ…

OS デバイス~ストレージの経路間で問題が発生して、svctm が悪化している。

何も来ないな?

作業担当者のレスポンスが遅い!

Page 36: iostat await svctm の 見かた、考え方

36

この状況の解決策は…

Page 37: iostat await svctm の 見かた、考え方

37

やっぱり余り良い策は無い。 ( 経路間の問題を解消する )

HDD/SSD/ストレージ等

OS のデバイス/dev/sda

ユーザプロセス

ユーザプロセス

ユーザプロセス

OS デバイス~ストレージの経路間で発生している問題を

解消する。

Page 38: iostat await svctm の 見かた、考え方

38

4 章 . 分析のアンチパターン

Page 39: iostat await svctm の 見かた、考え方

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 %utilsda 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03sdb 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03

処理量の統計だけに着目して分析

I/O の量が少ないので、I/O は問題無いです !!!!!!

Page 40: iostat await svctm の 見かた、考え方

40

(アカン )

Page 41: iostat await svctm の 見かた、考え方

41

■1回当たりの I/O が " 遅い " から処理量が少なくなっているのか?■そもそものリクエストが

少ないから、処理量が少ないのか?処理量だけ見ても、区別ができな

い。

Page 42: iostat await svctm の 見かた、考え方

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 %utilsda 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03sdb 0.00 … 86.67 32.00 386.91 0.00 1109.91 1109.91 100.03

レスポンス (svctm, await) も見ること

レスポンスの統計も ( を )確認する。

Page 43: iostat await svctm の 見かた、考え方

43

5 章 . まとめ

Page 44: iostat await svctm の 見かた、考え方

44

まとめ

遅延のパターンは複数あり、 await や svctm の傾向を分析して、遅延のパターンを見極めること– await >>> svctm なパターン– svctm がそもそも悪くなっているパターン

処理量の統計だけでなくレスポンスの統計も確認すること– 処理量が少ないから問題は無い。。。ではない。– 処理量が少ない ⇒ 遅いから少ない、と云うケースが有り得る。

Page 45: iostat await 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

Page 46: iostat await svctm の 見かた、考え方

46

おわり

ご清聴、サンガツだったやで!