Amazon EC2 インスタンスストアの詳細なパフォーマンス統計が取得可能になりました

Amazon EC2 インスタンスストアの詳細なパフォーマンス統計が取得可能になりました

2025.09.20

はじめに

2025 年 9 月、Amazon EC2 のインスタンスストアボリュームで詳細なパフォーマンス統計情報が取得できるようになりました。これまで EBS ボリュームのみで利用可能だった機能がインスタンスストアにも拡張されました。取得方法を検証したので紹介します。

https://aws.amazon.com/jp/about-aws/whats-new/2025/09/amazon-ec2-detailed-performance-stats-nvme-local-volumes/

何ができるようになったか

インスタンスストアボリュームの詳細なパフォーマンス統計が最短 1 秒間隔で取得可能になりました。

  • I/O 操作の統計情報(読み込み/書き込みの操作数とバイト数)
  • レイテンシーヒストグラム(I/O 操作の応答時間の分布)
  • パフォーマンス限界の超過時間(IOPS やスループットの上限超過時間)
  • キュー長(現時点での I/O リクエスト待機数)

インスタンスストアは特定のインスタンスで一時的な高速ストレージとして利用できます。これまで詳細なパフォーマンス情報を取得できませんでした。今回のアップデートでボトルネックの特定が容易になりました。

詳細なパフォーマンス統計情報の取得方法について

詳細なパフォーマンス統計情報は 2 つの取得方法が提供されています。1 つは nvme-cli コマンドによる確認です。もう 1 つは CloudWatch Agent を利用したカスタムメトリクスでの継続的なモニタリングです。インスタンスを停止するとこの統計情報は失われるため、長期的なモニタリングには CloudWatch Agent の利用を推奨します。

検証環境の準備

インスタンスストアのセットアップ

まず、インスタンスストアを持つ EC2 インスタンスを起動し、ボリュームをマウントします。今回は m8gd.large を使用しました。OS は Amazon Linux2023 です。

ボリュームの確認とマウント

			
			# デバイスの確認
$ lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1       259:0    0     8G  0 disk
├─nvme0n1p1   259:2    0     8G  0 part /
└─nvme0n1p128 259:3    0    10M  0 part /boot/efi
nvme1n1       259:1    0 109.9G  0 disk  # これがインスタンスストア

		
			
			# ファイルシステムの作成とマウント
sudo mkfs.ext4 /dev/nvme1n1
sudo mkdir -p /scratch
sudo mount /dev/nvme1n1 /scratch
sudo chown ec2-user:ec2-user /scratch

		
			
			$ df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          4.0M     0  4.0M   0% /dev
tmpfs             3.8G     0  3.8G   0% /dev/shm
tmpfs             1.6G  588K  1.6G   1% /run
/dev/nvme0n1p1    8.0G  1.9G  6.2G  23% /
tmpfs             3.8G     0  3.8G   0% /tmp
/dev/nvme0n1p128   10M  1.4M  8.7M  14% /boot/efi
tmpfs             777M     0  777M   0% /run/user/0
/dev/nvme1n1      108G   24K  103G   1% /scratch # マウントされました

		

1. nvme-cli コマンドで取得する方法

nvme-cliのインストール

			
			sudo yum install nvme-cli -y

		

統計情報の確認

			
			sudo nvme amzn stats /dev/nvme1n1

		

このコマンドを実行すると、以下の情報が表示されます。

  • Total Ops: 読み書き操作の総数
  • Total Bytes: 読み書きしたデータの総量
  • Total Time: 操作にかかった総時間(マイクロ秒)
  • Performance Exceeded: パフォーマンス制限を超過した時間
  • Queue Length: 現在のキュー長
  • I/O Latency Histogram: レイテンシーの分布
実行結果の例
			
			$ sudo nvme amzn stats /dev/nvme1n1
Total Ops:
  Read: 336
  Write: 18832
Total Bytes:
  Read: 5791744
  Write: 2388171776
Total Time (us):
  Read: 19206
  Write: 65522020

EC2 Instance Local Storage Performance Exceeded (us):
  IOPS: 0
  Throughput: 2413727

Queue Length (point in time): 1

Read IO Latency Histogram
=================================
Lower       Upper        IO Count
=================================
[0        - 1       ] => 0
[1        - 2       ] => 0
[2        - 4       ] => 0
[4        - 8       ] => 0
[8        - 16      ] => 0
[16       - 32      ] => 94
[32       - 64      ] => 75
[64       - 128     ] => 85
[128      - 256     ] => 41
[256      - 512     ] => 40
[512      - 1024    ] => 1
[1024     - 2048    ] => 0
[2048     - 4096    ] => 0
[4096     - 8192    ] => 0
[8192     - 16384   ] => 0
[16384    - 32768   ] => 0
[32768    - 65536   ] => 0
[65536    - 131072  ] => 0
[131072   - 262144  ] => 0
[262144   - 524288  ] => 0
[524288   - 1048576 ] => 0
[1048576  - 2097152 ] => 0
[2097152  - 4194304 ] => 0
[4194304  - 8388608 ] => 0
[8388608  - 16777216] => 0
[16777216 - 33554432] => 0
[33554432 - 67108864] => 0
[67108864 - 18446744073709551615] => 0
=================================

