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

Elastic Network Adapter (ENA) のトラブルシューティング

Elastic Network Adapter (ENA) は、オペレーティング システムのヘルスを向上し、予期しないハードウェア動作や障害による長期的な停止の可能性を減らすように設計されています。ENA アーキテクチャでは、デバイスやドライバーの障害がシステムに対して可能な限り透過的に保持されます。このトピックでは、ENA のトラブルシューティングについて説明します。

インスタンスに接続できない場合は、まず「接続性の問題のトラブルシューティング」セクションを参照してください。

インスタンスに接続できる場合、このトピックの以降のセクションに記載されている障害検出/復旧メカニズムを使用して診断情報を収集することができます。

接続性の問題のトラブルシューティング

拡張ネットワーキングを有効化しているときに接続が失われると、ena モジュールとインスタンスの現在実行中のカーネルの互換性が保たれない可能性があります。これは、特定のカーネルバージョンのモジュールをインストール (dkms を使用しないか、不適切な設定の dkms.conf ファイルを使用) したため、インスタンスカーネルが更新された場合に発生します。起動時にロードされるインスタンスカーネルにより、ena モジュールが正しくインストールされない場合、インスタンスがネットワークアダプタを認識せず、インスタンスが到達不可能になります。

PV インスタンスまたは AMI で拡張ネットワーキングを有効にすると、お使いのインスタンスにも到達できなくなります。

ENA を使用して拡張ネットワーキングを有効した後インスタンスが到達不可能になった場合、インスタンスの enaSupport 属性を無効にすると、ストックネットワークアダプタにフォールバックできます。

ENA を使用して拡張ネットワーキングを無効にするには (EBS-backed インスタンス)

  1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

    重要

    instance store-backed インスタンスを使用している場合、インスタンスを停止することはできません。代わりに、「ENA を使用して拡張ネットワーキングを無効にするには (Instance store-backed インスタンス)」に進みます。

  2. ローカルコンピュータから、次のコマンドを使用して拡張ネットワーキングの属性を無効化します。

  3. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを起動します。start-instances (AWS CLI)、Start-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。

  4. (オプション) インスタンスに接続し、「VPC 内の Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化」のステップに従って、現在のカーネルバージョンを使用して ena モジュールの再インストールを試みます。

ENA を使用して拡張ネットワーキングを無効にするには (Instance store-backed インスタンス)

インスタンスが instance store-backed インスタンスの場合、「Instance Store-Backed Linux AMI の作成」の説明に従って新しい AMI を作成します。AMI を登録するときに、必ず拡張ネットワーキング enaSupport 属性を無効化してください。

  • register-image (AWS CLI)

    Copy
    $ aws ec2 register-image --no-ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Copy
    C:\> Register-EC2Image -EnaSupport $false ...

キープアライブメカニズム

ENA デバイスは、キープアライブイベントを一定の速度 (通常は 1 秒に 1 回) で送信します。ENA ドライバーは、これらのキープアライブメッセージの各プレゼンスを確認するウォッチドッグメカニズムを実装します。メッセージが存在する場合、ウォッチドッグが再実装されます。存在しない場合、ドライバーはデバイスで障害が発生したと判断し、次の処理を行います。

  • 現在の統計を syslog にダンプする

  • ENA デバイスをリセットする

  • ENA のドライバー状態をリセットする

上記のリセット手順を実行すると、トラフィックが短時間失われる可能性がありますが (TCP 接続は回復可能です)、ユーザーに影響は及びません。

ENA デバイスは、キープアライブ通知を送信しないことによりデバイスリセット手順を間接的にリクエストすることがあります。たとえば、ENA デバイスが回復不可能な設定をロードした後に不明な状態になった場合などです。

リセット手順の例を以下に示します。

