Solución de la comunidad

Comprobar la velocidad del enlace PCIe NVMe en ZimaOS con lspci y 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.

Cuando se instala un SSD NVMe en una ranura que admite menos líneas PCIe que la propia unidad, el nombre del modelo por sí solo no permite saber cuál es el enlace activo. En el hilo de la comunidad se utilizó lspci para comparar la capacidad PCIe del dispositivo con el enlace que se negoció realmente.

El comando compacto compartido en el hilo fue:

Interfaz de almacenamiento de ZimaOS que muestra un SSD NVMe identificado por modelo y capacidad
Captura de pantalla original de la comunidad que muestra cómo aparecía un dispositivo NVMe en la interfaz de almacenamiento de ZimaOS.
Gráfico comunitario del ancho de banda PCIe utilizado para interpretar la velocidad y el ancho del enlace mediante lspci
Referencia del ancho de banda PCIe subida por la comunidad y utilizada en el debate para interpretar el ancho del enlace negociado.
sudo lspci -vv | grep -E 'PCI bridge|LnkCap|LnkSta'

Para un dispositivo PCI específico, normalmente es más fácil inspeccionarlo directamente cuando ya se conoce su dirección de bus:

sudo lspci -s 05:00.0 -vv

Los campos importantes son:

  • LnkCap: la velocidad y el ancho PCIe que el punto final o el enlace puede anunciar.
  • LnkSta: la velocidad y el ancho de enlace negociados actualmente.

Si una unidad puede funcionar con un enlace más ancho, pero LnkSta muestra menos líneas, la plataforma está utilizando actualmente esa unidad con el ancho negociado más estrecho.

Asociar los nombres NVMe con las direcciones PCIe

El autor original también consideró útil la salida detallada de nvme-cli para asociar los nombres de los dispositivos de Linux con los controladores y las direcciones PCIe:

nvme list -v

Esto facilita asociar una entrada como /dev/nvme1 con la dirección PCI que se inspecciona mediante lspci.

LnkSta responde a la pregunta sobre la negociación PCIe. No indica la velocidad real de escritura secuencial del SSD, sus IOPS aleatorias, el comportamiento de limitación térmica ni el rendimiento sostenido.

Para evaluar el comportamiento real de E/S, utiliza un banco de pruebas adecuado con datos de prueba desechables y define cuidadosamente la carga de trabajo. La documentación de cargas de trabajo de fio explica por qué el tamaño de bloque, la profundidad de cola, el patrón de acceso, el motor de E/S y el tamaño de la prueba modifican el resultado.

No ejecutes bancos de pruebas destructivos sobre dispositivos sin formato en un sistema de archivos o disco que contenga datos que necesites.

Contexto actual de PCIe y los bancos de pruebas

El ecosistema PCIe de Zima resulta útil para entender la diferencia entre una ranura física y su ancho real de líneas eléctricas. Las tarjetas de expansión PCIe muestran los tipos de adaptadores NVMe y de red utilizados en proyectos de expansión de Zima, mientras que el hardware de ZimaBoard 2 ofrece un ejemplo actual concreto de una plataforma cuyas generaciones PCIe y cantidad de líneas están especificadas explícitamente.

La inspección de dispositivos con lspci define lspci como la utilidad de Linux para inspeccionar buses y dispositivos PCI, mientras que el listado de dispositivos de nvme-cli muestra cómo nvme list -v asocia controladores, espacios de nombres, transporte y direcciones PCIe. Para medir la E/S en lugar de la negociación del bus, utiliza la documentación de cargas de trabajo de fio; la profundidad de cola, el tamaño de bloque, la combinación de lecturas y escrituras y el tamaño de la prueba modifican el resultado.

En resumen

Utiliza lspci -vv para verificar la generación PCIe y el ancho de enlace negociados, y utiliza nvme list -v para asociar los dispositivos NVMe con sus direcciones PCIe. Después, ejecuta un banco de pruebas por separado si necesitas conocer el rendimiento real del almacenamiento. La velocidad de enlace negociada es una propiedad del bus, no una medida del rendimiento del SSD.