Rozwiązanie społecznościowe

Sprawdź szybkość łącza NVMe PCIe w ZimaOS za pomocą lspci i nvme-cli

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.

Gdy dysk SSD NVMe jest zainstalowany w gnieździe obsługującym mniej linii PCIe niż sam dysk, sama nazwa modelu nie pozwala określić aktywnego połączenia. Wątek społeczności wykorzystał polecenie lspci, aby porównać możliwości PCIe urządzenia z faktycznie wynegocjowanym połączeniem.

Kompaktowe polecenie udostępnione w wątku to:

Interfejs pamięci masowej ZimaOS pokazujący dysk SSD NVMe rozpoznany na podstawie modelu i pojemności
Oryginalny zrzut ekranu społeczności pokazujący, jak urządzenie NVMe pojawiało się w interfejsie pamięci masowej ZimaOS.
Wykres przepustowości PCIe ze społeczności użyty do interpretacji szybkości połączenia i szerokości magistrali na podstawie lspci
Udostępniona przez społeczność tabela referencyjna przepustowości PCIe użyta w dyskusji do interpretacji wynegocjowanej szerokości połączenia.
sudo lspci -vv | grep -E 'PCI bridge|LnkCap|LnkSta'

W przypadku konkretnego urządzenia PCI zwykle łatwiej jest sprawdzić je bezpośrednio po poznaniu jego adresu magistrali:

sudo lspci -s 05:00.0 -vv

Najważniejsze pola to:

  • LnkCap: szybkość i szerokość PCIe, które punkt końcowy lub połączenie może zgłaszać.
  • LnkSta: aktualnie wynegocjowana szybkość i szerokość połączenia.

Jeśli dysk może działać przy szerszym połączeniu, ale LnkSta pokazuje mniej linii, platforma obecnie obsługuje to urządzenie z mniejszą wynegocjowaną szerokością.

Mapowanie nazw NVMe na adresy PCIe

Autor pierwotnego wpisu uznał również szczegółowe dane wyjściowe nvme-cli za przydatne do powiązania nazw urządzeń Linuksa z kontrolerami i adresami PCIe:

nvme list -v

Ułatwia to powiązanie wpisu takiego jak /dev/nvme1 z adresem PCI sprawdzanym za pomocą lspci.

LnkSta odpowiada na pytanie dotyczące negocjacji PCIe. Nie informuje jednak o rzeczywistej sekwencyjnej szybkości zapisu dysku SSD, losowej liczbie operacji I/O na sekundę, dławieniu termicznym ani wydajności utrzymywanej w dłuższym czasie.

Do sprawdzania rzeczywistego działania I/O użyj odpowiedniego testu porównawczego na przeznaczonych do tego danych testowych i dokładnie określ obciążenie. Dokumentacja obciążeń fio wyjaśnia, dlaczego rozmiar bloku, głębokość kolejki, wzorzec dostępu, mechanizm I/O i rozmiar testu wpływają na wynik.

Nie uruchamiaj destrukcyjnych testów na surowym urządzeniu na systemie plików ani dysku zawierającym potrzebne dane.

Aktualny kontekst PCIe i testów porównawczych

Ekosystem PCIe Zima pomaga zrozumieć różnicę między fizycznym gniazdem a jego rzeczywistą elektryczną szerokością magistrali. Karty rozszerzeń PCIe pokazują rodzaje adapterów NVMe i sieciowych używanych w projektach rozbudowy Zima, natomiast sprzęt ZimaBoard 2 stanowi konkretny, aktualny przykład platformy, w której generacja PCIe i liczba linii są jednoznacznie określone.

Inspekcja urządzeń za pomocą lspci definiuje lspci jako narzędzie Linuksa do sprawdzania magistral i urządzeń PCI, natomiast wyświetlanie urządzeń za pomocą nvme-cli pokazuje, jak nvme list -v mapuje kontrolery, przestrzenie nazw, transport i adresy PCIe. Do pomiaru I/O, a nie negocjacji magistrali, użyj dokumentacji obciążeń fio; głębokość kolejki, rozmiar bloku, proporcje odczytu do zapisu i rozmiar testu wpływają na wynik.

Podsumowanie

Użyj lspci -vv, aby zweryfikować wynegocjowaną generację PCIe i szerokość magistrali, a następnie użyj nvme list -v, aby powiązać urządzenia NVMe z ich adresami PCIe. Jeśli potrzebujesz rzeczywistej przepustowości pamięci masowej, przeprowadź osobny test porównawczy. Wynegocjowana szybkość połączenia jest właściwością magistrali, a nie wynikiem wydajności dysku SSD.