HOME / コンピュータTips / VirtualBox / AHCIは速いのか?

Date: 2010/08/07 |  このエントリーをはてなブックマークに追加  |  Tags: VirtualBox, 仮想化, AHCI, IDE, Disk

VirtualBoxのAHCIはどの程度速いのか?

VirtualBoxのディスクは、IDEとAHCIとSCSIに対応しています。IDEはデータこそDMAであれ、コマンドがPIOなのにたいして、AHCIやSCSIはある程度インテリジェントな実装のHDDです。

これを仮想化(仮想マシンに見せるハードの差異)で考えてみます。

IDEのような小粒な命令をソフトでPIOするものは、I/Oのハンドシェイクプログラムが仮想マシン層で動くことになります。一方、AHCIとかSCSIの場合、はある程度まとまった大粒な命令が仮想マシン層で動き、命令の解釈結果はネイティブの環境で動きます。

となるとAHCIやSCSIの方が速い感じがします。じゃあ、一体どんなものだろう?と、思って調べてみました。とりあえず、仮想マシンのWindows XP(on OpenSolaris(ZFS))で、実験してみます。

ディスクは、raw volumeをzfsのzvol(FSからローボリュームを切り出す機能)にアサインし、vmdkファイルを手で作ってVirtualBoxに認識させたものです。

VirtualBox: IDE PIIX 4 over zvol/vmdk on ZFS

これはデフォルトの状態で、仮想マシンにはIDEがPIIX4が見えてる状態です。

-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo

Crystal Dew World : http://crystalmark.info/

-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 32.052 MB/sSequential Write : 28.851 MB/sRandom Read 512KB : 30.247 MB/sRandom Write 512KB : 29.203 MB/s

    Random Read 4KB (QD=1) :     3.620 MB/s [   883.8 IOPS]
   Random Write 4KB (QD=1) :     3.485 MB/s [   850.8 IOPS]
   Random Read 4KB (QD=32) :     3.722 MB/s [   908.8 IOPS]
  Random Write 4KB (QD=32) :     3.547 MB/s [   865.9 IOPS]

  Test : 50 MB [C: 73.2% (23.4/32.0 GB)] (x1)
  Date : 2010/06/29 15:05:34
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)

VirtualBox: AHCI SATA/300 over zvol/vmdk on ZFS ( ARC 上 )

これを既に仮想マシンとしてインストール済のWindowsのCドライブに対して行うには、ちょっとしたTipsがいります。

  1. VirtualBoxでAHCIのインターフェースをつける。IDEとは別に。
  2. ブートしたらハードウェアが増えているので、ドライバをインストールする
  3. インストールにて認識したらシャットダウン。
  4. 今度はVirtualBoxの設定で、IDEのコントローラを取り外し、AHCIだけにして、AHCIボリュームの下にCドライブのイメージを貼り付ける。
  5. 起動すると、AHCIのドライバが先に存在することになり、XPなら自動的に発見してくれます。

結果です。

-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo

Crystal Dew World : http://crystalmark.info/

-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 578.894 MB/sSequential Write : 522.546 MB/sRandom Read 512KB : 408.473 MB/sRandom Write 512KB : 515.665 MB/s

    Random Read 4KB (QD=1) :    13.708 MB/s [  3346.6 IOPS]
   Random Write 4KB (QD=1) :    11.187 MB/s [  2731.2 IOPS]
   Random Read 4KB (QD=32) :    12.667 MB/s [  3092.5 IOPS]
  Random Write 4KB (QD=32) :    10.797 MB/s [  2635.9 IOPS]

  Test : 50 MB [C: 73.2% (23.4/32.0 GB)] (x1)
  Date : 2010/06/29 15:34:21
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)

うっは〜。ZFSのARCバッファにのっちゃいました。その後、500MBまで増やしましたが、ARCバッファに乗ってしまう状態。まあこれはこれで、実環境で起きてればそれはいいわけですが。。。

VirtualBox: AHCI SATA/300 over zvol/vmdk on ZFS ( ARC 外 )

