Amazon Elastic Compute Cloud
Guide de l'utilisateur pour les instances Linux

Dépannage d'Elastic Network Adapter (ENA)

Elastic Network Adapter (ENA) est conçu pour améliorer l'intégrité du système d'exploitation et réduire les risques de perturbations à long terme en raison d'un comportement inattendu de matériel ou de défaillances. L'architecture ENA assure une transparence optimale des défaillances de périphériques ou de pilotes auprès du système. Cette rubrique fournit des informations de dépannage pour ENA.

Si vous ne pouvez pas vous connecter à votre instance, commencez par la section Dépannage des problèmes de connexion.

Si vous ne parvenez pas à vous connecter à votre instance, recueillez des informations de diagnostic à l'aide des mécanismes de détection des défaillances et de récupération couverts dans des sections ultérieures de cette rubrique.

Dépannage des problèmes de connexion

Si vous perdez la connexion lors de l'activation de la mise en réseau améliorée, il se peut que le module ena ne soit pas compatible avec le noyau de votre instance. Cela peut se produire si vous installez le module pour une version de noyau spécifique (sans dkms ou avec un fichier dkms.conf mal configuré), puis que le noyau de votre instance est mis à jour. Si le module ena du noyau de l'instance qui est chargé au moment du démarrage n'est pas correctement installé, votre instance ne reconnaît pas la carte réseau et devient inaccessible.

Si vous activez la mise en réseau améliorée pour une instance de paravirtualisation (PV) ou une AMI, votre instance peut devenir inaccessible.

Si votre instance devient inaccessible après l'activation de la mise en réseau améliorée via ENA, vous pouvez désactiver l'attribut enaSupport pour votre instance afin qu'elle utilise une autre carte réseau à la place.

