Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Problembehandlung beim ENA Kernel-Treiber unter Linux
Der Elastic Network Adapter (ENA) wurde entwickelt, um den Zustand des Betriebssystems zu verbessern und die Wahrscheinlichkeit langfristiger Unterbrechungen aufgrund von unerwartetem Hardwareverhalten und/oder -ausfällen zu verringern. Die ENA Architektur sorgt dafür, dass Geräte- oder Treiberausfälle für das System so transparent wie möglich sind. Dieses Thema enthält Informationen zur Fehlerbehebung fürENA.
Beginnen Sie mit Abschnitt Fehlerbehebung bei Verbindungsproblemen, wenn Sie keine Verbindung mit Ihrer Instance herstellen können.
Wenn nach der Migration zu einem Instance-Typ der sechsten Generation Leistungseinbußen auftreten, lesen Sie den Artikel Was muss ich tun, bevor ich meine EC2 Instance auf eine Instance der sechsten Generation migriere, um sicherzustellen, dass ich die maximale Netzwerkleistung erhalte?
Wenn Sie eine Verbindung mit Ihrer Instance herstellen können, können Sie mithilfe der Fehlererkennungs- und Wiederherstellungsmechanismen Diagnose-Informationen sammeln. Ausführliche Informationen zu diesen Mechanismen finden Sie in den weiteren Abschnitten dieses Themas.
Inhalt
Fehlerbehebung bei Verbindungsproblemen
Wenn die Verbindung bei der Aktivierung des Enhanced Networking verloren geht, ist das ena
-Modul u. U. nicht mit der Kernelversion Ihrer Instance kompatibel. Dies geschieht z .B. dann, wenn Sie das Modul für eine bestimmte Kernelversion (ohne Befehl dkms oder mit einer falsch konfigurierten dkms.conf-Datei) installieren und Ihr Instance-Kernel anschließend aktualisiert wird. Wenn der beim Start geladene Instance-Kernel nicht über ein richtig installiertes ena
-Modul verfügt, erkennt Ihre Instance den Netzwerkadapter nicht und Ihre Instance ist nicht erreichbar.
Wenn Sie Enhanced Networking für eine PV-Instance oder aktivierenAMI, kann dies auch dazu führen, dass Ihre Instance nicht erreichbar ist.
Wenn Ihre Instance nach der Aktivierung von Enhanced Networking mit nicht mehr erreichbar istENA, können Sie das enaSupport
Attribut für Ihre Instance deaktivieren und es wird auf den Standard-Netzwerkadapter zurückgegriffen.
Um Enhanced Networking mit ENA (EBS-gestützten Instances) zu deaktivieren
-
Stoppen Sie die Instance von Ihrem lokalen Computer aus mithilfe der EC2 Amazon-Konsole oder mit einem der folgenden Befehle: stop-instances (AWS CLI), Stop-EC2Instance(AWS Tools for Windows PowerShell). Wenn Ihre Instance von verwaltet wird AWS OpsWorks, sollten Sie die Instance in der AWS OpsWorks Konsole beenden, damit der Instance-Status synchron bleibt.
Tipp
Wenn Sie eine Instance Store-Backed Instance verwenden, können Sie die Instance nicht anhalten. Fahren Sie stattdessen mit So deaktivieren Sie Enhanced Networking with ENA (instance, store-Backed) -Instances fort.
-
Deaktivieren Sie auf Ihrem lokalen Computer das Enhanced Networking-Attribut mithilfe des folgenden Befehls:
-
modify-instance-attribute (AWS CLI)
$
C:\>
aws ec2 modify-instance-attribute --instance-id
instance_id
--no-ena-support
-
-
Starten Sie die Instance von Ihrem lokalen Computer aus mit der EC2 Amazon-Konsole oder mit einem der folgenden Befehle: start-instances (AWS CLI), Start-EC2Instance(AWS Tools for Windows PowerShell). Wenn Ihre Instance von verwaltet wird AWS OpsWorks, sollten Sie die Instance in der AWS OpsWorks Konsole starten, damit der Instance-Status synchron bleibt.
-
(Optional) Stellen Sie eine Verbindung mit Ihrer Instance her und versuchen Sie, das Modul
ena
erneut mit Ihrer aktuellen Kernelversion zu installieren, indem Sie die entsprechenden Schritte unter Aktivieren Sie Enhanced Networking mit ENA auf Ihren EC2 Instances ausführen.
So deaktivieren Sie Enhanced Networking mit ENA (Instances, die vom Instance-Store unterstützt werden)
Wenn es sich bei Ihrer Instance um eine Instance mit Store-Backed Instance handelt, erstellen Sie eine neueAMI, wie unter beschrieben. Eine im Speicher gesicherte Instanz erstellen AMI Achten Sie darauf, das erweiterte enaSupport
Netzwerkattribut zu deaktivieren, wenn Sie das registrieren. AMI
-
register-image (AWS CLI)
$
C:\>
aws ec2 register-image --no-ena-support ...
-
Register-EC2Image (AWS Tools for Windows PowerShell)
C:\>
Register-EC2Image -EnaSupport $false ...
Keep-Alive-Mechanismus
Das ENA Gerät sendet Keep-Alive-Ereignisse mit einer festen Rate (normalerweise einmal pro Sekunde). Der ENA Treiber implementiert einen Watchdog-Mechanismus, der das Vorhandensein dieser Keep-Alive-Nachrichten überprüft. Wenn eine oder mehrere Nachrichten vorhanden sind, wird der Überwachungsmechanismus wieder aktiviert. Andernfalls geht der Treiber davon aus, dass ein Gerätefehler vorliegt, und ergreift folgende Maßnahmen:
-
Er legt seine aktuellen Statistiken unter syslog ab.
-
Setzt das Gerät zurück ENA
-
Setzt den Treiberstatus ENA zurück
Das oben beschriebene Verfahren zum Zurücksetzen kann für kurze Zeit zu einem gewissen Verlust des Datenverkehrs führen (TCPVerbindungen sollten wiederhergestellt werden können), sollte den Benutzer aber ansonsten nicht beeinträchtigen.
Das ENA Gerät kann auch indirekt einen Vorgang zum Zurücksetzen des Geräts anfordern, indem es keine Keep-Alive-Benachrichtigung sendet, z. B. wenn das ENA Gerät nach dem Laden einer nicht wiederherstellbaren Konfiguration einen unbekannten Status erreicht.
Im Folgenden finden Sie ein Beispiel für das Reset-Verfahren:
[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
Timeout für Registerlesevorgänge
Die ENA Architektur deutet auf eine begrenzte Verwendung von I/O (MMIO) -Leseoperationen mit Speicherabbildung hin. MMIOAuf Register greift der ENA Gerätetreiber nur während seines Initialisierungsvorgangs zu.
Wenn die Treiberprotokolle (verfügbar in der dmesg-Ausgabe) Fehler bei Lesevorgängen ausgeben, kann die Ursache ein nicht kompatibler oder falsch kompilierter Treiber, ein ausgelastetes Hardwaregerät oder einen Hardwarefehler sein.
Intermittierende Protokolleinträge, die auf Fehler bei Lesevorgängen hinweisen, stellen i. d. R. kein Problem dar. Der Treiber führt dafür in diesem Fall einen neuen Versuch durch. Eine Reihe von Protokolleinträgen mit Lesefehlern deuten jedoch auf ein Treiber- oder Hardwareproblem hin.
Nachfolgend finden Sie ein Beispiel für einen Treiber-Protokolleintrag, der auf einen Lesevorgangsfehler aufgrund eines Timeouts hindeutet:
[ 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
Statistiken
Falls eine unzureichende Netzwerkleistung oder Latenzprobleme auftreten, sollten Sie die Gerätestatistiken aufrufen und überprüfen. Diese Statistiken können Sie mithilfe von ethtool wie folgt aufrufen.
[ec2-user ~]$
ethtool -S eth
N
NIC statistics: tx_timeout: 0 suspend: 0 resume: 0 wd_expired: 0 interface_up: 1 interface_down: 0 admin_q_pause: 0 bw_in_allowance_exceeded: 0 bw_out_allowance_exceeded: 0 pps_allowance_exceeded: 0 conntrack_allowance_available: 450878 conntrack_allowance_exceeded: 0 linklocal_allowance_exceeded: 0 queue_0_tx_cnt: 4329 queue_0_tx_bytes: 1075749 queue_0_tx_queue_stop: 0 ...
Unten sind die folgenden Befehlsausgabeparameter beschrieben:
tx_timeout
:N
-
Gibt an, wie oft der Netdev-Überwachungsmechanismus aktiviert wurde.
suspend
:N
-
Gibt an, wie oft der Treiber eine Aussetzung durchgeführt hat.
resume
:N
-
Gibt an, wie oft der Treiber eine Wiederaufnahme durchgeführt hat.
wd_expired
:N
-
Gibt an, wie oft der Treiber in den letzten drei Sekunden kein Keep-Alive-Ereignis empfangen hat.
interface_up
:N
-
Die Häufigkeit, mit der die ENA Schnittstelle aufgerufen wurde.
interface_down
:N
-
Die Häufigkeit, mit der die ENA Schnittstelle heruntergefahren wurde.
admin_q_pause
:N
-
Gibt an, wie oft die Admin-Warteschlange nicht in einem laufenden Zustand gefunden wurde.
bw_in_allowance_exceeded
:N
Die Anzahl der Pakete, die in die Warteschlange gestellt oder verworfen wurden, da die eingehende aggregierte Bandbreite das Maximum für die Instance überschritten hat.
bw_out_allowance_exceeded
:N
Die Anzahl der Pakete, die in die Warteschlange gestellt oder verworfen wurden, weil die ausgehende aggregierte Bandbreite das Maximum für die Instance überschritten hat.
pps_allowance_exceeded
:N
Die Anzahl der Pakete, die in die Warteschlange gestellt oder verworfen wurden, weil die bidirektionale PPS Übertragung das Maximum für die Instanz überschritten hat. Bei diesem Limit werden auch ausgehende Fragment-Drops gezählt, die 1024 pro Person überschreiten. PPS ENI
conntrack_allowance_available
:N
Die Anzahl der nachverfolgten Verbindungen, die von der Instance hergestellt werden können, bevor die zulässige Anzahl nachverfolgter Verbindungen dieses Instance-Typs erreicht wird. Nur für Nitro-basierte Instances verfügbar. Wird nicht unterstützt mit FreeBSD Instanzen oder DPDK Umgebungen.
conntrack_allowance_exceeded
:N
Die Anzahl der verworfenen Pakete, weil die Verbindungsverfolgung das Maximum für die Instance überschritten hat und keine neuen Verbindungen hergestellt werden konnten. Dies kann zu einem Paketverlust für den Datenverkehr zur oder von der Instance führen.
linklocal_allowance_exceeded
:N
Die Anzahl der verworfenen Pakete, weil PPS der Datenverkehr zu lokalen Proxydiensten das Maximum für die Netzwerkschnittstelle überschritten hat. Dies wirkt sich auf den Traffic zum DNS Service, zum Instance Metadata Service und zum Amazon Time Sync Service aus.
queue_
:N
_tx_cntN
-
Gibt die Anzahl der übertragenen Pakete für diese Warteschlange an.
queue_
:N
_tx_bytesN
-
Gibt die Anzahl von übertragenen Bytes für diese Warteschlange an.
queue_
:N
_tx_queue_stopN
-
Die Häufigkeit, mit der sie in die Warteschlange gestellt wurden
N
war voll und wurde gestoppt. queue_
:N
_tx_queue_wakeupN
-
Wie oft diese Warteschlange
N
wurde nach dem Stoppen wieder aufgenommen. queue_
:N
_tx_dma_mapping_errN
-
Fehleranzahl für direkten Speicherzugriff. Wenn dieser Wert nicht 0 ist, weist dies auf einen niedrigen Stand der Systemressourcen hin.
queue_
:N
_tx_linearizeN
-
Gibt an, wie oft versucht wurde, für diese Warteschlange eine SKB Linearisierung durchzuführen.
queue_
:N
_tx_linearize_failedN
-
Gibt an, wie oft die SKB Linearisierung für diese Warteschlange fehlgeschlagen ist.
queue_
:N
_tx_napi_compN
-
Gibt an, wie oft der
napi
-Handlernapi_complete
für diese Warteschlange aufgerufen hat. queue_
:N
_tx_tx_pollN
-
Gibt an, wie oft der
napi
-Handler für diese Warteschlange geplant war. queue_
:N
_tx_doorbellsN
-
Gibt die Anzahl der Übertragungs-Doorbells für diese Warteschlange an.
queue_
:N
_tx_prepare_ctx_errN
-
Gibt an, wie oft
ena_com_prepare_tx
für diese Warteschlange fehlgeschlagen ist. queue_
:N
_tx_bad_req_idN
-
Ungültige
req_id
für diese Warteschlange. Die gültigereq_id
ist 0, minusqueue_size
und minus 1. queue_
:N
_tx_llq_buffer_copyN
-
Die Anzahl der Pakete, deren Header-Größe größer ist als der llq-Eintrag für diese Warteschlange.
queue_
:N
_tx_missed_txN
-
Gibt die Anzahl der nicht abgeschlossenen Pakete für diese Warteschlange an.
queue_
:N
_tx_unmask_interruptN
-
Gibt an, wie oft der tx-Interrupt für diese Warteschlange entlarvt wurde.
queue_
:N
_rx_cntN
-
Anzahl der empfangenen Pakete für diese Warteschlange.
queue_
:N
_rx_bytesN
-
Anzahl der empfangenen Bytes für diese Warteschlange.
queue_
:N
_rx_rx_copybreak_pktN
-
Gibt an, wie oft die rx-Warteschlange ein Paket erhalten hat, das kleiner als die rx_copybreak-Paketgröße für diese Warteschlange ist.
queue_
:N
_rx_csum_goodN
-
Gibt an, wie oft die rx-Warteschlange ein Paket erhalten hat, in dem die Prüfsumme überprüft wurde und für diese Warteschlange korrekt war.
queue_
:N
_rx_refil_partialN
-
Gibt an, wie oft der Treiber erfolglos versucht hat, den leeren Teil der rx-Warteschlange mit den Puffern für diese Warteschlange wieder aufzufüllen. Ist dieser Wert nicht 0, weist dies auf einen niedrigen Stand der Speicherressourcen hin.
queue_
:N
_rx_bad_csumN
-
Gibt an, wie oft die Warteschlange
rx
eine fehlerhafte Prüfsumme für diese Warteschlange ermittelt hat (nur wenn rx-Prüfsummenabladung unterstützt wird). queue_
:N
_rx_page_alloc_failN
-
Gibt an, wie oft die Seitenzuordnung für diese Warteschlange fehlgeschlagen ist. Ist dieser Wert nicht 0, weist dies auf einen niedrigen Stand der Speicherressourcen hin.
queue_
:N
_rx_skb_alloc_failN
-
Gibt an, wie oft die SKB Zuordnung für diese Warteschlange fehlgeschlagen ist. Wenn dieser Wert nicht 0 ist, weist dies auf einen niedrigen Stand der Systemressourcen hin.
queue_
:N
_rx_dma_mapping_errN
-
Fehleranzahl für direkten Speicherzugriff. Wenn dieser Wert nicht 0 ist, weist dies auf einen niedrigen Stand der Systemressourcen hin.
queue_
:N
_rx_bad_desc_numN
-
Zu viele Puffer pro Paket. Wenn dieser Wert nicht 0 ist, weist dies auf die Verwendung von sehr kleinen Puffern hin.
queue_
:N
_rx_bad_req_idN
-
Die req_id für diese Warteschlange ist nicht gültig. Die gültige req_id stammt von [0, queue_size - 1].
queue_
:N
_rx_empty_rx_ringN
-
Gibt an, wie oft die rx-Warteschlange für diese Warteschlange leer war.
queue_
:N
_rx_csum_uncheckedN
-
Gibt an, wie oft die rx-Warteschlange ein Paket erhalten hat, dessen Prüfsumme nicht für diese Warteschlange überprüft wurde.
queue_
:N
_rx_xdp_abortedN
-
Gibt an, wie oft ein XDP Paket als XDP _ klassifiziert wurdeABORT.
queue_
:N
_rx_xdp_dropN
-
Gibt an, wie oft ein XDP Paket als XDP _ klassifiziert wurdeDROP.
queue_
:N
_rx_xdp_passN
-
Gibt an, wie oft ein XDP Paket als XDP _ klassifiziert wurdePASS.
queue_
:N
_rx_xdp_txN
-
Gibt an, wie oft ein XDP Paket als XDP _TX klassifiziert wurde.
queue_
:N
_rx_xdp_invalidN
-
Gibt an, wie oft der XDP Rückgabecode für das Paket nicht gültig war.
queue_
:N
_rx_xdp_redirectN
-
Gibt an, wie oft ein XDP Paket als XDP _ klassifiziert wurdeREDIRECT.
queue_
:N
_xdp_tx_cntN
-
Gibt die Anzahl der übertragenen Pakete für diese Warteschlange an.
queue_
:N
_xdp_tx_bytesN
-
Gibt die Anzahl von übertragenen Bytes für diese Warteschlange an.
queue_
:N
_xdp_tx_queue_stopN
-
Gibt an, wie oft diese Warteschlange vollständig gefüllt war und angehalten wurde.
queue_
:N
_xdp_tx_queue_wakeupN
-
Gibt an, wie oft diese Warteschlange nach dem Anhalten wieder gestartet wurde.
queue_
:N
_xdp_tx_dma_mapping_errN
-
Fehleranzahl für direkten Speicherzugriff. Wenn dieser Wert nicht 0 ist, weist dies auf einen niedrigen Stand der Systemressourcen hin.
queue_
:N
_xdp_tx_linearizeN
-
Gibt an, wie oft versucht wurde, die XDP Pufferlinearisierung für diese Warteschlange durchzuführen.
queue_
:N
_xdp_tx_linearize_failedN
-
Gibt an, wie oft die XDP Pufferlinearisierung für diese Warteschlange fehlgeschlagen ist.
queue_
:N
_xdp_tx_napi_compN
-
Gibt an, wie oft der Napi-Handler napi_complete für diese Warteschlange aufgerufen hat.
queue_
:N
_xdp_tx_tx_pollN
-
Gibt an, wie oft der Napi-Handler für diese Warteschlange geplant war.
queue_
:N
_xdp_tx_doorbellsN
-
Gibt die Anzahl der Übertragungs-Doorbells für diese Warteschlange an.
queue_
:N
_xdp_tx_prepare_ctx_errN
-
Gibt an, wie oft der ena_com_prepare_tx für diese Warteschlange fehlgeschlagen ist. Dieser Wert sollte immer 0 sein. Überprüfen Sie die Treiberprotokolle, wenn dies nicht der Fall ist.
queue_
:N
_xdp_tx_bad_req_idN
-
Die req_id für diese Warteschlange ist nicht gültig. Die gültige req_id stammt von [0, queue_size - 1].
queue_
:N
_xdp_tx_llq_buffer_copyN
-
Die Anzahl der Pakete, deren Header mit LLQ-Pufferkopie für diese Warteschlange kopiert wurden.
queue_
:N
_xdp_tx_missed_txN
-
Gibt an, wie oft ein tx-Warteschlangeneintrag ein Abschluss-Timeout für diese Warteschlange verpasst hat.
queue_
:N
_xdp_tx_unmask_interruptN
-
Gibt an, wie oft der tx-Interrupt für diese Warteschlange entlarvt wurde.
ena_admin_q_aborted_cmd
:N
-
Gibt die Anzahl der abgebrochenen Admin-Befehle an. Dies passiert normalerweise während des automatischen Wiederherstellungsverfahrens.
ena_admin_q_submitted_cmd
:N
-
Gibt die Anzahl der Doorbells für die Admin-Warteschlange an.
ena_admin_q_completed_cmd
:N
-
Gibt die Anzahl der Abschlüsse für die Admin-Warteschlange an.
ena_admin_q_out_of_space
:N
-
Gibt an, wie oft der Treiber versucht hat, einen neuen Admin-Befehl zu senden, während die Warteschlange ausgelastet war.
ena_admin_q_no_completion
:N
-
Gibt an, wie oft der Treiber für einen Befehl keinen Admin-Abschluss erhalten hat.
Treiberfehlerprotokolle im syslog
Der ENA Treiber schreibt syslog während des Systemstarts Protokollmeldungen in. Wenn Sie entsprechende Probleme feststellen, können Sie diese Protokolle auf Fehler überprüfen. Im Folgenden finden Sie ein Beispiel für Informationen, die der ENA Treiber syslog beim Systemstart protokolliert hat, sowie einige Anmerkungen zu ausgewählten Meldungen.
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
Welche Fehler kann ich ignorieren?
Folgende Warnungen, die u. U. in den Fehlerprotokollen Ihres Systems auftauchen, können für den Elastic Network Adapter ignoriert werden:
Das Festlegen des Hostattributs wird nicht unterstützt
-
Host-Attribute werden für dieses Gerät nicht unterstützt.
Es konnte kein Puffer für die Empfangswarteschlange reserviert werden
-
Dies ist ein umkehrbarer Fehler, der darauf hinweist, dass beim Auslösen des Fehlers eine starke Speicherbelastung vorgelegen hat.
Merkmal
X
wird nicht unterstützt-
Das angegebene Feature wird vom Elastic Network Adapter nicht unterstützt. Mögliche Werte für
X
beinhalten:-
10
: Die Konfiguration der RSS Hash-Funktion wird für dieses Gerät nicht unterstützt. -
12
: Die Konfiguration von RSS Indirektionstabellen wird für dieses Gerät nicht unterstützt. -
18
: Die RSS Hash-Input-Konfiguration wird für dieses Gerät nicht unterstützt. -
20
: Interrupt Moderation wird für dieses Gerät nicht unterstützt. -
27
: Der Elastic Network Adapter-Treiber unterstützt keine Abfrage der Ethernet-Kapazitäten von snmpd.
-
Konnte nicht konfiguriert werden AENQ
-
Der Elastic Network Adapter unterstützt keine AENQ Konfiguration.
Es wird versucht, Ereignisse einzustellen, die nicht unterstützt werden AENQ
-
Dieser Fehler weist auf einen Versuch hin, eine AENQ Ereignisgruppe einzurichten, die vom Elastic Network Adapter nicht unterstützt wird.
Benachrichtigungen zur suboptimalen Konfiguration
Das ENA Gerät erkennt suboptimale Konfigurationseinstellungen im Treiber, die Sie ändern können. Das Gerät benachrichtigt den ENA Treiber und protokolliert eine Warnung an der Konsole. Das folgende Beispiel zeigt das Format der Warnmeldung.
Sub-optimal configuration notification code:
1
. Refer to AWS ENA documentation for additional details and mitigation options.
Die folgende Liste enthält Details zum Benachrichtigungscode und empfohlene Maßnahmen für suboptimale Konfigurationserkenntnisse.
-
Code
1
: ENA Express mit breiter LLQ Konfiguration wird nicht empfohlenENAExpress ENI ist mit Wide konfiguriertLLQ. Diese Konfiguration ist suboptimal und könnte sich auf die Leistung von ENA Express auswirken. Wir empfehlen, die allgemeinen LLQ Einstellungen ENIs wie folgt zu deaktivieren, wenn Sie ENA Express verwenden.
sudo rmmod ena && sudo modprobe ena force_large_llq_header=0
Weitere Informationen zur optimalen Konfiguration für ENA Express finden Sie unterVerbessern Sie die Netzwerkleistung zwischen EC2 Instanzen mit ENA Express.
-
Code
2
: ENA Express ENI mit suboptimaler Tx-Warteschlangentiefe wird nicht empfohlenENAExpress ENI ist mit einer suboptimalen Tx-Warteschlangentiefe konfiguriert. Diese Konfiguration könnte sich auf die Leistung von ENA Express auswirken. Wir empfehlen, alle Tx-Warteschlangen auf den Maximalwert für die Netzwerkschnittstelle zu vergrößern, wenn Sie ENA Express ENIs wie folgt verwenden.
Sie können die folgenden ethtool Befehle ausführen, um die LLQ Größe anzupassen. Weitere Informationen zur Steuerung, Abfrage und Aktivierung von Wide- LLQ finden Sie im Thema Large Low-Latency Queue (LargeLLQ)
des Linux-Kerneltreibers für die ENA Dokumentation im Amazon GitHub Drivers-Repository. ethtool -g
interface
Stellen Sie Ihre Tx-Warteschlangen auf die maximale Tiefe ein:
ethtool -G
interface
txdepth
Weitere Informationen zur optimalen Konfiguration für ENA Express finden Sie unterVerbessern Sie die Netzwerkleistung zwischen EC2 Instanzen mit ENA Express.
-
Code
3
: ENA Bei normaler LLQ Größe und Tx überschreitet der Paketverkehr die maximal unterstützte Header-GrößeENALLQUnterstützt standardmäßig eine Tx-Paket-Header-Größe von bis zu 96 Byte. Wenn die Größe des Paket-Headers mehr als 96 Byte beträgt, wird das Paket verworfen. Um dieses Problem zu beheben, empfehlen wir, wide- zu aktivierenLLQ, wodurch die unterstützte Tx-Paket-Header-Größe auf maximal 224 Byte erhöht wird.
Wenn Sie jedoch wide- aktivierenLLQ, wird die maximale Tx-Ringgröße von 1000 auf 512 Einträge reduziert. Wide- LLQ ist standardmäßig für alle Instance-Typen von Nitro v4 und höher aktiviert.
-
Nitro v4-Instance-Typen haben standardmäßig eine maximale LLQ Wide-Tx-Ringgröße von 512 Einträgen, die nicht geändert werden kann.
-
Nitro v5-Instance-Typen haben eine standardmäßige LLQ Wide-Tx-Ringgröße von 512 Einträgen, die Sie auf bis zu 1000 Einträge erhöhen können.
Sie können die folgenden ethtool Befehle ausführen, um die Größe anzupassenLLQ. Weitere Informationen zur Steuerung, Abfrage und Aktivierung von Wide- LLQ finden Sie im Thema Large Low-Latency Queue (LargeLLQ)
des Linux-Kerneltreibers für die ENA Dokumentation im Amazon GitHub Drivers-Repository. Finden Sie die maximale Tiefe für Ihre Tx-Warteschlangen heraus:
ethtool -g
interface
Stellen Sie Ihre Tx-Warteschlangen auf die maximale Tiefe ein:
ethtool -G
interface
txdepth
-