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

openjdk(SPARC)

SPARC用のJAVA。 最近は新しいバージョンがSPARCでリリースされず、苦労している人も多いのですが、SPARC Solarisの界隈人達がビルドして代わりに使われているものです。 Solaris 11 SPARC jdk builds
»続きを読む

Solaris11のCPU(Critical Patch Unit)の当て方

コンピュータTips/Solaris/Solaris11のCPU(Critical Patch Unit)の当て方

Solaris 11.4には4つのリビジョンがあります。 2024年4月現在、Solaris自体の開発はメンテナンスフェーズになったわけでもなく、SRU毎に、最新機能がモリモリ入っていきます。 GA(Release 版) 一応、無償のOTNライセンスの利用も可能 いわゆる、リリース時点のバージョンのことですが、現在は 利用しません 。 以前は、1〜2年に1度の頻度でリリ …
»続きを読む

Emacs.appで書類(Documents)がアクセス出来ないとき

コンピュータTips/MacOSX/Emacs.appで書類(Documents)がアクセス出来ないとき

Catalina以降の権限問題なので、システム設定のセキュリティとポリシーの中にあるプライバシー内のFull Disk Accessに、Emacs.appと/usr/bin/rubyを入れればすむ。 /usrフォルダを、プライバシーの+から入れるのは、ちょっと面倒なので、あらかじめFinderのお気に入りの中に入れておくと良いでしょう。   rubyが入るのは、Emac …
»続きを読む

SONY WH-1000XM3

自分用メモです。 ノイズキャンセラーの性能が良い。 WH-1000Xのころは、ノイズキャンセラーを有効すると、音は聞こえないのに妙な音圧があったが、それがかなり軽減。個人的には気にならなくなった。 また、WH-1000Xのころは、ノイズキャンセラーを無効にしても、なんか作られたような音が出ていたような気がしたが、割と普通に聞こえる。 USB-Cになったのも良い。飛行機でも使う …
»続きを読む

Catalina(10.15)

Catalina Beta を入れ始めたので、自分用のまとめ。 2019/10/8、Catalinaが振ってきたので製品版用に記載を変えました。 32bitアプリを確認すること。 Activity Monitorで32bitアプリがわかるので、そういうアプリがあるなら代替品を見つけておくこと。 /etc以下のいくつかのファイルをバックアップしておくこと。 /etc …
»続きを読む

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

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

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

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

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

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

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

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