Pour désactiver la mise en réseau améliorée via ENA (instances basées sur EBS)

  1. Depuis votre ordinateur local, arrêtez votre instance à l'aide de la console Amazon EC2 ou de l'une des commandes suivantes : stop-instances (AWS CLI) ou Stop-EC2Instance (Outils AWS pour Windows PowerShell). Si votre instance est gérée par AWS OpsWorks, vous devez arrêter l'instance de la console AWS OpsWorks de telle sorte que l'état de l'instance demeure synchronisé.

    Important

    Si vous utilisez une instance basée sur le stockage d'instance, vous ne pouvez pas l'arrêter. A la place, passez à Pour désactiver la mise en réseau améliorée via ENA (instances basées sur le stockage d'instance).

  2. Depuis votre ordinateur local, désactivez l'attribut de mise en réseau améliorée à l'aide de la commande suivante.

  3. Depuis votre ordinateur local, démarrez l'instance à l'aide de la console Amazon EC2 ou de l'une des commandes suivantes : start-instances (AWS CLI) ou Start-EC2Instance (Outils AWS pour Windows PowerShell). Si votre instance est gérée par AWS OpsWorks, vous devez démarrer l'instance dans la console AWS OpsWorks de telle sorte que l'état de l'instance demeure synchronisé.

  4. (Facultatif) Connectez-vous à votre instance et essayez de réinstaller le module ena avec votre version de noyau actuelle en suivant les étapes décrites dans la section Activation de la mise en réseau améliorée avec l'adaptateur Elastic Network Adapter (ENA) sur les instances Linux.

Pour désactiver la mise en réseau améliorée via ENA (instances basées sur le stockage d'instance)

Si votre instance est basée sur le stockage d'instance, créez une AMI, comme décrit dans la section Création d'une AMI Linux basée sur le stockage d'instance. Veillez à désactiver l'attribut enaSupport de mise en réseau améliorée lorsque vous inscrivez l'AMI.

  • register-image (AWS CLI)

    $ aws ec2 register-image --no-ena-support ...
  • Register-EC2Image (Outils AWS pour Windows PowerShell)

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

Mécanisme Keep-Alive

Le dispositif ENA publie des événements keep-alive selon une fréquence fixe (généralement une fois par seconde). Le pilote ENA implémente un mécanisme de surveillance, qui recherche la présence de ces messages keep-alive. Si un ou plusieurs messages sont présents, la surveillance est réarmée. Dans le cas contraire, le pilote conclut que l'appareil a subi une défaillance et effectue alors les opérations suivantes :

  • Il envoie ses statistiques dans le journal système.

  • Il réinitialise le dispositif ENA.

  • Il réinitialise l'état du pilote ENA.

La procédure de réinitialisation ci-dessus peut entraîner une perte de trafic pour une courte période de temps (la récupération des connexions TCP doit être possible), mais ne devrait pas affecter l'utilisateur.

Le dispositif ENA peut également demander indirectement une procédure de réinitialisation de l'appareil. Dans ce cas, il n'envoie pas de notification keep-alive. Cela est possible, par exemple, si le périphérique ENA atteint un état inconnu après le chargement d'une configuration irrécupérable.

Voici un exemple de la procédure de réinitialisation :

[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

Expiration du délai d'attente des opérations de lecture

L'architecture ENA propose une utilisation limitée des opérations de lecture des E/S mappées par la mémoire (MMIO). Le pilote du périphérique ENA n'accède aux registres MMIO que lors de la procédure d'initialisation.

Si les journaux du pilote (disponibles dans la sortie dmesg) indiquent une défaillance des opérations de lecture, un pilote incompatible ou mal compilé, un dispositif saturé ou une défaillance matérielle peuvent en être la cause.

Les entrées de journal intermittentes qui indiquent des défaillances des opérations de lecture ne sont pas problématiques. Dans ce cas, le pilote réessaie de les traiter. Toutefois, une série d'entrées de journal contenant des défaillances de lecture indique un problème de pilote ou de matériel.

Voici un exemple d'entrée de journal pilote indiquant une défaillance des opérations de lecture en raison de l'expiration d'un délai d'attente :

[ 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

Statistiques

Si vous rencontrez des problèmes de latence ou si les performances réseau sont insuffisantes, vous devez récupérer les statistiques de l'appareil et les examiner. Pour obtenir ces statistiques, utilisez ethtool, comme indiqué ci-dessous :

[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 ...

Les paramètres de sortie de commande suivants sont décrits ci-dessous :

tx_timeout: N

Nombre de fois que la surveillance Netdev a été activée.

io_suspend: N

Non pris en charge. Cette valeur doit toujours correspondre à zéro.

io_resume: N

Non pris en charge. Cette valeur doit toujours correspondre à zéro.

wd_expired: N

Nombre de fois que le pilote n'a pas reçu l'événement keep-alive au cours des trois secondes précédentes.

interface_up: N

Nombre de fois que l'interface ENA a été affichée.

interface_down: N

Nombre de fois que l'interface ENA a été fermée.

admin_q_pause: N

L'état de la file d'attente d'administration est instable. Cette valeur doit toujours correspondre à zéro.

queue_N_tx_cnt: N

Nombre de paquets transmis pour la file d'attente N.

queue_N_tx_bytes: N

Nombre d'octets transmis pour la file d'attente N.

queue_N_tx_queue_stop: N

Nombre de fois que la file d'attente N était pleine et qu'elle a été arrêtée.

queue_N_tx_queue_wakeup: N

Nombre de fois que la file d'attente N a repris après avoir été arrêtée.

queue_N_tx_dma_mapping_err: N

Nombre d'erreurs d'accès direct à la mémoire. Si cette valeur ne correspond pas à 0, les ressources système sont faibles.

queue_N_tx_napi_comp: N

Nombre de fois que le gestionnaire napi a appelé napi_complete pour la file d'attente N.

queue_N_tx_poll: N

Nombre de fois que le gestionnaire napi a été planifié pour la file d'attente N.

queue_N_tx_doorbells: N

Nombre de portes de transmission pour la file d'attente N.

queue_N_tx_linearize: N

Nombre de fois que la linéarisation SKB a été tentée pour la file d'attente N.

queue_N_tx_linearize_failed: N

Nombre de fois que la linéarisation SKB a échoué pour la file d'attente N.

queue_N_tx_prepare_ctx_err: N

Nombre de fois que ena_com_prepare_tx a échoué pour la file d'attente N. Cette valeur doit toujours être égale à zéro. Si ce n'est pas le cas, consultez les journaux du pilote.

queue_N_tx_missing_tx_comp: codeN

Nombre de paquets qui n'ont pas été traités entièrement pour la file d'attente N. Cette valeur doit toujours correspondre à zéro.

queue_N_tx_bad_req_id: N

Valeur req_id non valide pour la file d'attente N. La valeur req_id valide est égale à zéro, moins la valeur queue_size, moins 1.

queue_N_rx_cnt: N

Nombre de paquets reçus pour la file d'attente N.

queue_N_rx_bytes: N

Nombre d'octets reçus pour la file d'attente N.

queue_N_rx_refil_partial: N

Nombre de fois que le pilote n'a pas réussi à remplir la portion vide de la file d'attente rx avec les tampons pour la file d'attente N. Si cette valeur n'est pas égale à zéro, les ressources mémoire sont faibles.

queue_N_rx_bad_csum: N

Nombre de fois que la file d'attente rx a reçu un mauvais total de contrôle pour la file d'attente N (uniquement si le déchargement du total de contrôle rx est pris en charge).

queue_N_rx_page_alloc_fail: N

Nombre de fois que l'allocation des pages a échoué pour la file d'attente N. Si cette valeur n'est pas égale à zéro, les ressources mémoire sont faibles.

queue_N_rx_skb_alloc_fail: N

Nombre de fois que l'allocation SKB a échoué pour la file d'attente N. Si cette valeur n'est pas égale à zéro, les ressources système sont faibles.

queue_N_rx_dma_mapping_err: N

Nombre d'erreurs d'accès direct à la mémoire. Si cette valeur ne correspond pas à 0, les ressources système sont faibles.

queue_N_rx_bad_desc_num: N

Trop de tampons par paquet. Si cette valeur n'est pas égale à 0, cela indique l'utilisation de très petits tampons.

queue_N_rx_small_copy_len_pkt: N

Optimisation : pour les paquets qui se trouvent sous ce seuil, ce qui est défini par sysfs, le paquet est copié directement dans la stack pour éviter l'allocation d'une nouvelle page.

ena_admin_q_aborted_cmd: N

Nombre de commandes d'administration qui ont été abandonnées. Généralement, cela se produit lors de la procédure de récupération automatique.

ena_admin_q_submitted_cmd: N

Nombre de portes d'administration de la file d'attente.

ena_admin_q_completed_cmd: N

Nombre de finalisations de la file d'attente d'administration.

ena_admin_q_out_of_space: N

Nombre de fois que le pilote a essayé de présenter la nouvelle commande d'administration, mais que la file d'attente était pleine.

ena_admin_q_no_completion: N

Nombre de fois que l'administration du pilote n'a pas été terminée pour une commande.

Journaux d'erreur de pilote dans syslog

Le pilote ENA écrit les messages journaux dans syslog pendant le démarrage du système. Vous pouvez examiner ces journaux pour rechercher les erreurs si vous rencontrez des problèmes. Voici un exemple d'informations enregistrées par le pilote ENA dans syslog pendant le démarrage du système, ainsi que des annotations pour certains messages.

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

Quelles sont les erreurs que je peux ignorer ?

Les avertissements suivants qui peuvent apparaître dans les journaux d'erreur de votre système peuvent être ignorées pour Elastic Network Adapter :

Set host attribute isn't supported

Les attributs de l'hôte ne sont pas pris en charge pour cet appareil.

failed to alloc buffer for rx queue

Il s'agit d'une erreur récupérable. Elle indique qu'il y a peut-être eu n problème de pression de mémoire lorsque l'erreur a été lancée.

Feature X isn't supported

La fonctionnalité référencée n'est pas prise en charge par Elastic Network Adapter. Les valeurs possibles pour X incluent :

  • 10 : la configuration de la fonction de hachage RSS n'est pas prise en charge pour cet appareil.

  • 12 : la configuration de la table d'indirection RSS n'est pas prise en charge pour cet appareil.

  • 18 : la configuration des entrées de hachage RSS n'est pas prise en charge pour cet appareil.

  • 20 : la modération d'interruption n'est pas prise en charge pour cet appareil.

  • 27 : le pilote ENA (Elastic Network Adapter) ne prend pas en charge l'interrogation des fonctions Ethernet à partir de snmpd.

Failed to config AENQ

Elastic Network Adapter ne prend pas en charge la configuration AENQ.

Trying to set unsupported AENQ events

Cette erreur indique une tentative de définition d'un groupe d'événements AENQ qui n'est pas pris en charge par Elastic Network Adapter.