Upload
iostat await svctm の 見かた、考え方
•
Download as PPTX, PDF
•
16 likes
•
18,263 views
歩 柴田
Follow
iostat の await と svctm の 見かた、考え方を書いたやで彡(゚)(゚)
Read less
Read more
Report
Share
Report
Share
1 of 46
Download now
More Related Content
iostat await svctm の 見かた、考え方
1.
iostat の await,
svctm の 見かた、考え方
2.
2 免責事項/注意事項 本資料において示されている見解は、私自身(柴田 歩)の 見解であり、Oracle
Corporation 及び 日本オラクル社 の見解を必ずしも反映したものではありません。 予めご了承ください。
3.
3 1章. 前提知識
4.
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.
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.
6 考え方はこのモデル(M/M/1待ち行列) 実作業 担当者受付 お客様 お客様 お客様
7.
7 Linux/UNIXなシステムに当てはめると、こう。 HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス LU#1sda ※実際のシステムのI/Oはもっと複雑ですが、 解り易くするために抽象化して書いてます。
8.
8 svctmの考え方 HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス OSのデバイスからストレージ(等)に 投げられたI/Oリクエストが 返ってくるまでレスポンスタイム sda LU#1
9.
9 awaitの考え方 HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス 複数のユーザープロセスからOSのデバ イスに投げられたI/Oリクエストが返っ てくるまでの"平均"レスポンスタイム (※一般的にsvctmを包含する。) sda LU#1
10.
10 2章. I/O遅延のパターン① リクエスト数が多い。
11.
11 I/O遅延のパターン①・リクエスト数が多い HDD/SSD/ ストレージ等 ユーザプロセス ユーザプロセス ユーザプロセス OSのデバイス /dev/sda 数が多過ぎて 捌き切れない! 僕は楽勝~~♪ 遅いなぁ… svctm は 良好だが、 await
が 悪くなるケース LU#1sda
12.
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.
13 M/M/1待ち行列
14.
14 M/M/1の公式 IT Pro ネットワークの数学 M/M/1
より引用 http://itpro.nikkeibp.co.jp/ article/COLUMN/2006092 0/248528/
15.
15 M/M/1の公式とsvctm、awaitの関係 svctmに相当 awaitに相当 IT Pro ネットワークの数学 M/M/1
より引用 http://itpro.nikkeibp.co.jp/ article/COLUMN/2006092 0/248528/
16.
16 下記の仮定をM/M/1公式に当てはめてグラフ化すると…… M/M/1の公式に下記の仮定を当てはめると… 変数名 定義 ρ(到着率)
λ÷μ 単位時間 1sec(と定義) 先頭処理のレスポンス(Ts) 0.001sec(と定義) μ(単位時間あたりの処理数) 単位時間(1sec)÷Ts(0.001sec)= (最大で)1000件/sec λ(単位時間当たりの到着数) 変数とする。
17.
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.
18 この状況は…… HDD/SSD/ ストレージ等 ユーザプロセス ユーザプロセス ユーザプロセス OSのデバイス /dev/sda 数が多過ぎて 捌き切れない! 僕は楽勝~~♪ 遅いなぁ… svctm は 良好だが、 await
が 悪くなるケース LU#1sda
19.
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.
20 ストレージ側は 余裕があるのに、 ユーザプロセス から見たI/Oは遅い。
21.
21 この状況の 解決策は…
22.
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.
23 例えば Oracle ASM で分散(ステマ)
24.
24 とは言え、 物理的な制約が有ると、 このやり方は採用できない。
25.
25 例えば、ストレージが内蔵HDDの場合 内蔵HDD ユーザプロセス ユーザプロセス ユーザプロセス OSのデバイス /dev/sda 遅いなぁ… sda 彡(゚)(゚) できんわボケ!!! LU新しく切り出して デバイス増やしたら性能 スケールするで。
26.
26 内蔵HDDではなく、RAIDなストレージでも…… RAIDストレージ ユーザプロセス ユーザプロセス ユーザプロセス OSのデバイス /dev/sda 遅いなぁ… sda 彡(゚)(゚) そんな領域はもう無いなぁ… LU#1 LU新しく切り出して デバイス増やしたら性能 スケールするで。
27.
27 このように物理的に 制約が有るケースだと、 await >>> svctm でも、ストレージの 性能限界と言える。
28.
28 3章. I/O遅延のパターン② svctmが悪化して遅延
29.
29 I/O遅延のパターン②・svctmが悪化 HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス 作業担当者の レスポンスが遅い! 遅いなぁ… svctm が悪化して、 それに引き摺られて await が
遅くなるケース
30.
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.
31 このケースの遅延の 原因は幾つかあって…
32.
32 ②'ストレージ(等)の性能が飽和している場合 HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス 遅いなぁ… 複数システムでストレージを共有 している等の理由で、ストレージや その経路の性能が飽和し、 OSから見たsvctmが悪化している。 忙しいよ ~~! 作業担当者の レスポンスが遅い!
33.
33 この状況の 解決策は…
34.
34 余り良い策は無い。(基本はキャパの増強) HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス ストレージ性能 の増強 経路の増強 共有を止める (処理量削減)
35.
35 ②'' OSデバイス~ストレージの経路の問題のケース HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス 遅いなぁ… OSデバイス~ストレージの 経路間で問題が発生して、 svctmが悪化している。 何も 来ないな? 作業担当者の レスポンスが遅い!
36.
36 この状況の 解決策は…
37.
37 やっぱり余り良い策は無い。(経路間の問題を解消する) HDD/SSD/ ストレージ等 OSのデバイス /dev/sda ユーザプロセス ユーザプロセス ユーザプロセス OSデバイス~ストレージの 経路間で発生している問題を 解消する。
38.
38 4章. 分析のアンチパターン
39.
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.
40 (アカン)
41.
41 ■1回当たりのI/Oが"遅い"から 処理量が少なくなっているのか? ■そもそものリクエストが 少ないから、処理量が少ないのか? 処理量だけ見ても、区別ができない。
42.
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.
43 5章. まとめ
44.
44 まとめ 遅延のパターンは複数あり、await や
svctm の傾向を 分析して、遅延のパターンを見極めること – await >>> svctm なパターン – svctmがそもそも悪くなっているパターン 処理量の統計だけでなくレスポンスの統計も確認すること – 処理量が少ないから問題は無い。。。ではない。 – 処理量が少ない ⇒ 遅いから少ない、と云うケースが有り得る。
45.
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.
46 おわり ご清聴、サンガツだったやで!
Download now