Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスのパフォーマンスを向上させたいと考えています。
解決策
HVM AMI の使用
パフォーマンスを向上させるには、ハードウェア仮想マシン (HVM) の Amazon マシンイメージ (AMI) を使用します。HVM AMI を使用すると、新しいインスタンスクラスや、拡張ネットワーキングなどの Amazon EC2 機能を使用できます。詳細については、「Linux AMI virtualization types」を参照してください。
拡張ネットワーキングの有効化
ご使用のインスタンスタイプで拡張ネットワーキングがサポートされている場合、この機能を使用して、追加コストなしで CPU パフォーマンスを向上させることができます。拡張ネットワーキングでは、シングルルート I/O 仮想化 (SR-IOV) を使用することで、従来の仮想ネットワークインターフェイスよりも高い I/O パフォーマンスと低い CPU 使用率を実現します。サポートされているインスタンスタイプと手順については、「Enhanced networking on Linux」および「Enhanced networking on Windows」を参照してください。拡張ネットワーキングを有効にするには、インスタンスで HVM AMI を使用する必要があります。また、Amazon Virtual Private Cloud (Amazon VPC) でインスタンスを起動する必要があります。注: ベストプラクティスとして、最新バージョンの Elastic Network Adapter (ENA) または Intel 82599 Virtual Function (VF) インターフェイスドライバーを使用してください。
NVMe ボリュームの使用
ストレージには、パフォーマンスを向上させるために Non-Volatile Memory Express (NVMe) インスタンスストアボリュームを使用してください。カーネルバージョンとインスタンスタイプによっては、NVMe ボリュームでのパフォーマンスがワークロードによって異なる場合があります。詳細については、「Amazon EBS and NVMe」および「SSD インスタンスストアボリューム」を参照してください。
注: 特定のワークロードに Kyber I/O スケジューラーを使用するには、Amazon EC2 Linux インスタンスがカーネル 4.12 以降で実行されている必要があります。
HugePages の使用
HugePages を使用すると、大量のメモリアクセスを処理するワークロードのパフォーマンスを向上させることができます。詳細については、kernel.org ウェブサイトにある HugePages ドキュメントを参照してください。ハイパフォーマンスコンピューティング (HPC) のワークロードに関するベストプラクティスについては、「ハイパフォーマンスコンピューティングレンズ」を参照してください。
最新のカーネルバージョンとインスタンスタイプの使用
ベストプラクティスとして、最新のカーネルバージョンとインスタンスタイプを使用してください。M3、C3、またはその他の古いインスタンスタイプを使用している場合は、パフォーマンスを向上させるために、M7 などの新しいインスタンスタイプに移行してください。また、ご使用のオペレーティングシステム (OS) で入手可能な最新のカーネルバージョンを使用してください。詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。
ジャンボフレームの使用
可能な限り、小さいパケットは使用しないでください。ワークロードでジャンボフレームによる大きいパケットの使用がサポートされている場合は、この構成を使用してください。詳細については、「EC2 インスタンスのネットワークの最大送信単位 (MTU)」を参照してください。
DPDK の使用
ネットワーキングをカーネルの外部に移動し、ユーザースペースに配置するには、データプレーン開発キット (DPDK) ソフトウェアを使用します。DPDK を使用するには、DPDK サポートを含むソフトウェア更新が必要になる場合があります。詳細については、DPDK のウェブサイトを参照してください。
PCID の有効化
インスタンスの OS でカーネルページテーブルの分離 (KPTI) を有効にした場合は、プロセスコンテキスト識別子 (PCID) 機能も有効にします。この機能を使用する場合は、カーネルとインスタンスタイプの両方が PCID をサポートしていることを確認してください。
インスタンスのスケーリング
インスタンスのサイズを増やすか、インスタンスの数を増やします。
タイマーの使用
タイムスタンプカウンター (TSC) タイマーは、通常、最も高性能なタイマーであり、ほとんどのインスタンスで使用できます。xen タイマーを使用している場合、TSC タイマーに切り替えることでパフォーマンスが向上する可能性があります。jiffies タイマーを使用する古い OS を使用している場合は、xen または (できれば) TSC をサポートする OS に移行してください。
注: M1 や M2 などの古いインスタンスタイプでは、エミュレートされた TSC タイマーが提供されています。タイマーのパフォーマンスを向上させるには、M7 などの新しいインスタンスタイプに移行してください。
関連情報
Amazon EC2 のベストプラクティス