Amazon EBS の詳細なパフォーマンス統計を取得して確認してみた

Amazon EBS の詳細なパフォーマンス統計を取得して確認してみた

2026.06.01

はじめに

テクニカルサポートの 片方 です。
EBS ボリュームのパフォーマンス確認といえば、CloudWatch の EBS メトリクスを見ることが多いと思います。

https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/using_cloudwatch_ebs.html

一方で、Amazon EBS には 「詳細なパフォーマンス統計」 という、EBS NVMe ブロックデバイスから取得できる統計情報もあります。
詳細なパフォーマンス統計では、読み取り/書き込み I/O の操作数やバイト数、I/O にかかった時間、キュー長、レイテンシーヒストグラム、EBS ボリュームや EC2 インスタンスの IOPS・スループット制限を超過していた時間などを確認できます。
CloudWatch の EBS メトリクスと似た項目もありますが、取得元や粒度、確認できる内容が異なります。
ざっくり整理すると、以下のような違いがあります。

項目 CloudWatch EBS メトリクス EBS の詳細なパフォーマンス統計
主な用途 通常監視、ダッシュボード、アラーム 詳細な I/O 性能調査
取得元 CloudWatch インスタンス上の EBS NVMe デバイス
粒度 最小 1 分単位 最大 1 秒間隔
取得方法 CloudWatch メトリクスとして確認 OS 上のツールや CloudWatch Agent などで取得
特徴 標準的に監視しやすい レイテンシーヒストグラムや制限超過時間を確認できる

CloudWatch EBS メトリクスは通常監視向け、「EBS の詳細なパフォーマンス統計」 はより細かい I/O 性能調査向けという使い分けになります。
この詳細なパフォーマンス統計は、Nitro ベースの EC2 インスタンスにアタッチされた EBS ボリュームで利用できます。また、統計情報はボリュームがアタッチされているインスタンス上から取得します。
今回、Linux インスタンスでは nvme-cli、Windows インスタンスでは nvme_amzn.exe を使って、EBS の詳細なパフォーマンス統計を実際に取得して確認してみました。

やってみた

ドキュメントを参考にやってみました。
https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/nvme-detailed-performance-stats.html

※ 検証環境

  • OS : Amazon Linux 2023 / Windows Server 2022
  • インスタンスタイプ : m5.large

Linux インスタンス

Linux インスタンスではいくつかの方法がありますが、今回は nvme-cli を利用しました。
EBS の詳細なパフォーマンス統計は、Nitro ベースの EC2 インスタンスにアタッチされた EBS ボリュームで利用できます。
m5.large は Nitro System ベースのインスタンスであるため、前提条件を満たしています。

001

  1. お好みの方法で対象 EC2 インスタンスへ SSH 接続します。
  2. nvme コマンドが利用できるか確認します。
$ nvme version

インストールされていなければ、インストールします。

$ sudo dnf install nvme-cli
  1. EBS ボリュームの NVMe デバイス名を確認します。
$ lsblk
or
$ sudo nvme list

今回の環境では、ルートボリュームが /dev/nvme0n1 として認識されていました。

002

  1. EBS の詳細なパフォーマンス統計を取得します。
$ sudo nvme amzn stats /dev/nvme0n1
コマンド実行例
sh-5.2$ sudo nvme amzn stats /dev/nvme0n1
Total Ops:
  Read: 13532
  Write: 2825
Total Bytes:
  Read: 289295360
  Write: 278566400
Total Time (us):
  Read: 8306217
  Write: 4543168

EBS Volume Performance Exceeded (us):
  IOPS: 0
  Throughput: 0

EC2 Instance EBS Performance Exceeded (us):
  IOPS: 0
  Throughput: 0