いろんなことをしてとにかくARCをあふれさえてみました。あふれてもこの程度は出ます。

-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo

Crystal Dew World : http://crystalmark.info/

-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 83.699 MB/sSequential Write : 92.113 MB/sRandom Read 512KB : 83.496 MB/sRandom Write 512KB : 134.187 MB/s

    Random Read 4KB (QD=1) :     3.340 MB/s [   815.5 IOPS]
   Random Write 4KB (QD=1) :     3.879 MB/s [   946.9 IOPS]
   Random Read 4KB (QD=32) :     7.257 MB/s [  1771.6 IOPS]
  Random Write 4KB (QD=32) :     5.705 MB/s [  1392.8 IOPS]
  Test : 50 MB [C: 73.1% (23.4/32.0 GB)] (x1)
  Date : 2010/06/29 17:08:37
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)
 

まとめ

AHCIの圧勝!ということがわかりました。IDE遅すぎ(笑)

おまけ:NICの違い

こんどは、ホストPC上のCIFS機能(sambaのようなものだけど、ACLにかっちり対応した別の実装)を使い、ネットワークドライブをマウントしてみました。

仮想NICは、VirtualBoxの設定で行います。最初の1つめは100Mなので、気をつけましょう。

Intel e1000g0(IntelのGBEエミュレーション)

フルには速度はでないでしょうが・・・

-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo

Crystal Dew World : http://crystalmark.info/

-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 40.145 MB/sSequential Write : 6.841 MB/sRandom Read 512KB : 38.974 MB/sRandom Write 512KB : 5.471 MB/s

    Random Read 4KB (QD=1) :     4.748 MB/s [  1159.2 IOPS]
   Random Write 4KB (QD=1) :     0.680 MB/s [   165.9 IOPS]
   Random Read 4KB (QD=32) :     4.469 MB/s [  1091.1 IOPS]
  Random Write 4KB (QD=32) :     3.138 MB/s [   766.2 IOPS]

  Test : 50 MB [H: 31.3% (65.5/209.1 GB)] (x1)
  Date : 2010/06/29 21:29:17
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)
 

やっぱり、NICになると遅いですね。最大転送が320Mbpsなので、100Mからすれば1Gに増やすメリットはでていますが・・・

Redhat VirtIO Red Hat Inc. 2009/09/24 5.1.209.605

NICをvirtioに変えてみます。

virtioというのは何かというと、シンプルに言うと、RHEL6で採用される仮想化機能、KVM関係で定められている、仮想化マシンとのブリッジAPIみたいなものです。

つまり、パラバーチャリゼーションドライバ(なるべくハードエミュレーションを行わず、多くの処理をホストサーバ側でネイティブで動作させるようなもの)をいれてみました

-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo

Crystal Dew World : http://crystalmark.info/

-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 36.679 MB/sSequential Write : 14.342 MB/sRandom Read 512KB : 35.053 MB/sRandom Write 512KB : 16.477 MB/s

    Random Read 4KB (QD=1) :     3.489 MB/s [   851.9 IOPS]
   Random Write 4KB (QD=1) :     0.520 MB/s [   126.9 IOPS]
   Random Read 4KB (QD=32) :     6.565 MB/s [  1602.7 IOPS]
  Random Write 4KB (QD=32) :     3.091 MB/s [   754.7 IOPS]

  Test : 50 MB [H: 31.3% (65.6/209.7 GB)] (x1)
  Date : 2010/06/30 18:36:47
    OS : Windows XP Professional SP3 [5.1 Build 2600] (x86)
 

あれ〜、書き込みが2倍になってるが、読み込みはちょっと劣化してる。

とりあえず、VIRTIOは、まだバグが多く、動きが怪しくなるんで、現時点では私はGBEの方にしています。

ちなみにVirtIOは、ネットワーク以外にもステージやビデオカードなどあるようです。VirtualBoxはネットワークだけしか対応してませんが。

まとめ2

VirtIOは確かに速くなるが、安定性がまだ低い。動作中にたまにNicが刺さるようになっていた等。