Write IO Latency Histogram
=================================
Lower       Upper        IO Count
=================================
[0        - 1       ] => 0
[1        - 2       ] => 0
[2        - 4       ] => 0
[4        - 8       ] => 0
[8        - 16      ] => 0
[16       - 32      ] => 33
[32       - 64      ] => 10
[64       - 128     ] => 866
[128      - 256     ] => 2540
[256      - 512     ] => 4362
[512      - 1024    ] => 5229
[1024     - 2048    ] => 2870
[2048     - 4096    ] => 446
[4096     - 8192    ] => 136
[8192     - 16384   ] => 16
[16384    - 32768   ] => 69
[32768    - 65536   ] => 1980
[65536    - 131072  ] => 275
[131072   - 262144  ] => 0
[262144   - 524288  ] => 0
[524288   - 1048576 ] => 0
[1048576  - 2097152 ] => 0
[2097152  - 4194304 ] => 0
[4194304  - 8388608 ] => 0
[8388608  - 16777216] => 0
[16777216 - 33554432] => 0
[33554432 - 67108864] => 0
[67108864 - 18446744073709551615] => 0
=================================

		

2. CloudWatch Agent を利用した方法

Systems Manger を利用して CloudWatch Agent のセットアップします。

IAMロールの設定

EC2 インスタンスに以下のマネージドポリシーをアタッチする必要があります。

  • AmazonSSMManagedInstanceCore
    • Systems Manager を通じて CloudWatch Agent をインストール・管理するために必要
  • CloudWatchAgentServerPolicy
    • CloudWatch Agent が CloudWatch へメトリクスを送信するために必要

CloudWatch Agent設定ファイルの作成

インスタンスストアのメトリクスを収集する設定ファイルを作成します。

cloudwatch-config.json
			
			{
  "agent": {
    "metrics_collection_interval": 60
  },
  "metrics": {
    "namespace": "CWAgent",
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "mem": {
        "measurement": ["mem_used_percent"],
        "metrics_collection_interval": 60
      },
      "diskio": {
        "resources": ["*"],
        "measurement": [
          "instance_store_total_read_ops",
          "instance_store_total_write_ops",
          "instance_store_total_read_bytes",
          "instance_store_total_write_bytes",
          "instance_store_total_read_time",
          "instance_store_total_write_time",
          "instance_store_performance_exceeded_iops",
          "instance_store_performance_exceeded_tp",
          "instance_store_volume_queue_length"
        ],
        "metrics_collection_interval": 60
      }
    }
  }
}

		

Systems Manager パラメータストアへの登録

			
			aws ssm put-parameter \
  --name "AmazonCloudWatch-InstanceStore" \
  --type "String" \
  --value file://cloudwatch-config.json \
  --overwrite \
  --tier "Standard" \
  --description "CloudWatch Agent configuration with InstanceStore"

		

CloudWatch Agentのインストールと設定

Systems Manager Run Command を使用して、CloudWatch Agent をインストールし、設定を適用します。

  1. AWS-ConfigureAWSPackageで CloudWatch Agent をインストール

以下のキャプチャの設定値を参考に、CloudWatch Agent をインストールします。

Run_Command___Systems_Manager___ap-northeast-1.png

  1. AmazonCloudWatch-ManageAgentで設定ファイルを適用

パラメータストアに登録した設定ファイルを CloudWatch Agent に適用します。

Run_Command___Systems_Manager___ap-northeast-1-2.png

EC2 インスタンスへ設定は以上です。IAM ロール(IAM ポリシー)の設定と、CloudWatch Agent のインストール、設定ファイルの追加のみです。

負荷テストとメトリクスの確認

fio ツールを使用してディスク負荷を発生させ、メトリクスを確認します。

			
			# fioのインストール
sudo yum install fio -y

# ランダムな読み書きテスト(10分間)
fio --name=random-rw --ioengine=posixaio \
    --rw=randrw --bs=4k --direct=1 --size=1G --numjobs=16 \
    --time_based --runtime=600 --filename=/scratch/testfile

		

CloudWatch でグラフを確認すると以下のメトリクスが表示されます。

  • I/O 操作の統計情報(読み込み/書き込みの操作数とバイト数)
  • パフォーマンス限界の超過時間(IOPS やスループットの上限超過時間)
  • キュー長(現時点での I/O リクエスト待機数)

Cursor_と_メトリクス___CloudWatch___ap-northeast-1.png

補足: CloudWatch Agent に必要な権限とは

CloudWatch Agent に必要な権限とはなにかと検証していたのですが、特別な設定を入れなくても CloudWatch の設定ファイルさえ間違いなければ問題なく取得可能でした。nvme-cliコマンドのインストールも不要でした。

Additionally, the CloudWatch agent binary requires ioctl permissions for NVMe driver devices to collect metrics from attached instance store volumes.

Collect Amazon EC2 instance store volume NVMe driver metrics - Amazon CloudWatch

まとめ

EC2 インスタンスストアの詳細なパフォーマンス統計が取得可能になりました。nvme-cli コマンドと CloudWatch Agent の 2 つの方法が提供されています。今回のアップデートで I/O パフォーマンスの可視化とボトルネックの特定が容易になりました。

おわりに

高速ストレージとしてインスタンスストアを活用して、パフォーマンスに問題を抱えたときに利用してみるとよいのではないでしょうか。私はよく ParallelCluster で中間ファイルの書き出しにインスタンスストアを利用しているため、パフォーマンスに問題を感じたら使ってみようと思います。

参考資料

この記事をシェアする

FacebookHatena blogX

関連記事