Solution communautaire

Vérifier la vitesse de liaison PCIe NVMe sur ZimaOS avec lspci et 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.

Lorsqu’un SSD NVMe est installé dans un emplacement prenant en charge moins de lignes PCIe que le disque lui-même, le nom du modèle ne suffit pas à déterminer la liaison active. Le fil de discussion de la communauté a utilisé lspci pour comparer les capacités PCIe du périphérique avec la liaison effectivement négociée.

La commande concise partagée dans le fil était la suivante :

Interface de stockage de ZimaOS affichant un SSD NVMe identifié par son modèle et sa capacité
Capture d’écran originale de la communauté montrant comment un périphérique NVMe apparaissait dans l’interface de stockage de ZimaOS.
Tableau communautaire de bande passante PCIe utilisé pour interpréter la vitesse de liaison et la largeur du lien avec lspci
Tableau de référence de la bande passante PCIe partagé par la communauté et utilisé dans la discussion pour interpréter la largeur de liaison négociée.
sudo lspci -vv | grep -E 'PCI bridge|LnkCap|LnkSta'

Pour un périphérique PCI spécifique, il est généralement plus simple de l’examiner directement une fois son adresse de bus connue :

sudo lspci -s 05:00.0 -vv

Les champs importants sont les suivants :

  • LnkCap : la vitesse et la largeur PCIe que le point d’extrémité ou la liaison est capable d’annoncer.
  • LnkSta : la vitesse et la largeur de liaison actuellement négociées.

Si un disque peut fonctionner avec une liaison plus large, mais que LnkSta indique moins de lignes, la plateforme utilise actuellement ce périphérique avec la largeur de liaison négociée la plus étroite.

Associer les noms NVMe aux adresses PCIe

L’auteur de la publication originale a également trouvé la sortie détaillée de nvme-cli utile pour associer les noms de périphériques Linux aux contrôleurs et aux adresses PCIe :

nvme list -v

Cela facilite l’association d’une entrée telle que /dev/nvme1 avec l’adresse PCI que vous examinez via lspci.

LnkSta répond à la question de la négociation PCIe. Il ne vous indique pas la vitesse réelle d’écriture séquentielle du SSD, ses IOPS aléatoires, son comportement en cas de limitation thermique ni ses performances soutenues.

Pour mesurer le comportement réel des entrées-sorties, utilisez un outil de référence adapté sur des données de test pouvant être supprimées et définissez soigneusement la charge de travail. La documentation des charges de travail de fio explique pourquoi la taille des blocs, la profondeur de file, le schéma d’accès, le moteur d’E/S et la taille du test modifient tous le résultat.

N’exécutez pas de tests destructifs sur un périphérique brut si le système de fichiers ou le disque contient des données dont vous avez besoin.

Contexte actuel sur le PCIe et les tests de performance

L’écosystème PCIe de Zima est utile pour comprendre la différence entre un emplacement physique et sa largeur réelle de liaison électrique. La page des cartes d’extension PCIe présente les types d’adaptateurs NVMe et réseau utilisés dans les projets d’extension Zima, tandis que le matériel ZimaBoard 2 fournit un exemple concret et actuel d’une plateforme dont la génération PCIe et le nombre de lignes sont explicitement indiqués.

La page consacrée à l’inspection des périphériques avec lspci définit lspci comme l’utilitaire Linux permettant d’inspecter les bus et les périphériques PCI, tandis que la page de liste des périphériques nvme-cli montre comment nvme list -v associe les contrôleurs, les espaces de noms, le transport et les adresses PCIe. Pour mesurer les E/S plutôt que la négociation du bus, utilisez la documentation des charges de travail de fio ; la profondeur de file, la taille des blocs, la répartition des lectures et écritures et la taille du test modifient toutes le résultat.

En résumé

Utilisez lspci -vv pour vérifier la génération PCIe et la largeur de liaison négociées, puis nvme list -v pour associer les périphériques NVMe à leurs adresses PCIe. Effectuez ensuite un test de performance séparé si vous avez besoin de connaître le débit réel du stockage. Le débit de liaison négocié est une propriété du bus, et non une mesure des performances du SSD.