[18509.800135] ena 0000:00:07.0 eth1: Keep alive watchdog timeout. // The watchdog process initiates a reset
[18509.815244] ena 0000:00:07.0 eth1: Trigger reset is on		
[18509.825589] ena 0000:00:07.0 eth1: tx_timeout: 0 // The driver logs the current statistics
[18509.834253] ena 0000:00:07.0 eth1: io_suspend: 0
[18509.842674] ena 0000:00:07.0 eth1: io_resume: 0
[18509.850275] ena 0000:00:07.0 eth1: wd_expired: 1
[18509.857855] ena 0000:00:07.0 eth1: interface_up: 1
[18509.865415] ena 0000:00:07.0 eth1: interface_down: 0
[18509.873468] ena 0000:00:07.0 eth1: admin_q_pause: 0
[18509.881075] ena 0000:00:07.0 eth1: queue_0_tx_cnt: 0
[18509.888629] ena 0000:00:07.0 eth1: queue_0_tx_bytes: 0
[18509.895286] ena 0000:00:07.0 eth1: queue_0_tx_queue_stop: 0
.......
........
[18511.280972] ena 0000:00:07.0 eth1: free uncompleted tx skb qid 3 idx 0x7 // At the end of the down process, the driver discards incomplete packets.
[18511.420112] [ENA_COM: ena_com_validate_version] ena device version: 0.10 //The driver begins its up process
[18511.420119] [ENA_COM: ena_com_validate_version] ena controller version: 0.0.1 implementation version 1
[18511.420127] [ENA_COM: ena_com_admin_init] ena_defs : Version:[b9692e8] Build date [Wed Apr  6 09:54:21 IDT 2016]
[18512.252108] ena 0000:00:07.0: Device watchdog is Enabled
[18512.674877] ena 0000:00:07.0: irq 46 for MSI/MSI-X
[18512.674933] ena 0000:00:07.0: irq 47 for MSI/MSI-X
[18512.674990] ena 0000:00:07.0: irq 48 for MSI/MSI-X
[18512.675037] ena 0000:00:07.0: irq 49 for MSI/MSI-X
[18512.675085] ena 0000:00:07.0: irq 50 for MSI/MSI-X
[18512.675141] ena 0000:00:07.0: irq 51 for MSI/MSI-X
[18512.675188] ena 0000:00:07.0: irq 52 for MSI/MSI-X
[18512.675233] ena 0000:00:07.0: irq 53 for MSI/MSI-X
[18512.675279] ena 0000:00:07.0: irq 54 for MSI/MSI-X
[18512.772641] [ENA_COM: ena_com_set_hash_function] Feature 10 isn't supported
[18512.772647] [ENA_COM: ena_com_set_hash_ctrl] Feature 18 isn't supported
[18512.775945] ena 0000:00:07.0: Device reset completed successfully // The reset process is complete

読み取りタイムアウトの登録

ENA アーキテクチャでは、Memory Mapped I/O (MMIO) の読み取りオペレーションの限定的に使用することが推奨されます。MMIO レジスタには、初期化手順中のみ ENA デバイスドライバーがアクセスします。

ドライバーログ (dmesg 出力にあります) が読み取りオペレーションの失敗を示している場合、互換性のないドライバーまたは適切にコンパイルされていないドライバー、ビジー状態のハードウェアドライバー、ハードウェア障害が原因の可能性があります。

読み取りオペレーションの失敗を示すログエントリが断続的に発生する場合は、問題とみなさないでください。この場合はドライバーによって再試行されます。ただし、読み取りの失敗を含むログエントリが連続して発生する場合は、ドライバーまたはハードウェアの問題を示しています。

タイムアウトによる読み取りオペレーション失敗を示すドライバーログエントリの例を以下に示します。

[ 47.113698] [ENA_COM: ena_com_reg_bar_read32] reading reg failed for timeout. expected: req id[1] offset[88] actual: req id[57006] offset[0] 
[ 47.333715] [ENA_COM: ena_com_reg_bar_read32] reading reg failed for timeout. expected: req id[2] offset[8] actual: req id[57007] offset[0] 
[ 47.346221] [ENA_COM: ena_com_dev_reset] Reg read32 timeout occurred

統計

ネットワークパフォーマンスが不十分な場合やレイテンシーの問題がある場合、デバイス統計情報を取得して調査する必要があります。これらの統計は、以下に示すように ethtool を使用して取得できます。

Copy
[ec2-user ~]$ ethtool –S ethN NIC statistics: tx_timeout: 0 io_suspend: 0 io_resume: 0 wd_expired: 0 interface_up: 1 interface_down: 0 admin_q_pause: 0 queue_0_tx_cnt: 4329 queue_0_tx_bytes: 1075749 queue_0_tx_queue_stop: 0 ...

次のコマンド出力パラメータの説明を以下に示します。

tx_timeout: N

Netdev ウォッチドッグがアクティブになった回数。

io_suspend: N

サポートされていません。この値は、常に 0 にする必要があります。

io_resume: N

サポートされていません。この値は、常に 0 にする必要があります。

wd_expired: N

ドライバーが直近 3 秒以内にキープアライブイベントを受け取らなかった回数。

interface_up: N

ENA インターフェイスが起動された回数。

interface_down: N

ENA インターフェイスが停止された回数。

admin_q_pause: N

管理者キューが不安定な状態です。この値は、常に 0 にする必要があります。

queue_N_tx_cnt: N

キュー N の送信されたパケットの数。

queue_N_tx_bytes: N

キュー N の送信バイト数。

queue_N_tx_queue_stop: N

キュー N がいっぱいになって停止された回数。

queue_N_tx_queue_wakeup: N

停止後にキュー N が再開された回数。

queue_N_tx_dma_mapping_err: N

直接メモリアクセスエラーの数。この値が 0 の場合は、システムリソースが低いことを示しています。

queue_N_tx_napi_comp: N

napi ハンドラーがキュー Nnapi_complete を呼び出した回数。

queue_N_tx_poll: N

napi ハンドラーがキュー N にスケジュールされた回数。

queue_N_tx_doorbells: N

キュー N の送信ドアベルの数。

queue_N_tx_linearize: N

キュー N に SKB 線形化が試行された回数。

queue_N_tx_linearize_failed: N

キュー N の SKB 線形化が失敗した回数。

queue_N_tx_prepare_ctx_err: N

