Azure Virtual Machine間の通信レイテンシを小さくしたり、スループットを最適化したり

このエントリは2020/05/22現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容との乖離が発生する可能性があります。

VM間の通信レイテンシやスループットは、VMの配置や機能で改善できる場合がある。

VMの機能

この内容は以下のドキュメントに記載がある。

Azure 仮想マシンのネットワーク スループットの最適化 / Optimize network throughput for Azure virtual machines
https://docs.microsoft.com/azure/virtual-network/virtual-network-optimize-network-bandwidth

高速ネットワーク (Accelerated networking)

VMによっては高速ネットワーク (Accelerated networking) が使えるものがある。

高速ネットワークによって、VM との間でシングル ルート I/O 仮想化 (SR-IOV) が可能になり、ネットワークのパフォーマンスが大幅に向上します。 この高パフォーマンスのパスによってデータパスからホストがバイパスされ、サポートされる VM タイプの最も要件の厳しいネットワーク ワークロードで使用した場合でも、待ち時間、ジッター、CPU 使用率が軽減されます。

Create a Windows virtual machine with Accelerated Networking using Azure PowerShell
https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-powershell
Create a Linux virtual machine with Accelerated Networking using Azure CLI
https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli

間に入るものがないので高速になるよね、ということ。以下の図がわかりやすい。全てのVMで高速ネットワークを有効にすることで最大の効果を得られる。

https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-powershell

Azure PowerShell を使用して高速ネットワークを備えた Windows 仮想マシンを作成する
Create a Windows virtual machine with Accelerated Networking using Azure PowerShell
https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-powershell
Azure CLI で、高速ネットワークを使用する Linux 仮想マシンを作成する
Create a Linux virtual machine with Accelerated Networking using Azure CLI
https://docs.microsoft.com/azure/virtual-network/create-vm-accelerated-networking-cli

RSS (Receive Side Scaling)

Windowsで高速ネットワークが使えないVMで、RSS(Receive Side Scaling)が無効になっている場合、有効化するとスループットが増すことがある(Linuxではデフォルトで有効)。これは、受信側がマルチプロセッサの場合に複数のCPUを使って効率よく受信することを可能にするドライバーのテクノロジーを使って受信を並列処理してスループットを向上しよう、というもの。

Receive Side Scaling の概要 / Introduction to Receive Side Scaling
https://docs.microsoft.com/windows-hardware/drivers/network/introduction-to-receive-side-scaling

VMの配置

この内容は以下のドキュメントに記載がある。

リソースの併置による待機時間の短縮 / Co-locate resources for improved latency
https://docs.microsoft.com/azure/virtual-machines/linux/co-location
https://docs.microsoft.com/azure/virtual-machines/windows/co-location

近接通信配置グループ (Proximity placement groups、以下PPG)

PPGとは、物理的に近い場所にVMを配置できるようにするもの。

近接通信配置グループは、Azure コンピューティング リソースが互いに物理的に近くに配置されるようにするために使用される論理的なグループ化です。 近接通信配置グループは、短い待ち時間が要件であるワークロードに役立ちます。
A proximity placement group is a logical grouping used to make sure that Azure compute resources are physically located close to each other. Proximity placement groups are useful for workloads where low latency is a requirement.

近接通信配置グループ / Proximity placement groups
https://docs.microsoft.com/azure/virtual-machines/linux/co-location#proximity-placement-groups
https://docs.microsoft.com/azure/virtual-machines/windows/co-location#proximity-placement-groups

PPGはスケールセット(Virtual Machine Scale Set、VMSS)でも利用可能。また、PPGは可用性セット(Availability set、以下AS)と組み合わせることができるが、可用性ゾーン(Availability zone、以下AZ)を跨いだPPGは構成できない。データセンターを跨いだPPGはあり得ないので、それは当然といえば当然。

近接通信配置グループ / Proximity placement groups
https://docs.microsoft.com/azure/virtual-machines/windows/co-location#proximity-placement-groups
https://docs.microsoft.com/azure/virtual-machines/linux/co-location#proximity-placement-groups

リージョン内にAZがある場合、ASやPPGは下図のような構成をとり得る(AZに含まれないVMはAZ指定されていないもの)。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中