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.
Verbindungsfähigkeit und aktuellen Verbindungsstatus prüfen
Der im Thread geteilte kompakte Befehl lautete:


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.
Verbindungsgeschwindigkeit ist nicht dasselbe wie der tatsächliche SSD-Durchsatz
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.