Queue Length (point in time): 0

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      ] => 0
[32       - 64      ] => 0
[64       - 128     ] => 0
[128      - 256     ] => 5
[256      - 512     ] => 1406
[512      - 1024    ] => 11854
[1024     - 2048    ] => 267
[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      ] => 0
[32       - 64      ] => 0
[64       - 128     ] => 0
[128      - 256     ] => 3
[256      - 512     ] => 17
[512      - 1024    ] => 1258
[1024     - 2048    ] => 597
[2048     - 4096    ] => 946
[4096     - 8192    ] => 4
[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
=================================

sh-5.2$

今回の環境では、検証用に起動したインスタンスで特に I/O 負荷をかけていない状態だったため、性能上限の超過は発生していませんでした。
EBS Volume Performance Exceeded と EC2 Instance EBS Performance Exceeded がどちらも 0 であることから、EBS ボリューム側の IOPS / スループット上限にも、EC2 インスタンス側の EBS IOPS / スループット上限にも到達していないことが分かります。Queue Length も 0 だったため、取得時点で完了待ちの I/O はありませんでした。
また、出力には読み取り/書き込み I/O のレイテンシーヒストグラムも含まれていました。
読み取り I/O は主に 512 us から 1024 us の範囲に、書き込み I/O は 512 us から 4096 us の範囲に多く分布していました。
CloudWatch の平均レイテンシーだけでは、このようなレイテンシー分布までは確認できません。EBS の詳細なパフォーマンス統計を利用することで、インスタンス上からより細かい I/O 状況を確認できました。
なお、負荷をかけた際の検証なども行っている弊社ブログも、あわせてご参照ください。

https://dev.classmethod.jp/articles/amazon-ebs-performance-statistics-ebs-volume-health/

Windows インスタンス

Windows OS でも Amazon EBS の詳細なパフォーマンス統計を取得してみます。
nvme_amzn.exe ツールを利用して EBS の詳細なパフォーマンス統計を取得します。

  1. 対象の Windows インスタンスへ RDP で接続します。
  2. AWSNVMe ドライバーのバージョンを確認します。
Get-CimInstance Win32_PnPSignedDriver |
  Where-Object {
    $_.DeviceName -like "*NVMe*" -or
    $_.DriverProviderName -like "*Amazon*"
  } |
  Select-Object DeviceName, DriverProviderName, DriverVersion |
  Format-Table -AutoSize
出力例
DeviceName                             DriverProviderName        DriverVersion
----------                             ------------------        -------------
Amazon Elastic Network Adapter         Amazon Web Services, Inc. 2.11.0.0
AWS NVMe Elastic Block Storage Adapter Amazon Inc.               1.8.1.49

PS C:\Windows\system32>

要件を満たしていない場合は、最新 Ver への更新してください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/aws-nvme-drivers.html

  1. nvme_amzn.exe が存在するか確認します。
    Windows Server 2022 環境では、C:\ProgramData\Amazon\Tools 配下に nvme_amzn.exe が存在します。
Get-ChildItem -Path 'C:\ProgramData\Amazon\Tools'

005

  1. 対象ボリュームのディスク番号を確認します。
    nvme_amzn.exe stats では、Linux のように /dev/nvme0n1 のようなデバイス名ではなく、Windows 上の ディスク番号 を指定します。
Get-Disk | Select-Object Number, FriendlyName, SerialNumber, Size, PartitionStyle

又は ebsnvme-id.exe を使って、EBS ボリューム ID とディスク番号の対応を確認します。

cd 'C:\ProgramData\Amazon\Tools'
.\ebsnvme-id.exe
出力例
PS C:\Users\Administrator> Get-Disk | Select-Object Number, FriendlyName, SerialNumber, Size, PartitionStyle

Number         : 0
FriendlyName   : NVMe Amazon Elastic B
SerialNumber   : vol07c94fcaec3d2b2a0_00000001.
Size           : 32212254720
PartitionStyle : MBR

PS C:\Users\Administrator> cd 'C:\ProgramData\Amazon\Tools'
PS C:\ProgramData\Amazon\Tools> .\ebsnvme-id.exe
Disk Number: 0
Volume ID: vol-07c94fcaec3d2b2a0
Device Name: sda1

PS C:\ProgramData\Amazon\Tools>

今回の環境では、ルートボリュームが Disk 0 として認識されていました。

  1. EBS の詳細なパフォーマンス統計を取得します。
    nvme_amzn.exe を使って EBS の詳細なパフォーマンス統計を取得します。
.\nvme_amzn.exe stats 0

0 は、先ほど ebsnvme-id.exe で確認したディスク番号です。

出力例
PS C:\ProgramData\Amazon\Tools> .\nvme_amzn.exe stats 0
Total Ops:
  Read: 132560
  Write: 48025
Total Bytes:
  Read: 4022729216
  Write: 4421921280
Total Time (us):
  Read: 307690833
  Write: 60560585

EBS Volume Performance Exceeded (us):
  IOPS: 0
  Throughput: 9205748

EC2 Instance EBS Performance Exceeded (us):
  IOPS: 0
  Throughput: 0

Queue Length (point in time): 0

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      ] => 0
[32       - 64      ] => 0
[64       - 128     ] => 235
[128      - 256     ] => 32377
[256      - 512     ] => 66397
[512      - 1024    ] => 19220
[1024     - 2048    ] => 2704
[2048     - 4096    ] => 986
[4096     - 8192    ] => 2696
[8192     - 16384   ] => 6235
[16384    - 32768   ] => 101
[32768    - 65536   ] => 8
[65536    - 131072  ] => 1479
[131072   - 262144  ] => 122
[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      ] => 0
[32       - 64      ] => 0
[64       - 128     ] => 0
[128      - 256     ] => 890
[256      - 512     ] => 21571
[512      - 1024    ] => 9477
[1024     - 2048    ] => 9806
[2048     - 4096    ] => 4196
[4096     - 8192    ] => 1935
[8192     - 16384   ] => 148
[16384    - 32768   ] => 0
[32768    - 65536   ] => 0
[65536    - 131072  ] => 2
[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
=================================

PS C:\ProgramData\Amazon\Tools>

006

Linux OS で nvme amzn stats /dev/nvme0n1 を実行した場合と同様に、読み取り/書き込み I/O 数、バイト数、I/O にかかった時間、キュー長、レイテンシーヒストグラム、性能上限を超過していた時間などを確認できました。

まとめ

本ブログが誰かの参考になれば幸いです。

参考資料

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事