

# Amazon EC2 で Elastic Fabric Adapter をモニタリングする
<a name="efa-working-monitor"></a>

Elastic Fabric Adapter のパフォーマンスをモニタリングするには次の機能を使用できます。

**Topics**
+ [Amazon EC2 インスタンスの EFA ドライバーメトリクス](#efa-driver-metrics)
+ [Amazon VPC フローログ](#efa-flowlog)
+ [Amazon CloudWatch](#efa-cloudwatch)

## Amazon EC2 インスタンスの EFA ドライバーメトリクス
<a name="efa-driver-metrics"></a>

Elastic Fabric Adapter (EFA) ドライバーは、EFA インターフェイスがアタッチされているインスタンスからリアルタイムで複数のメトリクスを発行します。このようなメトリクスを使用して、アプリケーションパフォーマンスとネットワーキングの問題のトラブルシューティング、ワークロードに適したクラスターサイズの選択、スケーリングアクティビティの事前計画、およびアプリケーションのベンチマークを実施して、メトリクスがインスタンスで利用できる EFA パフォーマンスを最大化するかどうかを判断できます。

**Topics**
+ [使用可能な EFA ドライバーメトリクス](#available-efa-metrics)
+ [インスタンスの EFA ドライバーメトリクスを取得する](#view-efa-driver-metrics)

### 使用可能な EFA ドライバーメトリクス
<a name="available-efa-metrics"></a>

EFA ドライバーは次のメトリクスをリアルタイムでインスタンスに発行します。これらは、インスタンスの起動以降または最後のドライバーのリセット以降に、アタッチされた EFA デバイスから送信、受信、再送信、またはドロップされた、エラー、接続イベント、パケットまたはバイトの累積数を提供します。


| メトリクス | 説明 | サポートされるインスタンスタイプ | 
| --- | --- | --- | 
| tx\_bytes | 送信されたバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| rx\_bytes | 受信バイトの数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| tx\_pkts | 送信されたパケットの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rx\_pkts | 受信されたパケットの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rx\_drops | 受信後にドロップされたパケットの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| send\_bytes | 送信オペレーションを使用して送信されたバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| recv\_bytes | 送信オペレーションによって受信されたバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| send\_wrs | 送信オペレーションを使用して送信されたパケットの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| recv\_wrs | 送信オペレーションによって受信されたパケットの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_write\_wrs | 完了した rdma 書き込みオペレーションの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_read\_wrs | 完了した rdma 読み取りオペレーションの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_write\_bytes | rdma 書き込みオペレーションを使用して他のインスタンスによって書き込まれたバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_read\_bytes | rdma 読み取りオペレーションを使用して受信したバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_write\_wr\_err | ローカルエラーまたはリモートエラーが発生した rdma 書き込みオペレーションの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_read\_wr\_err | ローカルエラーまたはリモートエラーが発生した rdma 読み取りオペレーションの数。<br />単位: 個 | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_read\_resp\_bytes | rdma 読み取りオペレーションに応答して送信されたバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\_write\_recv\_bytes | rdma 書き込みオペレーションによって受信されたバイト数。<br />単位: バイト | EFA をサポートしているすべてのインスタンスタイプ | 
| retrans\_bytes | 再送信された EFA SRD バイトの数。<br />単位: 個 | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| retrans\_pkts | 再送信された EFA SRD パケットの数。<br />単位: バイト | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| retrans\_timeout\_events | EFA SRD トラフィックがタイムアウトしてネットワークパスが変更された回数。<br />単位: 個 | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| impaired\_remote\_conn\_events | EFA SRD 接続が障害状態になり、スループットレートの制限が低減した回数。<br />単位: 個 | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| unresponsive\_remote\_events | EFA SRD リモート接続が応答しなかった回数。<br />単位: 個 | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 

EFA をサポートするインスタンスタイプの詳細については、「[サポートされるインスタンスタイプ](efa.md#efa-instance-types)」を参照してください。

### インスタンスの EFA ドライバーメトリクスを取得する
<a name="view-efa-driver-metrics"></a>

[rdma-tool](https://man7.org/linux/man-pages/man8/rdma.8.html) コマンドラインツールを使用して、次のようにインスタンスにアタッチされたすべての EFA インターフェイスのメトリクスを取得できます。

```
$ rdma -p statistic show
link rdmap0s31/1 
    tx_bytes 0 
    tx_pkts 0 
    rx_bytes 0 
    rx_pkts 0 
    rx_drops 0 
    send_bytes 0 
    send_wrs 0 
    recv_bytes 0 
    recv_wrs 0 
    rdma_read_wrs 0 
    rdma_read_bytes 0 
    rdma_read_wr_err 0 
    rdma_read_resp_bytes 0 
    rdma_write_wrs 0 
    rdma_write_bytes 0 
    rdma_write_wr_err 0
    retrans_bytes 0
    retrans_pkts 0
    retrans_timeout_events 0
    unresponsive_remote_events 0
    impaired_remote_conn_events 0
```

または次のコマンドを使用して、インスタンスにアタッチされた各 EFA インターフェイスのメトリクスを sys ファイルから取得することもできます。

```
$ more /sys/class/infiniband/{{device_number}}/ports/{{port_number}}/hw_counters/* | cat
```

例

```
$ more /sys/class/infiniband/rdmap0s31/ports/1/hw_counters/* | cat
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/lifespan
::::::::::::::
12
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_resp_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_drops
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_bytes
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_pkts
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_timeout_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/unresponsive_remote_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/impaired_remote_conn_events
::::::::::::::
0
```

## Amazon VPC フローログ
<a name="efa-flowlog"></a>

Amazon VPC フローログを作成することで、EFA との間で送受信されるトラフィックに関する情報を取得できます。フローログデータは Amazon CloudWatch Logs と Amazon S3 に発行できます。フローログを作成したら、選択した送信先でそのデータを取得して表示できます。詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)」を参照してください。

EFA のフローログを作成する方法はElastic Network Interface のフローログを作成する場合と同じです。詳細については、「*Amazon VPC ユーザーガイド*」の「[フローログの作成](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-flow-logs.html#create-flow-log)」を参照してください。

フローログエントリで、EFA エントリは`srcAddress` および `destAddress` で識別されます。次の例に示されているように、これらはいずれも MAC アドレス形式になります。

```
version accountId  eniId        srcAddress        destAddress       sourcePort destPort protocol packets bytes start      end        action log-status
2       3794735123 eni-10000001 01:23:45:67:89:ab 05:23:45:67:89:ab -          -        -        9       5689  1521232534 1524512343 ACCEPT OK
```

## Amazon CloudWatch
<a name="efa-cloudwatch"></a>

Amazon EKS クラスターで EFA を使用している場合は CloudWatch Container Insights を使用して EFA をモニタリングできます。Amazon CloudWatch Container Insights は、`retrans_bytes`、`retrans_pkts`、`retrans_timeout_events`、`unresponsive_remote_events`、`impaired_remote_conn_events` を除くすべての [EFA ドライバーメトリクス](#efa-driver-metrics)をサポートしています。

詳細については「*Amazon CloudWatch ユーザーガイド*」の「[Amazon ECS と Kubernetes のコンテナインサイトメトリクス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-enhanced-EKS.html#Container-Insights-metrics-EFA)」を参照してください。