Erzwingen Sie eine Neuverhandlung der PCIe-Geschwindigkeit unter Linux

8

Ich arbeite mit PCIe Gen 3-Karten und von Zeit zu Zeit scheinen sie auf PCIe 1 oder 2-Geschwindigkeiten zurückzugreifen (laut lspci und auch durch den Durchsatz beobachtet).

Beim Neustart / Aus- und Wiedereinschalten der Maschine kehrt die Geschwindigkeit in den meisten Fällen auf die volle PCIe Gen 3-Geschwindigkeit zurück.

Gibt es eine weniger aufdringliche Möglichkeit, eine Neuverhandlung der PCI-Verbindungsgeschwindigkeit (z. B. Versuch, sie auf PCI Gen 3 zurückzubringen) auf z. B. RHEL6 zu erzwingen?

Andre Holzner
quelle
2
In Windows habe ich gesehen, dass es sich automatisch ändert, es ist eine Funktion des Stromsparmodus des PCI-E-Busses. serverfault.com/questions/226319/what-does-pcie-aspm-do scheint eine nette Erklärung zu haben
Marcin
danke für diese Information ! Leider tritt in meinem Fall die Geschwindigkeitsreduzierung nur bei einigen Hosts auf und es wird nicht wieder die volle Geschwindigkeit erreicht, wenn wir das Gerät wieder verwenden ...
Andre Holzner
1
Könnte dies von ACPI kontrolliert werden? - Aktualisieren oder installieren Sie möglicherweise ACPI-bezogene Pakete für Ihre Distribution. Alternativ können Sie die Funktion im BIOS deaktivieren.
LawrenceC

Antworten:

4

Sie können Ihre PCIe-Energiepolitik in dieser Datei überprüfen:

# cat /sys/module/pcie_aspm/parameters/policy

Da Gen3 bei der Energieverwaltung über ASPM (Active-State Power Management) recht unkompliziert ist, kann dies die Hauptursache für das Problem auf Ihrem Bus sein: Der Durchsatz ist gering, sodass die Module die Geschwindigkeit verringern, aber vergessen, sie erneut zu erhöhen, wenn benötigt (falls erforderlich). Sie können Grub erzwingen, um die Verwendung der Richtlinie "Powersave" oder "Standard" zu vermeiden, indem Sie aspm mit dem folgenden Parameter deaktivieren:

pcie_aspm=off

Testen Sie dies auf nur einem Kernel, der diese Option in /boot/grub/grub.confder Zeile "Kernel" Ihres Standard-Boot-Linux anfügt. Beispiel für eine Grub-Konfiguration, die aus den Red Hat-Dokumenten extrahiert wurde:

default=0 
timeout=10 
splashimage=(hd0,0)/grub/splash.xpm.gz 
hiddenmenu 
title Red Hat Enterprise Linux Server (2.6.18-2.el5PAE)         
root (hd0,0)         
kernel /boot/vmlinuz-2.6.18-2.el5PAE ro root=LABEL=/1 rhgb quiet pcie_aspm=off      
initrd /boot/initrd-2.6.18-2.el5PAE.img

quelle
1
Danke für die Antwort ! Am Ende stellte sich heraus, dass die PCI-Karte ein Problem mit der Datenübertragung auf dem PCI-Bus hatte, und der Hersteller hat es mit einem Firmware-Upgrade behoben.
Andre Holzner
1
Wir hatten ähnliche Probleme mit einem HBA bei unserer Arbeit (Brokat), und es war auch ein Firmware-Problem :)