メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Amazon EBS ボリュームのパフォーマンス on Linux インスタンス

Amazon EBS のパフォーマンスは、I/O 特性やインスタンスとボリュームの設定などを含むいくつかの要因に左右されます。一般的に、Amazon EBS 製品および Amazon EC2 製品の詳細ページに記載されているガイダンスに従うだけで、良好なパフォーマンスを実現することができます。ただし、そのプラットフォームにおけるピークパフォーマンスを達成するには、多少のチューニングを行う必要のあるケースもあります。このトピックでは、一般的なベストプラクティスや、特定のユースケースに固有のパフォーマンスチューニングについて説明します。最適な設定を決定するには、ベンチマークに加えて、実際のワークロードからの情報でパフォーマンスをチューニングすることをお勧めします。EBS ボリュームの基本操作について理解したら、必要とする I/O パフォーマンスと、Amazon EBS パフォーマンスを向上させるオプションを確認し、そのパフォーマンス要件に対応できるようにすることをお勧めします。

Amazon EBS パフォーマンスのヒント

ここに示すヒントは、さまざまなユーザーシナリオで、EBS ボリュームから最適なパフォーマンスを得るためのベストプラクティスを表しています。

EBS 最適化インスタンスを使用する

EBS 最適化スループットがサポートされていないインスタンスでは、インスタンスと EBS ボリュームの間のトラフィックが、ネットワークトラフィックと競合する場合があります。EBS 最適化インスタンスでは、これら 2 種類のトラフィックを分離した状態が維持されます。EBS 最適化インスタンスの設定によっては、追加コストが発生する場合 (C3、R3、M3 など) と、追加コストなしで常に EBS 最適化状態になる場合 (M4、C4、D2 など) があります。詳細については、「Amazon EC2 インスタンスの構成」を参照してください。

パフォーマンスの計算方法を理解する

EBS ボリュームのパフォーマンスを測定する場合、関連する測定単位と、パフォーマンスの計算方法を理解することが重要です。詳細については、「I/O 特性とモニタリングを発表しました」を参照してください。

ワークロードを理解する

EBS ボリュームの最大パフォーマンス、I/O 操作の数およびサイズ、各アクションが完了するまでの所要時間は、互いに関連しています。これらの各要因 (パフォーマンス、I/O、レイテンシー) は相互に影響を与えます。また、アプリケーションが異なると、影響を受ける要因もさまざまに異なります。詳細については、「EBS ボリュームのベンチマーク」を参照してください。

スナップショットからボリュームを初期化する際のパフォーマンス低下を理解する

スナップショットから復元された新しい EBS ボリュームの各データブロックに初めてアクセスするときには、レイテンシーが著しく増加します。本稼働環境にボリュームを配置する前に、各ブロックにアクセスすることによって、このパフォーマンスヒットを回避できます。このプロセスは、初期化と呼ばれます (以前は事前ウォーミングと呼ばれていました)。詳細については、「Amazon EBS ボリュームの初期化」を参照してください。

HDD パフォーマンスが低下する要因

スループット最適化 HDD (st1) ボリュームまたは Cold HDD (sc1) ボリュームのスナップショットを作成すると、スナップショットの進行中はボリュームのベースライン値までパフォーマンスが低下します。この動作は、これらのボリュームタイプに固有です。パフォーマンスが制限される他の要因としては、インスタンスでのサポート範囲を超えるスループットの強要、スナップショットから復元したボリュームの初期化中のパフォーマンス低下、ボリュームに対する大量の小さなランダム I/O などがあります。HDD ボリュームのスループットを計算する方法については、「Amazon EBS ボリュームの種類」を参照してください。

アプリケーションから送られる I/O リクエスト数が十分でない場合も、パフォーマンスに影響します。これは、ボリュームのキュー長や I/O サイズを確認することで監視できます。このキュー長とは、アプリケーションからボリュームへの I/O リクエストのうち処理待ちのものの数です。最大限の安定性を確保するために、HDD-Backed ボリュームで 1 MiB のシーケンシャル I/O を実行する際には、キュー長 (整数に四捨五入) を 4 以上に保つ必要があります。ボリュームの安定したパフォーマンスを確保する方法については、「I/O 特性とモニタリングを発表しました」を参照してください。

