Amazon EC2 Linux インスタンスの CPU パフォーマンスを改善する方法を教えてください。
最終更新日: 2019 年 10 月 8 日
解決方法
Amazon EC2 Linux インスタンスのパフォーマンスを改善するには、次の推奨事項をお試しください。
ハードウェア仮想マシン (HVM) Amazon マシンイメージ (AMI)
パフォーマンスを改善するには、HVM AMI を使用することをお勧めします。HVM AMI は、新しいインスタンスクラス (M5、M4、R4 など) と拡張ネットワーキングなどの Amazon EC2 機能も提供します。詳細については、Linux AMI 仮想化タイプを参照してください。
拡張ネットワーキング
パフォーマンスを改善するには、サポートされているインスタンスタイプで拡張ネットワーキングを追加料金なしで使用できます。拡張ネットワーキングは、シングルルート I/O 仮想化 (SR-IOV) を使用します。これは、従来の仮想化されたネットワークインターフェイスと比較して、より高い I/O パフォーマンスとより低い CPU 使用率を実現するデバイス仮想化の方法です。サポートされているインスタンスタイプと手順については、「Linux での拡張ネットワーキング」と「Windows での拡張ネットワーキング」を参照してください。
拡張ネットワーキングを有効にするには、インスタンスで HVM AMI を使用し、Amazon Virtual Private Cloud (Amazon VPC) で起動する必要があります。
注意: 最新バージョンの Elastic Network Adapter (ENA) または Intel 82599 Virtual Function (VF) インターフェイスドライバーを使用することをお勧めします。
Non-Volatile Memory Express(NVMe) ボリューム
ストレージの場合、NVMe インスタンスストアボリュームを使用するとパフォーマンスが向上します。カーネルのバージョンとインスタンスタイプに応じて、NVMe ボリュームのパフォーマンスの向上はワークロードによって異なる場合があります。詳細については、「Amazon EBS および NVMe」と「SSD インスタンスストアボリューム」を参照してください。
注意: 特定のワークロードに Kyber I/O スケジューラーを使用するには、Amazon EC2 Linux インスタンスがカーネル 4.12 以降を実行していることを確認してください。
HugePages
HugePages は、大量のメモリアクセスを処理するワークロードのパフォーマンスを改善できます。詳細については、kernel.org ウェブサイトの「HugePages ドキュメント」を参照してください。ハイパフォーマンスコンピューティング (HPC) ワークロードに関するベストプラクティスについては、「ハイパフォーマンスコンピューティングレンズ」を参照してください。
最新のカーネルバージョンとインスタンスタイプ
パフォーマンスのために、最新のカーネルバージョンとインスタンスタイプを使用することを強くお勧めします。M3、C3、またはその他の古いインスタンスタイプを使用している場合は、M4 または同様のインスタンスタイプへの移行を検討し、またオペレーティングシステムで利用可能な最新のカーネルバージョンの使用を検討してください。詳細については、「Amazon EC2 インスタンスタイプ」を参照してください。
ジャンボフレーム
可能な限り小さなパケットの使用は避けてください。ワークロードでサポートされている場合は、ジャンボフレームでより大きなパケットを使用します。詳細については、「EC2 インスタンスのネットワーク最大転送ユニット (MTU)」を参照してください。
データプレーン開発キット (DPDK)
DPDK ベースのバージョンのソフトウェアを使用して、ネットワークをカーネルの外やユーザースペースに移行すると、パフォーマンスが向上する可能性があります。DPDK を使用するには、DPDK サポートを含むソフトウェアの更新が必要になる場合があります。詳細については、「DPDK ウェブサイト」を参照してください。
プロセスコンテキスト識別子 (PCID)
インスタンスのオペレーティングシステムで Kernel Page-Table Isolation (KPTI) が有効になっている場合、PCID も有効にすると CPU のパフォーマンスが向上します。カーネルとインスタンスタイプの両方が PCID をサポートしていることを確認する必要があります。
インスタンスのスケーリング
パフォーマンスを改善するには、インスタンスのサイズを拡大するか、インスタンスの数を増やすことを検討してください。
タイマー
通常、tsc タイマーは、ほとんどのインスタンスで利用可能な最高のパフォーマンスのタイマーです。xen タイマーを使用している場合、tsc タイマーに移動するとパフォーマンスが向上することがあります。jiffies タイマーを使用している古いオペレーティングシステムを使用している場合、できれば tsc をサポートするか、少なくとも xen をサポートするオペレーティングシステムへの移行を検討してください。
注意: M1 や M2 などの古いインスタンスタイプは、エミュレートされた TSC タイマーを提供します。TSC タイマーのパフォーマンスを向上させるには、新しいインスタンスタイプに移行することを検討してください。