Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
そのベンチマークソフト
本当に大丈夫ですか?
@deep_tkkn
2016.12.17
合同勉強会 in 大都会岡山 -2016 Winter-
ベンチマークソフト使いますよね?
• 実行時間とかスコアとか出ますよね?
• それ,
2
ベンチマークソフト使いますよね?
• 実行時間とかスコアとか出ますよね?
• それ,
鵜呑みにしてはないですか?
3
ベンチマークソフト使いますよね?
• 実行時間とかスコアとか出ますよね?
• それ,
鵜呑みにしてはないですか?
• ベンチマークソフトが正しいとは限らないんですよ…
という話をします
4
まぁ,ベンチマーク取るわけですよ
5
Sysbench memory test:
メモリアクセス速度を測るベンチマーク
シーケンシャルアクセス
ランダムアクセス
6
____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) |
/ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
ふむふむ,
ランダムアクセスの
方が速いのか
http://kaomoji...
7
____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) |
/ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
ふむふむ,
ランダムアクセスの
方が速いのか
http://kaomoji...
8
____
/ \
/ ⌒ ⌒ \
/ (●) (●) \
| 、" ゙)(__人__)" ) ___________
\ 。` ⌒゚:j´ ,/ j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |...
9
____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) |
/ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
sysbench バグってる?
まさかそんなわけ,ね
http://kao...
10
https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c
11
https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c
ここで乱数取って
12
https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c
ここで乱数取って
乱数アドレス変換
13
https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c
ここで乱数取って
乱数アドレス変換
メモリアクセス
14
https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c
ここで乱数取って
乱数アドレス変換
メモリアクセス
ここがループ
バグっとるやん…
• 乱数取得がループの外
 ループの中ではアクセスするアドレス変わらない
 ループの中では同じアドレスばかりアクセス
• シーケンシャルですらない
• そら速いわな…
15
ぎっぱぶ のリポジトリ見る
• 当時の master (v0.5)とは別に,v1.0 ってブランチがある
• そっち見たら直ってる
• なんでv1.0が master じゃないんじゃ!!??!?!
16
聞いてみた
17https://github.com/akopytov/sysbench/issues/67
あ,はい
18
問題はこれだけじゃなくて…
• このベンチマークには,
“memory_block_size”
というアクセスサイズを指定するパラメータがあるが…
19
20https://github.com/akopytov/sysbench/blob/c36861f5ad56b79ba
32056759bc5efb4a47c1296/sysbench/tests/memory/sb_memory.
21
sizeof (int) バイトアクセス
memory_block_size 回ループ
https://github.com/akopytov/sysbench/blob/c36861f5ad56b79ba
32056759bc5efb4...
22
sizeof (int) バイトアクセス
memory_block_size 回ループ
memory_block_size * sizeof (int) byte アクセス!
…だめじゃん
https://github.com/akopy...
結果どうなるかというと
23
ランダムアクセス: 71.1297s
やっぱりなんか遅いよね…
シーケンシャルアクセス: 2.0295s
直った(プルリク投げた)
24
https://github.com/akopytov/sysbench/commit/401c5a43aa40a0b89689747b278fae2adbc302db
結果は?
25
ランダムアクセス: 71.1297s
修正後ランダムアクセス: 23.9801s
シーケンシャルアクセス: 2.0295s
まぁ,こんなものなのか…?
まとめ
• ベンチマークソフトを過信しない
• ベンチマークソフトの方がおかしいことだってある
• おかしいなって思ったらちゃんと調べよう
• 信じられるのはコードだけ
• 最新版の Sysbench では,話した問題は直っている
• Ubun...
Q & A (おまけ:自己紹介掲載)
• 氏名: 深井 貴明
• 所属: 筑波大学
• Twitter: @deep_tkkn
• BitVisor であれこれしてる人
27
Upcoming SlideShare
Loading in …5
×

そのベンチマークソフト 本当に大丈夫ですか?

1,039 views

Published on

合同勉強会 in 大都会岡山 -2016 Winter-
2016年12月17日

Published in: Technology
  • Be the first to comment

  • Be the first to like this

そのベンチマークソフト 本当に大丈夫ですか?

  1. 1. そのベンチマークソフト 本当に大丈夫ですか? @deep_tkkn 2016.12.17 合同勉強会 in 大都会岡山 -2016 Winter-
  2. 2. ベンチマークソフト使いますよね? • 実行時間とかスコアとか出ますよね? • それ, 2
  3. 3. ベンチマークソフト使いますよね? • 実行時間とかスコアとか出ますよね? • それ, 鵜呑みにしてはないですか? 3
  4. 4. ベンチマークソフト使いますよね? • 実行時間とかスコアとか出ますよね? • それ, 鵜呑みにしてはないですか? • ベンチマークソフトが正しいとは限らないんですよ… という話をします 4
  5. 5. まぁ,ベンチマーク取るわけですよ 5 Sysbench memory test: メモリアクセス速度を測るベンチマーク シーケンシャルアクセス ランダムアクセス
  6. 6. 6 ____ / \ / ─ ─\ / (●) (●) \ | (__人__) | / ∩ノ ⊃ / ( \ / _ノ | | .\ “ /__| | \ /___ / ふむふむ, ランダムアクセスの 方が速いのか http://kaomojich.com/aa/yaruo/
  7. 7. 7 ____ / \ / ─ ─\ / (●) (●) \ | (__人__) | / ∩ノ ⊃ / ( \ / _ノ | | .\ “ /__| | \ /___ / ふむふむ, ランダムアクセスの 方が速いのか http://kaomojich.com/aa/yaruo/
  8. 8. 8 ____ / \ / ⌒ ⌒ \ / (●) (●) \ | 、" ゙)(__人__)" ) ___________ \ 。` ⌒゚:j´ ,/ j゙~~| | | | __/ \ |__| | | | | | / , \n|| | | | | | / / r. ( こ) | | | | | | ⌒ ーnnn |\ (⊆ソ .|_|___________|  ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_ 何言ってんだこいつ ランダムアクセスの方が 速いわけないだろ http://kaomojich.com/aa/yaruo/
  9. 9. 9 ____ / \ / ─ ─\ / (●) (●) \ | (__人__) | / ∩ノ ⊃ / ( \ / _ノ | | .\ “ /__| | \ /___ / sysbench バグってる? まさかそんなわけ,ね http://kaomojich.com/aa/yaruo/
  10. 10. 10 https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c
  11. 11. 11 https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c ここで乱数取って
  12. 12. 12 https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c ここで乱数取って 乱数アドレス変換
  13. 13. 13 https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c ここで乱数取って 乱数アドレス変換 メモリアクセス
  14. 14. 14 https://github.com/akopytov/sysbench/blob/0.5/sysbench/tests/memory/sb_memory.c ここで乱数取って 乱数アドレス変換 メモリアクセス ここがループ
  15. 15. バグっとるやん… • 乱数取得がループの外  ループの中ではアクセスするアドレス変わらない  ループの中では同じアドレスばかりアクセス • シーケンシャルですらない • そら速いわな… 15
  16. 16. ぎっぱぶ のリポジトリ見る • 当時の master (v0.5)とは別に,v1.0 ってブランチがある • そっち見たら直ってる • なんでv1.0が master じゃないんじゃ!!??!?! 16
  17. 17. 聞いてみた 17https://github.com/akopytov/sysbench/issues/67
  18. 18. あ,はい 18
  19. 19. 問題はこれだけじゃなくて… • このベンチマークには, “memory_block_size” というアクセスサイズを指定するパラメータがあるが… 19
  20. 20. 20https://github.com/akopytov/sysbench/blob/c36861f5ad56b79ba 32056759bc5efb4a47c1296/sysbench/tests/memory/sb_memory.
  21. 21. 21 sizeof (int) バイトアクセス memory_block_size 回ループ https://github.com/akopytov/sysbench/blob/c36861f5ad56b79ba 32056759bc5efb4a47c1296/sysbench/tests/memory/sb_memory.
  22. 22. 22 sizeof (int) バイトアクセス memory_block_size 回ループ memory_block_size * sizeof (int) byte アクセス! …だめじゃん https://github.com/akopytov/sysbench/blob/c36861f5ad56b79ba 32056759bc5efb4a47c1296/sysbench/tests/memory/sb_memory.
  23. 23. 結果どうなるかというと 23 ランダムアクセス: 71.1297s やっぱりなんか遅いよね… シーケンシャルアクセス: 2.0295s
  24. 24. 直った(プルリク投げた) 24 https://github.com/akopytov/sysbench/commit/401c5a43aa40a0b89689747b278fae2adbc302db
  25. 25. 結果は? 25 ランダムアクセス: 71.1297s 修正後ランダムアクセス: 23.9801s シーケンシャルアクセス: 2.0295s まぁ,こんなものなのか…?
  26. 26. まとめ • ベンチマークソフトを過信しない • ベンチマークソフトの方がおかしいことだってある • おかしいなって思ったらちゃんと調べよう • 信じられるのはコードだけ • 最新版の Sysbench では,話した問題は直っている • Ubuntu とかのパッケージはもしかしたら古いかも • sysbench –version で 0.4 とか 0.5 とか出たらアウト • 自分でビルドしましょう 26
  27. 27. Q & A (おまけ:自己紹介掲載) • 氏名: 深井 貴明 • 所属: 筑波大学 • Twitter: @deep_tkkn • BitVisor であれこれしてる人 27

×