「クラウド」カテゴリーアーカイブ

VirtualBox 5.0の準仮想化クロックの速度測定

***本記事にはプロモーションが含まれています。***

VirtualBox 5.0の準仮想化クロックをgettimeofday()を使って測定された方がいらっしゃいました。

VirtualBox 5 で利用可能になった Paravirtualization 機能 kvmclock を使う

kvm-clockは、TSC(Time Stamp Counter)より2倍くらい遅いそうです。

TSCはCPUが刻んでいるタイマーです。タイマーとしては一定のリズムを刻んでほしいのです。しかし、昔のCPUではCPUがスリープモードになったりして周波数を落とすと、一緒になって遅くなってしまうことがあったそうです。最近のCPUでは大丈夫なようですが。また、TSCの値がCPUのコアごとに少しずつずれてしまうのです。それで、なかなか安定したタイマーとしては使いにくいのです。

調べてみると、kvm-clockもTSCを使っています。詳しくは次の記事に書きます。

VirtualBox 5.0のSMPスピンロックの確認

***本記事にはプロモーションが含まれています。***

VirtualBox 5.0では、Linuxゲストに対してKVMタイプとして準仮想化クロックとSMPスピンロックが提供されます。

今回は、SMPスピンロックを確認してみます。

ベンチマークとしてUnixBench 5.1.3を用いました。

準仮想化インターフェースで”なし”と”KVM”を選んでそれぞれUnixBenchを走らせます。

ゲストOSはUbuntu 12.04で仮想CPUを2CPUで行いました。

まずはUnixBenchをダウンロードしてきて解凍しベンチマークを走らせます。
-iというオプションは測定を各項目で1回に制限するものです。そうしないと、10回やってしまい30分くらい時間がかかります。

wget https://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz
tar xvzf UnixBench5.1.3.tgz
cd UnixBench
./Run -i 1

準仮想化インターフェースを変えても結果はあまり変わらなかったのですが、Index Scoreと特に値が大きく変わったPipe-based context switchingをまとめました。

Index Score

準仮想化インターフェース 1CPU 2CPU
なし 1739.7 2912.0
KVM 1910.0 3278.5

Pipe-based context switching

準仮想化インターフェース 1CPU 2CPU
なし 329.3 565.5
KVM 919.5 1814.0

Pipe-based context switchingというのは、プロセスのコンテキストスイッチを起こさせることでOSとCPUの性能の違いを見るものです。コンテキストスイッチとは、複数のスレッドやプロセスの実行の順番を変えて実行することです。

準仮想化インターフェースにKVMを選ぶことで565.5から1814.0と3倍くらい性能が上がっていることが分かります。

Index Scoreの値が変わったのは主にPipe-based context switchingが変わったことによるものです。

ただ、実際にこの違いが分かるかというと、マルチスレッドのプログラムをぶん回したりサーバーで複数のプロセスを高負荷で動かすことをしないと実感できないと思います。

以上、VirtualBox 5.0のSMPスピンロックについて確認してみました。

OpenStackでできること、変わること

***本記事にはプロモーションが含まれています。***

OpenStackのセミナーの様子が報告されています。

「分かる、できる、本当に使える、OpenStack超入門」セミナーリポート~ユーザー、ベンダーが本音で語った「できること、変わること」~ (1/3)

報告をピックアップしてみると次のようになります。

バージョンアップは負担になる。まずは使ってみること。

コスト意識は大切。OpenStack APIが使えればベンダーロックインは避けられる。

小さく始めて大きく育てること。

とにかく自動化すること。とにかくテストすること。手動で行わないことが大切です。

バージョンアップの問題は実例がそろい出したところです。

企業文化を変えることが必要です。

導入にはそれなりに学習コストがかかることが分かります。企業文化を変えることも思わぬ障害になるかもしれません。今まで慣れてきた「動いているものは触るな」という文化にはそぐわないものですので。まずは使ってみることというのが一番初めにやることかなという気がします。

VirtualBox 5.0の準仮想化クロック

***本記事にはプロモーションが含まれています。***

VirtualBox 5.0が登場しました。

VirtualBox

プレスリリースによると次のような特徴があります。

  • WindowsとLinuxゲストの準仮想化のサポート
  • CPU使用の改善。CPUの命令が増えています。
  • USB 3.0のサポート
  • Windowsのドラッグアンドドロップのサポート
  • ディスクイメージの暗号化

Linuxゲストの準仮想化をサポートするというので、早速インストールしてみました。

前回にも書きましたが、Linuxゲストの準仮想化はXenのように準仮想化専用のカーネルを動かすのではなく、準仮想化インターフェースに機能を提供してエミュレーションの精度をあげるものです。

Linuxゲストには、KVMタイプとして準仮想化クロックとSMPスピンロックが提供されます。この準仮想化クロックを確認してみます。

今回はUbuntu 12.04ゲストで確認しました。

まずは順番にインストールしていきます。

  • VirtualBox 5.0のインストール
  • Extenstion Packのインストール
  • ゲストOSを起動してGuest AdditionsをゲストOSにインストール
  • 一度シャットダウンして、仮想マシンの設定で、システムー>アクセラレーション準仮想化インターフェースで、KVMもしくはデフォルトを選びます。デフォルトはゲストOSのタイプによって提供するインターフェースを変えてくれます。
  • ゲストOSの起動

起動したら、dmesgで起動時のメッセージを確認します。

$ dmesg |grep KVM
[ 4.515926] Booting paravirtualized kernel on KVM

このようにon KVMとでていれば成功です。

同様にkvm-clockを確認することで準仮想化クロックを使っていることが分かります。

