パフォーマンスと機能を最適化する
最適なサイズ設定、ネットワーク、管理のプラクティスを Azure Linux VM の展開プランに組み込んだら、パフォーマンスと機能について検討してください。 このユニットでは、Azure Linux VM のデプロイ用のネットワークとストレージのリソースを最適化する方法について説明します。
ネットワークのパフォーマンスを最適化する
Azure Linux VM のネットワーク パフォーマンスを最適化する場合、カーネルベースのネットワーク最適化を使用し、高速ネットワーク (使用可能な場合) を実装できます。
カーネルベースのネットワーク最適化
2017 年 9 月以降にリリースされた Linux カーネルには、Azure Linux VM でネットワーク スループットを向上できるようにするネットワーク最適化オプションが含まれています。 最新の Linux カーネルを使用すると、スループット パフォーマンスを大幅に向上できます。
新規および既存の Azure VM も、最新の Linux Integration Services (LIS) をインストールすることでメリットを得ることができます。 スループットの最適化はバージョン 4.2 以降の LIS に含まれており、後続のバージョンにはさらなる機能強化が含まれています。
Accelerated Networking
高速ネットワークを実装すると、待機時間を最小限に抑え、スループットを最大にし、CPU 使用率を低くすることができます。 高速ネットワークでは、ホスト ハードウェアのシングルルート I/O 仮想化 (SR-IOV) 機能を使用して、ネットワーク パフォーマンスを向上します。
高速ネットワークを使用しない場合は、VM に出入りするすべてのネットワーク トラフィックがホストと仮想スイッチをスキャンする必要があります。 高速ネットワークを使用すると、VM のネットワーク インターフェイスに到達するネットワーク トラフィックが、ホストをバイパスして直接 VM に転送されます。
高速ネットワークは、それが有効になっている VM にのみ適用されます。 最適な結果を得るには、同じ仮想ネットワークに接続されている Azure VM で、この機能を有効にします。 仮想ネットワーク間またはハイブリッド シナリオで通信する場合、この機能が全体的な待機時間に対して与える影響は最小限に抑えられます。
Azure では、2 つ以上の vCPU が搭載されたほとんどの汎用およびコンピューティング最適化されたインスタンス サイズで、高速ネットワークがサポートされます。 ハイパースレッディングをサポートする VM インスタンスでは、4 つ以上の vCPU を持つインスタンスで高速ネットワークをサポートします。
ストレージ パフォーマンスの最適化
Azure Linux VM はどれも、少なくとも次の 2 つの仮想ディスクを備えています。
/dev/sda
というラベルの付いた OS ディスクの最大容量は、マスター ブート レコード (MBR) 形式のディスクの場合は 2 テビバイト (TiB)、GUID パーティション テーブル (GPT) 形式のディスクの場合は 4 TiB です。 Azure VM のプロビジョニングに使用するイメージによって、既定のサイズが決まります。OS ディスクは、OS 以外のワークロードを実行するのではなく、高速ブート用に最適化されているため、OS ディスクにデータを格納したり、アプリケーションをインストールしたりしないでください。
/dev/sdb
というラベルが付いていて、/mnt
にマウントされる一時ディスクが一時ストレージを提供します。 このディスクのサイズとパフォーマンスは VM のサイズによって異なり、その主な目的はスワップ ファイルを保存することです。一時ディスクは、破棄できる、または簡単に再作成できるデータの短期ストレージとして機能します。 一時ディスクは、サイズ変更、再デプロイ、再起動などの操作が行われた後も保持する必要があるファイルの保存には使用しないでください。
スワップ ファイルに最適な構成を実装するには、それをサポートするイメージに cloud-init を使用します。 cloud-init をサポートしないイメージには、Azure VM Linux Agent を使用します。
仮想データ ディスク
データを保存してアプリケーションをインストールする場合、仮想ディスクを作成して Azure VM にアタッチし、OS 内にマウントできます。 ストレージと 1 秒あたりの入出力 (IOPS) の要件に従い、必要に応じてディスクを追加できます。 以下の点に注意してください。
- Azure VM にアタッチできるディスクの最大数は、VM のサイズによって異なります。
- Azure VM でサポートされる IOPS の最大数は、そのディスクの集計スループットだけでなく、VM のサイズによって決まる VM の最大 IOPS スループットによっても変わります。 有効なスループットは、2 つの値のうち小さい方です。
Azure VM のストレージを用意するために、Azure で管理されるブロックレベルのストレージ ボリュームを使用できます。 Azure マネージド ディスクでは、それぞれ特定の顧客シナリオに対応する、次の 5 種類のディスクをサポートしています。
- Ultra Disks は、SAP HANA、最上位層のデータベース (SQL や Oracle)、トランザクションの多いその他のワークロードなどの I/O 集中型ワークロード用です。
- Premium ソリッドステート ドライブ (SSD) v2 は、低待機時間、高い IOPS、高スループットを常に必要とする運用やパフォーマンスが要求されるワークロード用です。
- Premium SSD は、運用およびパフォーマンスが要求されるワークロード用です。
- Standard SSD は、Web サーバー、使用頻度の低いエンタープライズ アプリケーション、開発またはテストのシナリオ用です。
- Standard ハード ディスク ドライブ (HDD) は、バックアップや、アクセス頻度の低い重要でないデータ用です。
Premium SSD での書き込みバリア
キャッシュが ReadOnly
または None
に設定されている Premium SSD ディスクで最高レベルの IOPS を実現するには、Linux でファイル システムをマウントするときに書き込みバリアを無効にします。 Premium Storage ディスクでこれらのキャッシュ設定を使用する場合は、書き込みの耐久性が保証されるため、バリアは必要ありません。 キャッシュが Read/Write
に設定されている場合は、書き込みの耐久性を確保するためにバリアを有効にしたままにします。
- reiserFS ファイル システムを使用する場合は、マウント オプション
barrier=none
を使用してバリアを無効にします。 - ext3/ext4 を使用する場合は、マウント オプション
barrier=0
を使用してバリアを無効にします。 - XFS を使用する場合は、マウント オプション
nobarrier
を使用してバリアを無効にします。
Premium SSD の I/O スケジューリング アルゴリズム
Linux カーネルには、要求を並べ替えるための 2 つのディスク I/O スケジューラ セットが用意されています。1 つは古い blk
サブシステム用で、もう 1 つは新しい blk-mq
サブシステム用です。 Azure Premium Storage ディスクの場合は、基になる仮想化プラットフォームにスケジュールの決定を渡すスケジューラを使用します。
blk
サブシステムを使用する Linux カーネルの場合は、noop
スケジューラを選択します。blk-mq
サブシステムを使用する Linux カーネルの場合は、none
スケジューラを選択します。
マルチディスク構成
1 つのディスクで提供できるよりも多くの IOPS がワークロードで必要な場合は、複数のディスクを組み合わせたソフトウェア Redundant Array of Independent Disks (RAID) の構成を使用します。 Azure ではストレージ ファブリック レイヤーでディスクの回復性を実現するので、RAID-0 ストライプを実装するとパフォーマンスに集中できます。
代わりの方法として、論理ボリューム マネージャー (LVM) をインストールし、それを使用して複数の仮想ディスクを、ストライピングされた単一の論理ストレージ ボリュームに結合できます。 この構成では、RAID-0 と同様に、読み取りと書き込みが、ボリューム グループに含まれる複数のディスクに分散されます。 パフォーマンス上の理由から、アタッチされているすべてのデータ ディスクを読み取りと書き込みで利用できるように、論理ボリュームをストライピングすることが必要な場合があります。