st1 および sc1 で読み取りの多い高スループットワークロードを先読みする

一部のワークロードでは読み取りが多く、オペレーティングシステムのページキャッシュを通じて (たとえば、ファイルシステムから) ブロックデバイスへのアクセスが行われます。この場合、最大スループットを実現するには、先読みを 1 MiB に設定することをお勧めします。これは HDD ボリュームにのみ適用されるブロックデバイス単位の設定です。次の例では、Amazon Linux インスタンスの使用を前提としています。

ブロックデバイスに対する現在の先読み値を調べるには、次のコマンドを使用します。

Copy
[ec2-user ~]$ sudo blockdev --report /dev/<device>

ブロックデバイス情報は次の形式で返されます。

Copy
RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 4096 8587820544 /dev/<device>

表示されているデバイスについては、先読み値として 256 (デフォルト値) が報告されています。この数値にセクターサイズ (512 バイト) を乗算すると、先読みバッファのサイズ (この場合は 128 KiB) を得ることができます。バッファ値を 1 MiBに設定するには、次のコマンドを使用します。

Copy
[ec2-user ~]$ sudo blockdev --setra 2048 /dev/<device>

最初のコマンドをもう一度実行して、先読み設定が 2,048 になったことを確認します。

この設定は、ワークロードがサイズの大きなシーケンシャル I/O で構成される場合にのみ使用してください。 ワークロードの内容として、サイズの小さなランダム I/O がほとんどであれば、この設定を使用すると逆にパフォーマンスが低下します。一般的に、サイズの小さい I/O やランダム I/O が大部分を占めるワークロードの場合は、st1sc1 ではなく、汎用 SSD (gp2) ボリュームの使用を検討してください。

最新の Linux カーネルを使用する

間接記述子がサポートされている最新の Linux カーネルを使用します。Linux カーネル 3.11 以降には、すべてこのサポートがあり、現行世代の EC2 インスタンスも同様です。平均 I/O サイズが 44 KiB 前後であれば、間接記述子がサポートされていないインスタンスやカーネルを使用している可能性があります。Amazon CloudWatch のメトリクスから平均 I/O サイズを得る方法については、「I/O 特性とモニタリングを発表しました」を参照してください。

4.2 以降のすべての Linux カーネルの場合、st1 ボリュームまたは sc1 ボリュームで最大スループットを得るには、xen_blkfront.max パラメータを 256 に設定することをお勧めします。このパラメータは、OS の起動コマンドラインで設定できます。たとえば、Amazon Linux AMI では、/boot/grub/menu.lst に記述されている GRUB 設定で kernel 行の末尾に追加できます。

Copy
kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=ttyS0 xen_blkfront.max=256

この設定を有効にするには、インスタンスを再起動する必要があります。

詳細については、「GRUB の設定」を参照してください。他の Linux ディストリビューションでは (特に GRUB ブートローダーが使用されていない場合)、カーネル パラメータの調整に別のアプローチが必要になることがあります。

EBS I/O の特性の詳細については、このトピックの「Amazon EBS: パフォーマンスを考慮した設計 re:Invent」プレゼンテーションを参照してください。

RAID 0 を使用してインスタンスのリソース使用率を最大化する

一部のインスタンスタイプでは、単一の EBS ボリュームをプロビジョニングする場合よりも I/O スループットを増やすことができます。複数の gp2io1st1、または sc1 ボリュームを RAID 0 設定で結合し、これらのインスタンス用の利用可能な帯域幅を使用できます。詳細については、「Linux での RAID 構成」を参照してください。

Amazon CloudWatch でパフォーマンスを追跡する

Amazon Web Services は、Amazon CloudWatch による分析と表示が可能な Amazon EBS のパフォーマンスメトリクスと、ボリュームの健全性の監視に使用できるステータスチェックを提供します。詳細については、「ボリュームのステータスのモニタリング」を参照してください。