$ dmesg |grep kvm-clock
[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[ 0.000000] kvm-clock: cpu 0, msr 0:1cf9781, boot clock
[ 4.516128] kvm-clock: cpu 0, msr 0:7fc12781, primary cpu clock
[ 4.730889] kvm-clock: cpu 1, msr 0:7fd12781, secondary cpu clock
[ 4.798499] Switching to clocksource kvm-clock

もし、kvm-clockなんて出てこなかったらkvm-clockがシステムに存在するか次のように調べます。

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc acpi_pm

もし、なければカーネルにCONFIG_PARAVIRT_CLOCKが設定されていたか調べます。

$ less /boot/config-hogehoge
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_PARAVIRT_CLOCK=y

こうなっていなければ、準仮想化クロックは使えません。CONFIG_PARAVIRT_CLOCKがあって、kvm-clockがないときは、VirtualBoxがインターフェースを提供できていないです。

準仮想化クロックを使うことで時間の精度が上がります。でも、ゲストOS上でもNTPを使ったほうがよいようです。

KVMにおいて ホストとゲストの時間管理はNTPを用いるべきか?

準仮想化クロックと共に提供されるSMPスピンロックはマルチCPUでたくさんのプロセスを同時に起動したときの効率を高めてくれるものです。

ベンチマークを取らないと確認できないと思います。

ネットワークやディスクのアクセスも改善されるのかも確認が必要ですね。

以上、準仮想化クロックについて確認してみました。

VirtualBox 5.0RC2が登場

***本記事にはプロモーションが含まれています。***

VirtualBox 5.0のリリースが間近のようです。

VirtualBox 5.0リリース間近、RC2が登場。準仮想化でWindowsやLinuxの性能向上、USB 3.0対応など

準仮想化に対応ということで少し調べてみました。

準仮想化インターフェースという設定項目ができた。

Xenのように準仮想化のカーネルを動かすかと思ったけどそうでないようです。

マニュアルを読んでみると、ゲストOSの準仮想化機能にインターフェースを提供してエミュレーションの精度を上げるもののようです。

デフォルト、Legacy、Minimal、Hyper-V、KVMと選択項目があります。

デフォルトだと、ゲストOSのタイプによって変わります。

MinimalはTSC(タイムスタンプカウンター)とAPICの周波数をゲストOSに提供する。MacOSに推奨。

KVMだと、Linuxカーネル2.6.25以上で、準仮想化クロックとSMPスピンロックを提供する。Linuxに推奨。

Hyper-VだとWindows 7以上で、準仮想化クロック、APICの周波数の通知、タイマーのチェックの緩和。WindowsとFreeBSDに推奨。

Legacyだと何もやらないのか記述がないです。

ゲストOSの時間の問題は複雑でパフォーマンスにも大きな影響があったので、その改善に役立つのではないでしょうか。

仮想化・サーバー統合の動きが加速

***本記事にはプロモーションが含まれています。***

Windows Server 2003のサポートが7月15日で終了します。しかし、2014年度のIAサーバーは前年割れだそうです。

仮想化・サーバー統合と「Windows Server 2003」リプレース

IAサーバーの台数は増えませんでしたが、Windows Server 2003からの移行は進んでいます。

それでも増えない理由はサーバーの仮想化や統合が進んでいるからです。素直にWindows Server 2012 R2になっているのは80%だそうです。

仮想化は64%、サーバー統合は69%の企業が実施です。

だいたい6割強ですね。やっとここまできたかという感じです。

クラウドの普及もこれからがむしろ本番なのでしょう。どれくらいの割合まで行くでしょうか。仮想化よりは少なくなると思いますけどね。

XeonのFPGAは2016年から

***本記事にはプロモーションが含まれています。***

インテルがアルテラを買収しましたが、FPGAをXeonに載せる詳細が紹介されています。

インテル、ISCA 2015でXeon+FPGAの詳細を公開

まずはOpenCLをFPGAで使う方法が考えられています。

そのほかに、ディープラーニングとかネットワークのOpen vSwitchのオフロード、金融機関のHigh Frequency Trading Acceleratorとか。

基本的にどんなプログラムでも回路に直せば使えると思いますけどね。

2016年に出荷が予定されているそうですから、楽しみに待ちましょう。

OpenStackの効率化

***本記事にはプロモーションが含まれています。***

OpenStackが何を効率化するのかについて紹介されています。

OpenStackを使うと、結局何を効率化できるのか? (1/2)

この記事では、運用面でのメリットが述べられています。

記事で触れられていないことをしいて挙げるとするなら自前でシステムを構築する場合、仮想化ソフトやクラウドソフトのインストールが必要になることでしょうか。

運用する人の判断や作業が省力化されているんですね。

コンピュータを何十台何百台と管理しなければならない場合にとても有効なのだと思います。

Windows 10のUniversal Windows App

***本記事にはプロモーションが含まれています。***

Windows 10では、Universal Windows Appという形式でアプリケーションが配布されるようですね。

Windows 10世代では、アプリケーションはUniversal Windows Appに

すべてのアプリケーションがこの形式になるのでしょうか。

AndroidやiOSのアプリもWindows 10で実行できるようにしていますね。紹介されているプロジェクトの中では、Project Astoriaというのが気になりました。

Androidのファイルシステム、ネットワーキング、カメラ、センサーのAPI呼び出しをフックしてUWP(Universal Windows Platform)というアプリ実行基盤に変換するのだそうです。

Androidの実行ファイルをエミュレーションで実行させるもののようですがどこまで実現できるのでしょう。

Windows Phoneはどれくらい売れますかね。