キュー Nena_com_prepare_tx が失敗した回数。この値は、常に 0 になる必要があります。そうでない場合はドライバーログを参照してください。

queue_N_tx_missing_tx_comp: codeN

キュー N の未処理のパケットの数。この値は、常に 0 にする必要があります。

queue_N_tx_bad_req_id: N

キュー N の無効な req_id。有効な req_id は 0、マイナス queue_size、マイナス 1 です。

queue_N_rx_cnt: N

キュー N の受信されたパケットの数。

queue_N_rx_bytes: N

キュー N の受信バイト数。

queue_N_rx_refil_partial: N

ドライバーが rx キューの空いている部分にキュー N のバッファーを補充できなかった回数。この値が 0 でない場合、メモリリソースが低いことを示しています。

queue_N_rx_bad_csum: N

rx キューに、キュー N の不良なチェックサムがあった回数 (rx チェックサムオフロードがサポートされている場合のみ)。

queue_N_rx_page_alloc_fail: N

キュー N のページ割り当てに失敗した回数。この値が 0 でない場合、メモリリソースが低いことを示しています。

queue_N_rx_skb_alloc_fail: N

キュー N の SKB 割り当てに失敗した回数。この値が 0 でない場合、システムリソースが低いことを示しています。

queue_N_rx_dma_mapping_err: N

直接メモリアクセスエラーの数。この値が 0 の場合は、システムリソースが低いことを示しています。

queue_N_rx_bad_desc_num: N

パケットあたりのバッファーが多すぎます。この値が 0 でない場合、バッファーの使用量が非常に少ないことを示しています。

queue_N_rx_small_copy_len_pkt: N

最適化: パケットがこのしきい値 (sysfs により設定) より小さい場合、新しいページの割り当てを避けるため、パケットはスタックに直接コピーされます。

ena_admin_q_aborted_cmd: N

中断された管理コマンドの数。これは、通常自動リカバリ手順中に発生します。

ena_admin_q_submitted_cmd: N

管理者キューのドアベルの数。

ena_admin_q_completed_cmd: N

管理者キューの完了数。

ena_admin_q_out_of_space: N

ドライバーが新しい管理コマンドの送信を試みたが、キューがいっぱいであった回数。

ena_admin_q_no_completion: N

ドライバーが管理コマンドの完了を取得しなかった回数。

syslog のドライバーエラーログ

ENA ドライバーは、システム起動時にログメッセージを syslog に書き込みます。問題が発生した場合、これらのログを調べてエラーを探すことができます。システム起動時に ENA ドライバーにより syslog に記録される情報の例と、特定のメッセージの注釈の一部を以下に示します。

Jun  3 22:37:46 ip-172-31-2-186 kernel: [  478.416939] [ENA_COM: ena_com_validate_version] ena device version: 0.10
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  478.420915] [ENA_COM: ena_com_validate_version] ena controller version: 0.0.1 implementation version 1
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.256831] ena 0000:00:03.0: Device watchdog is Enabled
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.672947] ena 0000:00:03.0: creating 8 io queues. queue size: 1024
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.680885] [ENA_COM: ena_com_init_interrupt_moderation] Feature 20 isn't supported  // Interrupt moderation is not supported by the device
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.691609] [ENA_COM: ena_com_get_feature_ex] Feature 10 isn't supported // RSS HASH function configuration is not supported by the device
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.694583] [ENA_COM: ena_com_get_feature_ex] Feature 18 isn't supported //RSS HASH input source configuration is not supported by the device 
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.697433] [ENA_COM: ena_com_set_host_attributes] Set host attribute isn't supported
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.701064] ena 0000:00:03.0 (unnamed net_device) (uninitialized): Cannot set host attributes
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.704917] ena 0000:00:03.0: Elastic Network Adapter (ENA) found at mem f3000000, mac addr 02:8a:3c:1e:13:b5 Queues 8
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  480.805037] EXT4-fs (xvda1): re-mounted. Opts: (null)
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  481.025842] NET: Registered protocol family 10

無視可能なエラー

システムのエラーログに記録される可能性がある以下のエラーは、Elastic Network Adapter では無視できます。

ホスト属性の設定がサポートされない

ホスト属性は、このデバイスではサポートされていません。

rx キューのバッファの割り当てに失敗した

これは復元可能なエラーであり、エラーがスローされたときにメモリプレッシャーの問題が発生した可能性があることを示します。

機能 X はサポートされていない

言及されている機能は、Elastic Network Adapter ではサポートされていません。X に指定できる値は、以下のとおりです。

  • 10: RSS ハッシュ関数設定は、このデバイスではサポートされていません。

  • 12: RSS 間接テーブル設定は、このデバイスではサポートされていません。

  • 18: RSS ハッシュ入力設定は、このデバイスではサポートされていません。

  • 20: 割り込みモデレーションは、このデバイスではサポートされていません。

AENQ の設定に失敗した

Elastic Network Adapter では、AENQ 設定がサポートされていません。

サポートされていない AENQ のイベントを設定しようとしている

このエラーは、Elastic Network Adapter によりサポートされていない AENQ イベントグループを設定しようとしたことを示しています。