ホストI / O負荷が高いときに仮想マシンがI / Oでハングするのはなぜですか?

ホストI / O負荷が高いときに仮想マシンがI / Oでハングするのはなぜですか?

ホストOSにI / O負荷が多すぎると、すべてのVMがI / Oのために莫大に輻輳し始め、systemdを使用して起動できないことを何度も確認しました。CPUが停止しました。メッセージやその他のタイムアウト。 LinuxホストのVMWare WorkstationとVirtualBoxの両方でこのように動作します。どんなゲストとも。デフォルトでは、ホストがファイルシステムチェックや一部のチェックサム計算などを実行している場合、I / O操作はほとんどないため、ゲストオペレーティングシステムは半分しか機能しません。

このタイプのロード中にホストプロセスがI / Oを共有するのに問題はなく、2番目のチェックサムが実行されると、I / Oが2つのプロセス間である程度均等に分散されることに注意する価値があります。なぜそんなことですか? VMをそのように「特別」にする理由は何ですか?助けてもらえますか?

答え1

コンシューマクラスのコントローラ/ディスクには、複数の重いI / O操作を効率的に実行する能力がありません。しかし、一般的に技術が速いほど、プロセスはより良くなります(理論的には)。

明らかに、ソフトウェアRAID(OPで述べたように)のようにCPU / I / O集中的なタスクを実行すると、コントローラが共有されているときとCPUリソースが使い果たされると、全体的な設定のパフォーマンスが低下します。少なくともハードウェアRAIDコントローラに投資することをお勧めします。

サーバークラスのハードウェアは通常、大量のアクセスで複数のVM /複数のユーザーを同時に処理できます。

ただし、サーバークラスのハードウェアを選択することはすべてではなく、消費者クラスまたはサーバークラスのハードウェアを扱うときに非常に便利ないくつかの最適化戦略があります。

paravirtualizing仮想マシンで実行できることは、ハイパーバイザーのI / O負担を軽減するのに非常に役立つサービスです。

準仮想化は、バルクデータ転送(VMWareではPVSCSIと呼ばれます)を仮想化サービス/カーネルに直接実行する特別なドライバを追加することを意味するため、物理メディアストレージ/NICをエミュレートする必要はありません。

EnterpriseでもWorkstationでも、すべてのvmwareソリューションにLinuxおよびFreeBSD用のパッケージが用意されていますopen-vm-tools

Debian では、次のコマンドを使用してインストールできます。

apt-get install open-vm-tools

Debian Stretchでは、何もコンパイルしません。 Jessieの場合、バックポートにopen-vm-toolsv10をインストールするため、バックポートにopen-vm-toolsをインストールすることをお勧めします。

open-vm-toolsをインストールしたら、VMをシャットダウンし、ディスクコントローラをタイプに変更し、ParaVirtualネットワークコントローラをタイプに変更する必要がありますvmxnet3

見るVMware準仮想化SCSI(PVSCSI)アダプタを使用するようにディスクを構成する(1010398)

また、vmtoolsを使用すると、仮想マシンがメモリを拡張して未使用のRAMを消費する必要がなくなります。

仮想メモリバルーンは、物理ホストシステムが特定のゲスト仮想マシン(VM)で未使用のメモリを検索し、それを他のVMと共有できるようにするハイパーバイザーによって使用されるコンピュータメモリ回収技術です。メモリバルーンを使用すると、ゲストVMに必要な合計RAM量がホストで使用可能な物理RAM量を超えることがあります。

VTやVT-dなどのプロセッサレベルのエミュレーション技術のサポートも、プロセスをよりスムーズにするのに役立ちます。インテルダイレクトI/O仮想化技術(VT-d)

言うまでもなく、I / Oを減らすオペレーティングシステムレベルの最適化も役立ちます。たとえば、ローカル仮想マシンではなくリモートロギングシステムにロギングします。

または、パーティションをソートします。

VMware vSphere 5、DeepDrive、Part 1のパーティションの並べ替え

VMware vSphere 5、DeepDrive、Part 2のパーティションの並べ替え

また、突然の再起動中にログの整合性を維持するために、ログデーモンがログファイルをフラッシュしたときに/ varパーティションからデータベースストレージスペースを取得するなど、他のI / O最適化にも注意してください。

また、必要な最小限のサービスを使用するというUnix哲学に従うのにも役立ちます。私の経験では、小規模なVMは内部管理/ページングの面でより少ないI / Oを使用します。明らかに、実際に持っているよりも多くのメモリを使用すると、I / Oの問題(ガーベッジコレクションとも呼ばれる)が発生する可能性があります。

また、ハイパーバイザーで特定の仮想マシンのI / O優先順位を微調整して、優先順位を高く設定することもできます。 VCenter / VMWare ESXで実行できることを知っています。 VMWare Workstationはレベル2ハイパーバイザーなので、I / O操作とスライスクォータ管理を担当するホストOSです(詳細は後で詳しく紹介します)。

レベル 2 ハイパーバイザーを使用する場合、ここで説明する最適化の多くは、可能な限りホスト オペレーティング システムにも適用する必要があることは言うまでもありません。

VMwareハイパーバイザー技術も〜らしい他のオプションよりも複数の仮想マシンで高い負荷I / Oを処理します。

しかし、パフォーマンスに興味があれば、少なくともVMWareの世界では少なくとも生産システムの場合、VMware Workstationを使用する代わりに、Type-1 /ベアメタルハイパーバイザー(ESXまたはESXi)を使用することをお勧めします。

~から管理プログラム:

タイプ1.プライマリまたはベアメタルハイパーバイザーこれらのハイパーバイザーはホストハードウェアで直接実行され、ハードウェアを制御し、ゲストオペレーティングシステムを管理します。したがって、ベアメタルハイパーバイザーとも呼ばれます。 1960年代にIBMが開発した最初のハイパーバイザーは、ネイティブ・ハイパーバイザーでした。 [4] これには、テストソフトウェア SIMMON および CP/CMS オペレーティングシステム (IBM z/VM の全身) が含まれます。最新バージョンには、Xen、SPARC用のOracle VM Server、x86用のOracle VM Server、Citrix XenServer、Microsoft Hyper-V、およびVMware ESX / ESXiが含まれます。タイプ2またはマネージドハイパーバイザーこれらのハイパーバイザーは、他のコンピュータープログラムと同様に、既存のオペレーティングシステム(OS)で実行されます。ゲストオペレーティングシステムは、ホストシステムでプロセスとして実行されます。

タイプ2ハイパーバイザーは、ホストオペレーティングシステムからゲストオペレーティングシステムを抽象化します。 VMware Workstation、VMware Player、VirtualBox、Parallels Desktop for Mac、および QEMU は、タイプ 2 ハイパーバイザーの例です。

Xen最後に、PVモードのLinuxホストdockerなど、大容量ストレージアクセスにエミュレーション層を追加しない基本的なハイパーバイザーまたはコンテナ技術を使用するオプションもありますFreeBSD jails。この記事の範囲。

関連情報