NetBSD on KVM で性能が出ない (dbenchによるベンチマーク)
NetBSDでKVMを動かしていますが、どうにもディスクの速度がもっさりです。
そこで、同じ仮想科環境でLinuxなみの速度を目標に、まずはベンチマークをして現状把握をすることにしました。
用意した環境は次の三つで、リファレンスとなるのはx86_64なUbuntuと我らがNetBSD/amd64, NetBSD/i386です。
ベンチマークに使ったのはdbenchです。ddベンチでもよいかと思っていましたが、せっかくなので専用のベンチマークを使うかなと思いました。ちなみにdbenchを選んだ理由は特になく、pkgsrcをあさってdiskのdかなーと思ってみたらそうだった、ぐらいの軽いノリです。
あっ、NetBSD/amd64はhttp://www.tokuda.net/diary/KVM/NetBSDinstallにも書いたとおりACPI, MPの両方をOFFにして動作させています。
結果は次のとおり。
なんというか、ちょっとびっくりするくらいの差がついています。NetBSD/i386はなにかの測定ミスかと思うくらいの違いです。
また、NetBSD/amd64も速度が安定せず、徐々にスループットをあげて35MB/sぐらいで安定したと思いきや、徐々に下がってきて、結果として28MB/sぐらいになるという挙動です。
このぐらい差がつくと、ちょろっとしたチューニングで劇的に改善するんじゃないの? とかあさはかな考えでdkctlによるstrategyの変更を実施してみました。具体的にはpriocscanからfcfsです。
結果、26.1531 MB/s って下がってしまいました。
これにめげず、ジャーナルしないほうが速いかもとWAPBLをOFFに (mountオプションからlogを削除) してみました。
結果、22.5587 MB/s ってもっと下がってしまいました。WAPBLの説明を改めて読むと、asyncよりも少し遅い、と書いてあるくらいですから当たり前ですね。
そのあとも何度かベンチマークを走らせたのですが、どんどん結果が悪くなる一方です。
これはちょっとおかしい傾向で、悪いなら悪いなりに数字が安定してくれないと困ってしまいます。
ファイルシステムのチューニング以外の見落としがある可能性も高いということで、今日はここまで。
そこで、同じ仮想科環境でLinuxなみの速度を目標に、まずはベンチマークをして現状把握をすることにしました。
用意した環境は次の三つで、リファレンスとなるのはx86_64なUbuntuと我らがNetBSD/amd64, NetBSD/i386です。
ベンチマークに使ったのはdbenchです。ddベンチでもよいかと思っていましたが、せっかくなので専用のベンチマークを使うかなと思いました。ちなみにdbenchを選んだ理由は特になく、pkgsrcをあさってdiskのdかなーと思ってみたらそうだった、ぐらいの軽いノリです。
- dbenchについて
- dbench-3.04を使用
- client.txtは同一
- 実行コマンドはdbench -c client.txt 5
- diskについて
- すべてvirtioを使用
- linuxは(/dev/vda1 on / type ext4 (rw,errors=remount-ro))
- NetBSDは(/dev/ld0a on / type ffs (log, local))
- すべてqemu-imgによるイメージファイル
あっ、NetBSD/amd64はhttp://www.tokuda.net/diary/KVM/NetBSDinstallにも書いたとおりACPI, MPの両方をOFFにして動作させています。
結果は次のとおり。
OS | スループット(MB/s) |
---|---|
Ubuntu | 350.458 |
NetBSD/i386 | 6.043 |
NetBSD/amd64 | 28.191 |
また、NetBSD/amd64も速度が安定せず、徐々にスループットをあげて35MB/sぐらいで安定したと思いきや、徐々に下がってきて、結果として28MB/sぐらいになるという挙動です。
このぐらい差がつくと、ちょろっとしたチューニングで劇的に改善するんじゃないの? とかあさはかな考えでdkctlによるstrategyの変更を実施してみました。具体的にはpriocscanからfcfsです。
結果、26.1531 MB/s って下がってしまいました。
これにめげず、ジャーナルしないほうが速いかもとWAPBLをOFFに (mountオプションからlogを削除) してみました。
結果、22.5587 MB/s ってもっと下がってしまいました。WAPBLの説明を改めて読むと、asyncよりも少し遅い、と書いてあるくらいですから当たり前ですね。
そのあとも何度かベンチマークを走らせたのですが、どんどん結果が悪くなる一方です。
これはちょっとおかしい傾向で、悪いなら悪いなりに数字が安定してくれないと困ってしまいます。
ファイルシステムのチューニング以外の見落としがある可能性も高いということで、今日はここまで。
*1 : Linux ubuntu 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
*2 : NetBSD nbsd-head 5.99.59 NetBSD 5.99.59 (GENERIC) #0: Fri Jan 13 00:27:37 UTC 2012 builds@b7.netbsd.org:/home/builds/ab/HEAD/i386/201201121750Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/GENERIC i386
*3 : NetBSD head64. 5.99.59 NetBSD 5.99.59 (GENERIC) #0: Thu Jan 12 19:43:43 UTC 2012 builds@b8.netbsd.org:/home/builds/ab/HEAD/amd64/201201121750Z-obj/home/builds/ab/HEAD/src/sys/arch/amd64/compile/GENERIC amd64
- TB-URL http://www.tokuda.net/diary/0775/tb/
1: 774 2012年01月30日(月) 午後3時54分
ubuntuがいくらなんでも速すぎませんか。
お高いディスクお使いですか。
2: tokuda 2012年02月11日(土) 深夜0時52分
いえ、高いディスクでもなんでもない、何の変哲もないSATA 3.5inchディスクです。dmesgにはWD20EARS-00Mって出てますね。
3: 774 2012年02月16日(木) 午前11時42分
なるほど、dbenchのことは知りませんが、ちょっと前のSSDのカタログ性能くらい出ちゃってるのであれれと思いました。
NetBSDの場合、今どきのハードに対してMAXPHYSが小さすぎるのがディスク性能でない原因の(大きな)一つだと思ってます。きっと昔のハードに最適化してあるのでしょう (嘘)