• Like
性能測定道 実践編
Upcoming SlideShare
Loading in...5
×

性能測定道 実践編

  • 7,420 views
Uploaded on

2014/2/1に開催された日本PostgreSQLユーザ会 第27回しくみ+アプリケーション勉強会での講演です。 …

2014/2/1に開催された日本PostgreSQLユーザ会 第27回しくみ+アプリケーション勉強会での講演です。
http://www.postgresql.jp/wg/shikumi/shikumi28

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,420
On Slideshare
0
From Embeds
0
Number of Embeds
14

Actions

Shares
Downloads
38
Comments
0
Likes
32

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 性能測定 道 実践編 早水 悠登 (東大) Thanks to 合田和生(東大)山田浩之(東大)喜連川優(東大、NII) 2014/02/01
  • 2. $whoami • 早水 悠登(a.k.a. @hayamiz ) • 東京大学喜連川研究室 • • 普段やっていること • • データベースシステム研究 性能測定 たまにやること • 論文書き
  • 3. 性能測定道 • 事始め編(前回) • • 性能測定の心と基本形 実践編(今回) • 性能測定の手法とその実践
  • 4. 前回の復習
  • 5. 測定の心は測定の外にあり • 何のために性能測定をするのか? • 性能測定は戦略目的を達成するための戦術 • 目的から性能測定の手法を導出する
  • 6. 測定の心は測定の外にあり • 何のために性能測定をするのか? • 性能測定は戦略目的を達成するための戦術 • 目的から性能測定の手法を導出する
  • 7. 3つの基本形
  • 8. 3つの基本形 Modeling Simulation Measurement
  • 9. MODELING -モデル化• 科学的アプローチの原点 • 測定対象の モデル を作る • 内部の動作原理を知る • 性能に影響を与える要素を選び出す • 性能を数式化する
  • 10. MEASUREMENT -計測• 計測はモデル化のしもべ • モデルなき計測は意味を成さない • モデルが計測結果の正しさを裏付ける • 計測でモデルの正しさを確認する
  • 11. MEASUREMENT -計測• 計測はモデル化のしもべ • モデルなき計測は意味を成さない • モデルが計測結果の正しさを裏付ける • 計測でモデルの正しさを確認する
  • 12. SIMULATION • まだ見ぬシステムの性能を知る手段 • • • 存在しないハードウェアの性能予測 実装前のソフトウェアの性能予測 計測したいシステムを模した環境を作り出す • 専用ハードウェア • ソフトウェアによるシミュレーション実行
  • 13. 実際にどうすべきか?
  • 14. 性能測定道 • 事始め編(前回) • • 性能測定の心と基本形 実践編(今回) • 性能測定の手法とその実践
  • 15. メモリアクセスレイテンシ
  • 16. メモリアクセスレイテンシ
  • 17. どうやって測定するか?
  • 18. メモリアクセスする プログラムをとりあえず 書いてみる?
  • 19. #define LOOP 1000000000 #define SIZE (1024*1024*1024) char *region = malloc(SIZE); int i, j; for (j = 0; j < LOOP; j) { for (i = 0; i < SIZE; i++) { region[i]; } } 実行時間 (LOOP SIZE) = 1回のメモリアクセスレイテンシ(?)
  • 20. #define LOOP 1000000000 #define SIZE (1024*1024*1024) char *region = malloc(SIZE); int i, j; for (j = 0; j < LOOP; j) { for (i = 0; i < SIZE; i++) { region[i]; } } 実行時間 (LOOP SIZE) = 1回のメモリアクセスレイテンシ(?)
  • 21. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • TLB、L1、L2、L3 • インターコネクト • I/Oパス • … CPU0 CPU1 CPU2 CPU3
  • 22. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • TLB、L1、L2、L3 • インターコネクト • I/Oパス • … CPU0 CPU1 CPU2 CPU3
  • 23. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • • CPU0 CPU1 CPU2 CPU3 TLB、L1、L2、L3 インターコネクト IO Hub • I/Oパス • … IO Hub
  • 24. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • • CPU0 CPU1 CPU2 CPU3 TLB、L1、L2、L3 インターコネクト IO Hub • I/Oパス PCIe • … IO Hub
  • 25. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • • CPU0 CPU1 CPU2 CPU3 TLB、L1、L2、L3 インターコネクト IO Hub • • I/Oパス … PCIe PCIe IO Hub
  • 26. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • • CPU0 CPU1 CPU2 CPU3 TLB、L1、L2、L3 インターコネクト IO Hub • • I/Oパス … PCIe PCIe PCIe IO Hub
  • 27. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • • CPU0 CPU1 CPU2 CPU3 TLB、L1、L2、L3 インターコネクト IO Hub • • I/Oパス … PCIe PCIe PCIe PCIe IO Hub
  • 28. 性能測定実践の第一歩: 徹底的に調べ尽くす • プロセッサ • 動作原理 • マイクロアーキテクチャ • 動作周波数 • キャッシュサイズ • • CPU0 CPU1 CPU2 CPU3 TLB、L1、L2、L3 インターコネクト IO Hub • • I/Oパス … PCIe PCIe PCIe PCIe PCIe IO Hub
  • 29. 性能測定実践の第一歩: 徹底的に調べ尽くす 測定前に知りうる範囲で 性能モデルを構築して理解する
  • 30. 性能測定実践の第一歩: 徹底的に調べ尽くす アクセス領域の大きさとレイテンシ
  • 31. 性能測定実践の第一歩: 徹底的に調べ尽くす アクセス領域の大きさとレイテンシ
  • 32. 性能測定実践の第一歩: 徹底的に調べ尽くす アクセス領域の大きさとレイテンシ
  • 33. 性能測定実践の第一歩: 徹底的に調べ尽くす アクセス領域の大きさとレイテンシ
  • 34. 性能測定実践の第一歩: 徹底的に調べ尽くす アクセス領域の大きさとレイテンシ
  • 35. 性能測定実践の第一歩: 徹底的に調べ尽くす プロセッサ命令パイプライン 参考:坂井修一 「コンピュータアーキテクチャ」 http://www.amazon.co.jp/dp/4339018430
  • 36. 性能測定実践の第一歩: 徹底的に調べ尽くす スーパースカラ実行 参考:坂井修一 「コンピュータアーキテクチャ」 http://www.amazon.co.jp/dp/4339018430
  • 37. 性能測定実践の第一歩: 徹底的に調べ尽くす プリフェッチ 参考:坂井修一 「コンピュータアーキテクチャ」 http://www.amazon.co.jp/dp/4339018430
  • 38. 性能測定実践の第一歩: 徹底的に調べ尽くす 分岐予測とパイプラインストール 参考:坂井修一 「コンピュータアーキテクチャ」 http://www.amazon.co.jp/dp/4339018430
  • 39. 実行時間と メモリアクセス回数 比例するとは限らない
  • 40. #define LOOP 1000000000 #define SIZE (1024*1024*1024) char *region = malloc(SIZE); int i, j; for (j = 0; j < LOOP; j) { for (i = 0; i < SIZE; i++) { region[i]; } } 実行時間 (LOOP SIZE) = 1回のメモリアクセスレイテンシ(?)
  • 41. 動作原理・性能モデル を元に考える
  • 42. 動作原理・性能モデル を元に考える • 目的:1回のメモリアクセスレイテンシを測りたい
  • 43. 動作原理・性能モデル を元に考える • 目的:1回のメモリアクセスレイテンシを測りたい • 問題:実行時間とメモリアクセス時間が比例しないこ とがある
  • 44. 動作原理・性能モデル を元に考える • 目的:1回のメモリアクセスレイテンシを測りたい • 問題:実行時間とメモリアクセス時間が比例しないこ とがある • パイプライン実行、スーパースカラ実行
  • 45. 動作原理・性能モデル を元に考える • 目的:1回のメモリアクセスレイテンシを測りたい • 問題:実行時間とメモリアクセス時間が比例しないこ とがある • パイプライン実行、スーパースカラ実行 • プリフェッチ
  • 46. 動作原理・性能モデル を元に考える • 目的:1回のメモリアクセスレイテンシを測りたい • 問題:実行時間とメモリアクセス時間が比例しないこ とがある • パイプライン実行、スーパースカラ実行 • プリフェッチ • 分岐予測ミス・ヒット
  • 47. 動作原理・性能モデル を元に考える • 目的:1回のメモリアクセスレイテンシを測りたい • 問題:実行時間とメモリアクセス時間が比例しないこ とがある • パイプライン実行、スーパースカラ実行 • プリフェッチ • 分岐予測ミス・ヒット 比例すれば測れる
  • 48. 目的から手法を導出する
  • 49. 目的から手法を導出する • メモリアクセス回数が実行時間に比例するように
 メモリアクセスする • 解決すべき問題 • 命令のパイプライン・スーパースカラ実行 • プリフェッチ • 分岐予測ミス・ヒット
  • 50. 命令パイプラインを ニート化する • 命令パイプラインのやる気を奪う方法 • 命令間データ依存 • • • CPU命令列:A, B, C, … Bの実行にAの実行結果が必要
 → Aが終わるまでBは実行できない スーパースカラ実行も同時にニート化できる
  • 51. 命令パイプラインを ニート化する 1つ前の命令に必ずデータ依存するCPU命令列
  • 52. 命令パイプラインを ニート化する 1つ前の命令に必ずデータ依存するCPU命令列 __asm__ volatile(“ movq (%%rax), %rax movq (%%rax), %rax movq (%%rax), %rax …"
  • 53. プリフェッチャをニート化 • プリフェッチできるアクセスパターン • • 順次アクセス or ストライドアクセス ランダムアクセスすればOK
  • 54. プリフェッチャをニート化 • プリフェッチできるアクセスパターン • • 順次アクセス or ストライドアクセス ランダムアクセスすればOK __asm__ volatile(“ movq (%%rax), %rax movq (%%rax), %rax movq (%%rax), %rax …"
  • 55. 分岐予測器をニート化 • 分岐予測器の動き自体はコントロールが難しい • → 仕事を与えない
  • 56. movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq movq (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), (%%rax), %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax %rax 分岐予測器をニート化 • 分岐予測器の動き自体はコントロールが難しい • → 仕事を与えない
  • 57. 目的から手法を導出する • メモリアクセス回数が実行時間に比例するように
 メモリアクセスする • 解決すべき問題 • ✔ 命令のパイプライン・スーパースカラ実行 • ✔ プリフェッチ • ✔ 分岐予測ミス・ヒット
  • 58. あとは書くだけ
  • 59. micbench A microbenchmarking toolset
  • 60. micbench A microbenchmarking toolset for Linux only ;)
  • 61. micbench A microbenchmarking toolset for Linux only ;)
  • 62. micbench live on AWS EC2 $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 63. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 64. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: Last login: Sat Feb 1 03:27:02 2014 from 35.69.30.125.dy.iij4u.or.jp __| __|_ ) _| ( / ___|___|___| Amazon Linux AMI https://aws.amazon.com/amazon-linux-ami/2013.09-release-notes/ $
  • 65. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: Last login: Sat Feb 1 03:27:02 2014 from 35.69.30.125.dy.iij4u.or.jp __| __|_ ) _| ( / ___|___|___| Amazon Linux AMI https://aws.amazon.com/amazon-linux-ami/2013.09-release-notes/ $ micbench mem -h
  • 66. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: Last login: Sat Feb 1 03:27:02 2014 from 35.69.30.125.dy.iij4u.or.jp __| __|_ ) _| ( / ___|___|___| Amazon Linux AMI https://aws.amazon.com/amazon-linux-ami/2013.09-release-notes/ $ micbench mem -h Usage: micbench mem [options] -h, --help -m, --multi NUM -t, --timeout NUM -S, --seq -R, --rand -L, --local sharing one region) -a, --affinity AFFINITY -s, --size SIZE -H, --hugetlbfile PATH -z, --hugepagesize SIZE -v, --verbose --debug Show help Multiplicity of memory access (default: ) Running time of memory access test (in sec) (default: sec) Sequential memory access mode (default mode) Random memory access mode (default: sequential access mode) Allocate separated memory region for each thread (default: CPU and memory utilization policy Size of memory region (default: 1MB) Use HugePages if specified. Give a path to file on hugetlbfs. Size of HugePage (default: 2MB)
  • 67. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 68. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ cd /sys/devices/system/cpu/cpu0/cache
  • 69. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ cd /sys/devices/system/cpu/cpu0/cache $ echo `cat index0/level` `cat index0/type` `cat index0/size` 1 Data 32K $ echo `cat index1/level` `cat index1/type` `cat index1/size` 1 Instruction 32K $ echo `cat index2/level` `cat index2/type` `cat index2/size` 2 Unified 256K $ echo `cat index3/level` `cat index3/type` `cat index3/size` 3 Unified 20480K
  • 70. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 71. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 16K --affinity 0:c0 --timeout 10
  • 72. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 16K --affinity 0:c0 --timeout 10 loop end: t=10.000098 access_pattern random multiplicity 1 local false page_size 4096 size 32768 use_hugepages false total_ops 2172125184 total_clk 17885453816 exec_time 10.000098 ops_per_sec 2.172104e+08 clk_per_op 8.234081e+00 total_exec_time 11.881029
  • 73. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 16K --affinity 0:c0 --timeout 10 loop end: t=10.000098 access_pattern random multiplicity 1 local false page_size 4096 size 32768 use_hugepages false total_ops 2172125184 total_clk 17885453816 exec_time 10.000098 ops_per_sec 2.172104e+08 clk_per_op 8.234081e+00 total_exec_time 11.881029 L1D cache アクセスレイテンシ 8.23クロック ( 5%) (Wikipedia調べ:3クロック)
  • 74. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 75. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 128K --affinity 0:c0 --timeout 10
  • 76. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 128K --affinity 0:c0 --timeout 10 loop end: t=10.022191 access_pattern random multiplicity 1 local false page_size 4096 size 131072 use_hugepages false total_ops 729284608 total_clk 17940879364 exec_time 10.022191 ops_per_sec 7.276698e+07 clk_per_op 2.460066e+01 total_exec_time 10.047088
  • 77. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 128K --affinity 0:c0 --timeout 10 loop end: t=10.022191 access_pattern random multiplicity 1 local false page_size 4096 size 131072 use_hugepages false total_ops 729284608 total_clk 17940879364 exec_time 10.022191 ops_per_sec 7.276698e+07 clk_per_op 2.460066e+01 total_exec_time 10.047088 L2D cache アクセスレイテンシ 24.6クロック ( 5%) (Wikipedia調べ:8クロック)
  • 78. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 79. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 16MB --affinity 0:c0 --timeout 10
  • 80. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 16MB --affinity 0:c0 --timeout 10 loop end: t=10.017083 access_pattern random multiplicity 1 local false page_size 4096 size 16777216 use_hugepages false total_ops 40370176 total_clk 17984571328 exec_time 10.017083 ops_per_sec 4.030133e+06 clk_per_op 4.454915e+02 total_exec_time 10.293443
  • 81. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 16MB --affinity 0:c0 --timeout 10 loop end: t=10.017083 access_pattern random multiplicity 1 local false page_size 4096 size 16777216 use_hugepages false total_ops 40370176 total_clk 17984571328 exec_time 10.017083 ops_per_sec 4.030133e+06 clk_per_op 4.454915e+02 total_exec_time 10.293443 L3 shared アクセスレイテンシ 445クロック
  • 82. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 83. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 256MB --affinity 0:c0 --timeout 10
  • 84. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 256MB --affinity 0:c0 --timeout 10 loop end: t=10.025490 access_pattern random multiplicity 1 local false page_size 4096 size 268435456 use_hugepages false total_ops 31719424 total_clk 18000368292 exec_time 10.025490 ops_per_sec 3.163878e+06 clk_per_op 5.674872e+02 total_exec_time 16.503597
  • 85. $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ micbench mem --rand --size 256MB --affinity 0:c0 --timeout 10 loop end: t=10.025490 access_pattern random multiplicity 1 local false page_size 4096 size 268435456 use_hugepages false total_ops 31719424 total_clk 18000368292 exec_time 10.025490 ops_per_sec 3.163878e+06 clk_per_op 5.674872e+02 total_exec_time 16.503597 主記憶アクセスレイテンシ 567クロック
  • 86. メモリアクセスレイテンシ測定
  • 87. メモリアクセスレイテンシ測定 • 単なるメモリアクセスプログラムではダメ
  • 88. メモリアクセスレイテンシ測定 • 単なるメモリアクセスプログラムではダメ • CPU内部構造・性能モデルを理解した測定計画
  • 89. メモリアクセスレイテンシ測定 • 単なるメモリアクセスプログラムではダメ • • CPU内部構造・性能モデルを理解した測定計画 micbench on EC2
  • 90. メモリアクセスレイテンシ測定 • 単なるメモリアクセスプログラムではダメ • • CPU内部構造・性能モデルを理解した測定計画 micbench on EC2 • メモリアクセス速度からわかる仮想マシン感
  • 91. まとめ • 性能測定の実践 • • • 測定前の徹底調査 頭の中にモデルを作る Case study: メモリアクセスレイテンシ • 単なるメモリアクセスプログラムではダメ • • CPU内部構造・性能モデルを理解した測定計画 micbench on EC2 • メモリアクセス速度からわかる仮想マシン感
  • 92. I/O性能測定 I/O発行による負荷+挙動モニタリング I/O負荷 micbench io
  • 93. I/O性能測定 I/O発行による負荷+挙動モニタリング I/O負荷 micbench io 挙動モニタリング
  • 94. micbench A microbenchmarking toolset $ micbench -h ! Usage: micbench command [options] ! available commands: help : 'help command' explains about command io : IO benchmark on block devices and files lock : lock and sync. cost benchmark mem : memory latency and bandwidth benchmark
  • 95. micbench A microbenchmarking toolset $ micbench -h ! Usage: micbench command [options] ! available commands: help : 'help command' explains about command io : IO benchmark on block devices and files lock : lock and sync. cost benchmark mem : memory latency and bandwidth benchmark
  • 96. モニタリングツール • sysstat (mpstat / iostat) (…) ! avg-cpu: %user 0.00 %nice %system %iowait 0.00 1.00 99.00 %steal 0.00 %idle 0.00 ! Device: xvdap1 xvdap3 xvdf xvdg ! (…) tps 0.00 0.00 64.00 0.00 Blk_read/s 0.00 0.00 1024.00 0.00 Blk_wrtn/s 0.00 0.00 0.00 0.00 Blk_read 0 0 1024 0 Blk_wrtn 0 0 0 0
  • 97. モニタリングツール • sysstat (mpstat / iostat) (…) ! avg-cpu: %user 0.00 %nice %system %iowait 0.00 1.00 99.00 ! Device: xvdap1 xvdap3 xvdf xvdg ! (…) tps 0.00 0.00 64.00 0.00 a d a e Blk_read/s 0.00 0.00 1024.00 0.00 r t o N ! le b %steal 0.00 Blk_wrtn/s 0.00 0.00 0.00 0.00 %idle 0.00 Blk_read 0 0 1024 0 Blk_wrtn 0 0 0 0
  • 98. モニタリングツール • sysstat (mpstat / iostat) (…) ! avg-cpu: %user 0.00 %nice %system %iowait 0.00 1.00 99.00 ! Device: xvdap1 xvdap3 xvdf xvdg tps 0.00 0.00 64.00 0.00 a d a e Blk_read/s 0.00 0.00 1024.00 0.00 r t o N ! le b %steal 0.00 Blk_wrtn/s 0.00 0.00 0.00 0.00 %idle 0.00 Blk_read 0 0 1024 0 Blk_wrtn 0 0 0 0 ! (…) • プログラムから集計するのが面倒なフォーマット
  • 99. モニタリングツール • sysstat (mpstat / iostat) (…) ! avg-cpu: ! Device: xvdap1 xvdap3 xvdf xvdg ! (…) %user 0.00 %nice %system %iowait 0.00 1.00 99.00 Not tps 0.00 0.00 64.00 0.00 real %steal 0.00 Blk_read/s 0.00 0.00 1024.00 0.00 %idle 0.00 time Blk_wrtn/s 0.00 0.00 0.00 0.00 Blk_read 0 0 1024 0 Blk_wrtn 0 0 0 0
  • 100. モニタリングツール • sysstat (mpstat / iostat) (…) ! avg-cpu: ! Device: xvdap1 xvdap3 xvdf xvdg %user 0.00 %nice %system %iowait 0.00 1.00 99.00 Not tps 0.00 0.00 64.00 0.00 real %steal 0.00 Blk_read/s 0.00 0.00 1024.00 0.00 %idle 0.00 time Blk_wrtn/s 0.00 0.00 0.00 0.00 Blk_read 0 0 1024 0 ! (…) • 最短で1秒間隔でしかモニタリングできない Blk_wrtn 0 0 0 0
  • 101. PerfMonger Yet another system performance monitoring & visualizing tool
  • 102. PerfMonger live on AWS EC2 $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません
  • 103. PerfMonger live on AWS EC2 $ ssh jpugstudy@54.201.1.14 jpugstudy@54.201.1.14's password: JPUGstudy20140201 ※現在はアクセスできません $ perfmonger record {"time": 1391233526.2996, "cpuinfo": {"nr_cpu": 1, "all": {"%usr": 0.00, "%nice": 0.00, "%sys": 0.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 0.00}, "cpus": [{"%usr": 0.00, "%nice": 0.00, "%sys": 0.00, "%iowait": 0.00, "%irq": 0.00, "%soft": 0.00, "%steal": 0.00, "%guest": 0.00, "%idle": 100.00}]}, "ioinfo": {"devices": ["xvda1", "xvda3", "xvdf", "xvdg"], "xvda1": {"r/s": 0.0000, "w/s": 0.0000, "rsec/s": 0.0000, "wsec/s": 0.0000, "r_await": 0.0000, "w_await": 0.0000, "avgrq-sz": 0.0000, "avgqu-sz": 0.0000}, "xvda3": {"r/s": 0.0000, "w/s": 0.0000, "rsec/s": 0.0000, "wsec/s": 0.0000, "r_await": 0.0000, "w_await": 0.0000, "avgrq-sz": 0.0000, "avgqu-sz": 0.0000}, "xvdf": {"r/s": 0.0000, "w/s": 0.0000, "rsec/s": 0.0000, "wsec/s": 0.0000, "r_await": 0.0000, "w_await": 0.0000, "avgrq-sz": 0.0000, "avgqu-sz": 0.0000}, "xvdg": {"r/s": 0.0000, "w/s": 0.0000, "rsec/s": 0.0000, "wsec/s": 0.0000, "r_await": 0.0000, "w_await": 0.0000, "avgrq-sz": 0.0000, "avgqu-sz": 0.0000}, "total": {"r/s": 0.0000, "w/s": 0.0000, "rsec/s": 0.0000, "wsec/s": 0.0000, "r_await": 0.0000, "w_await": 0.0000}}}
  • 104. PerfMonger live on AWS EC2 ※現在はアクセスできません http://54.201.1.14:20202/dashboard
  • 105. 性能測定 道 終