Community-Lösung

NVMe-PCIe-Link-Geschwindigkeit auf ZimaOS mit lspci und nvme-cli überprüfen

A user with several NVMe slots wanted to verify whether installed SSDs were actually negotiating PCIe Gen4 rather than Gen3. The discussion focused on lspci LnkCap/LnkSta output and nvme-cli device mapping.

Wenn eine NVMe-SSD in einem Steckplatz installiert ist, der weniger PCIe-Lanes unterstützt als das Laufwerk selbst, lässt sich die aktive Verbindung nicht allein anhand des Modellnamens bestimmen. Im Community-Thread wurde lspci verwendet, um die PCIe-Fähigkeit des Geräts mit der tatsächlich ausgehandelten Verbindung zu vergleichen.

Der im Thread geteilte kompakte Befehl lautete:

ZimaOS-Speicheroberfläche mit einer anhand von Modell und Kapazität identifizierten NVMe-SSD
Originaler Community-Screenshot, der zeigt, wie ein NVMe-Gerät in der ZimaOS-Speicheroberfläche angezeigt wurde.
Von der Community bereitgestellte PCIe-Bandbreitentabelle zur Interpretation von Verbindungsgeschwindigkeit und Lane-Breite anhand von lspci
Von der Community hochgeladene PCIe-Bandbreitenreferenz, die in der Diskussion zur Interpretation der ausgehandelten Verbindungsbreite verwendet wurde.
sudo lspci -vv | grep -E 'PCI bridge|LnkCap|LnkSta'

Für ein bestimmtes PCI-Gerät ist es meist einfacher, das Gerät direkt zu untersuchen, sobald Sie seine Busadresse kennen:

sudo lspci -s 05:00.0 -vv

Wichtig sind folgende Felder:

  • LnkCap: die PCIe-Geschwindigkeit und -Breite, die der Endpunkt oder die Verbindung unterstützen kann.
  • LnkSta: die aktuell ausgehandelte Geschwindigkeit und Lane-Breite.

Wenn ein Laufwerk eine breitere Verbindung nutzen kann, LnkSta jedoch weniger Lanes anzeigt, betreibt die Plattform dieses Gerät derzeit mit der ausgehandelten schmaleren Verbindung.

NVMe-Namen PCIe-Adressen zuordnen

Der ursprüngliche Beitragende fand außerdem die ausführliche Ausgabe von nvme-cli hilfreich, um Linux-Gerätenamen den Controllern und PCIe-Adressen zuzuordnen:

nvme list -v

Dadurch lässt sich ein Eintrag wie /dev/nvme1 leichter der PCI-Adresse zuordnen, die Sie mit lspci untersuchen.

LnkSta beantwortet die Frage nach der PCIe-Aushandlung. Es sagt nicht aus, wie hoch die tatsächliche sequenzielle Schreibgeschwindigkeit oder die zufällige IOPS-Leistung der SSD ist und wie sie sich bei thermischer Drosselung oder unter anhaltender Belastung verhält.

Verwenden Sie für das tatsächliche I/O-Verhalten einen geeigneten Benchmark mit entbehrlichen Testdaten und definieren Sie die Arbeitslast sorgfältig. Die fio-Dokumentation zu Arbeitslasten erläutert, warum Blockgröße, Warteschlangentiefe, Zugriffsmuster, I/O-Engine und Testgröße das Ergebnis jeweils verändern.

Führen Sie keine destruktiven Benchmarks auf einem Raw-Gerät aus, dessen Dateisystem oder Datenträger Daten enthält, die Sie benötigen.

Aktueller PCIe- und Benchmark-Kontext

Das Zima-PCIe-Ökosystem hilft dabei, den Unterschied zwischen einem physischen Steckplatz und seiner tatsächlichen elektrischen Lane-Breite zu verstehen. Die PCIe-Erweiterungskarten zeigen, welche NVMe- und Netzwerkadapter in Zima-Erweiterungsprojekten verwendet werden, während die ZimaBoard-2-Hardware ein konkretes aktuelles Beispiel für eine Plattform bietet, bei der PCIe-Generation und Lane-Anzahl ausdrücklich angegeben sind.

Die Geräteuntersuchung mit lspci definiert lspci als Linux-Dienstprogramm zur Untersuchung von PCI-Bussen und -Geräten, während die Geräteauflistung von nvme-cli zeigt, wie nvme list -v Controller, Namespaces, Transport und PCIe-Adressen zuordnet. Für gemessene I/O-Leistung statt Bus-Aushandlung verwenden Sie die fio-Dokumentation zu Arbeitslasten; Warteschlangentiefe, Blockgröße, Lese-/Schreibverhältnis und Testgröße verändern das Ergebnis jeweils.

Kurz gesagt

Verwenden Sie lspci -vv, um die ausgehandelte PCIe-Generation und Lane-Breite zu überprüfen, und nvme list -v, um NVMe-Geräte ihren PCIe-Adressen zuzuordnen. Führen Sie anschließend einen separaten Benchmark durch, wenn Sie den tatsächlichen Speicherdurchsatz benötigen. Eine ausgehandelte Verbindungsgeschwindigkeit ist eine Eigenschaft des Busses und kein Leistungswert der SSD.