結論を言うと、今のところ、仮想マシンにはe1000g0がお勧めってことでしょうか。


コンピュータTips/VirtualBox

Recent Updates

ディスクの不良を確認する(iostat -EnのError等)

ディスク関係のスタックをざっくり書くと次の様になっています 例、SAS Expanderを使う場合、 例、AHCIなどを使う場合、 これらのエラーは、次の様なコマンドで知ることができます。 出力結果例 このなかで、 たとえば、SATAディスクを利用している際に負荷が上がってしまい、ディスクの応答が間に合わないシチュエーションでは、Transport Errorが一気に …
»続きを読む

2017年、新年明けまして、おめでとうございます。

日記/2017年、新年明けまして、おめでとうございます。

新年明けまして、おめでとうございます。今年もよろしくお願いします。 昨年中は、皆様にお世話になりました。 昨年は、コツコツと3年程前から行ってきた改革がある程度完成された年で、この先5年、10年を見据えて、次のフェーズへと進む為の土台が完成した年でもありました。 それにキャッチアップする形で、個々の従業員一同が、役割を自覚し、明確に動けた年であったかと考えています。 …
»続きを読む

RSA鍵認証のみにし、Password認証を無効化する

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。 古いOpenSSHや、SunSSHの場合は、これも無効にします。 ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。 まず、Password認証を無効にする場合、 PasswordAut …
»続きを読む

Nexus7 2013をMarshmallow(Android 6.0)化

OTAでない方法で。 だいたい ここに書いてある方法 なんだけど、adbなどが一式使えている状態で。 まずは自分の機種のものをダウンロードする。僕のは、 Android 6.0 Marshmallow for Nexus 7 2013 Wi-Fi 。tgzを展開し、zipも解いておく。 まずはboot loaderへ。 bootloader自体のアップデート。一式、updat …
»続きを読む

OS X 10.11 El Capitanで、phpのモジュールインストール

Yosemiteからのアップデートは割と簡単です。なぜならYosemite時に、すでにapache 2.4になり、php 5.5になっているから(笑 アップデート前に、まずはphp.iniとhttpd.confをバックアップしておきましょう きになるなら、hostsとかapache以下全てをバックアップしておいてもいいかも。 後はEl Capitanにアップデートする。 アッ …
»続きを読む

EasyAcc Powerbank PB4000CB

スマフォTips/モバイルバッテリー/モバイルバッテリー製品レビュー/EasyAcc Powerbank PB4000CB

薄型のモバイルバッテリーEasyAcc Powerbank PB4000CBです。 今や、モバイルバッテリーは大型のものが好まれるのか、隙間無く商品があります。20,000mAh越えで、「でけえ!」とか言ってますけど、大きいのを探せば、100Wh(27,000mAh)、200Wh当たり前、探せば500Wh(135,000mAh)とか、もっともっとあるのです。用途がどんどん異なっていくので …
»続きを読む

EC Technology Sports Headsets S10-JWH07B

デバイスTips/Bluetooth/EC Technology Sports Headsets S10-JWH07B

Bluetoothのスポーツヘッドセット、 S10-JWH07B について。 今までブログに記載することはなかったのですが、実は割とBluetoothと言うか無線型のヘッドフォンを沢山持っています。赤外線や独自物、Bluetoothなどいくつもストックを持っていたりします。普通の人からするとマニアです。でも、マニアからみるとそうでもないレベルです。 ただ「ヘッドフォンの音質」というの …
»続きを読む

静岡県内をVPNでつなぐ(割と特殊な例)

静岡というのはある意味特殊な土地で、ほとんどのインターネットプロバイダのPOIは静岡でつながれておらず、NTT西圏内のどこかで繋がっているので、大抵大阪折り返しになる。仮に静岡県内にPOIがあっても、だいたい静岡でルーティングしてないので、やっぱり東京折り返しになってたりする。例え 同じプロバイダを使っていたとしても 。 だから静岡←→静岡のVPNは、静岡←→東京や、静岡←→大阪よりも遅 …
»続きを読む

最新  |  << 前ページ  |  次ページ >>  |  最初