Skip to content

Diagnóstico NVMe en X99

Cómo verificar desde Linux si un SSD es NVMe real, en qué slot está instalado, mapear las líneas PCIe de una placa X99 china y por qué un Optane H10 no funciona en ella.

Sesión de diagnóstico completa sobre una placa X99 china (Xeon E5 v3 / Haswell-EP): verificar que un SSD es NVMe de verdad, descubrir en qué slot físico está, mapear la topología PCIe, y entender por qué un Optane H10 no puede funcionar en esta plataforma.

El primer paso es mirar el transporte (TRAN) con lsblk:

Terminal window
lsblk -d -o NAME,MODEL,SIZE,TRAN,ROTA
NAME MODEL SIZE TRAN ROTA
sda P3-512 476.9G sata 0
sdb ST1000LM035-1RK172 931.5G usb 1
nvme0n1 Fanxiang S660 1TB 931.5G nvme 0

Claves para confirmar que es NVMe nativo:

  • TRAN: nvme (no sata).
  • El dispositivo aparece como /dev/nvme0n1, no como /dev/sdX.
  • lspci muestra un controlador NVMe real:
Terminal window
lspci | grep -i nvme
# 02:00.0 Non-Volatile memory controller: MAXIO MAP1602 (DRAM-less)

El Fanxiang S660 usa el controlador MAXIO MAP1602 — un controlador PCIe 4.0 DRAM-less legítimo.

2. ¿En qué slot está y a qué velocidad negocia?

Section titled “2. ¿En qué slot está y a qué velocidad negocia?”

El sysfs expone el link PCIe negociado vs. el máximo del dispositivo:

Terminal window
cat /sys/class/nvme/nvme0/device/current_link_speed # 8.0 GT/s PCIe (Gen3)
cat /sys/class/nvme/nvme0/device/current_link_width # 4
cat /sys/class/nvme/nvme0/device/max_link_speed # 16.0 GT/s PCIe (Gen4)
cat /sys/class/nvme/nvme0/device/max_link_width # 4
PropiedadValor
Link actualPCIe 3.0 x4 (~3.5 GB/s)
Capacidad del SSDPCIe 4.0 x4 (~7 GB/s)
Límite de la plataformaPCIe 3.0 (Haswell-EP)
Terminal window
readlink -f /sys/class/nvme/nvme0/device
# .../pci0000:00/0000:00:01.1/0000:02:00.0

El SSD cuelga del root port 00:01.1líneas PCIe directas de la CPU, no del chipset. Eso es lo mejor que puede pasar: sin cuello de botella DMI y sin compartir líneas con nada.

3. El truco: la tabla DMI no muestra el M.2

Section titled “3. El truco: la tabla DMI no muestra el M.2”

dmidecode -t slot listó 7 slots PCIe físicos, pero ninguno con la dirección de bus 02:00.0 del SSD. Los slots onboard M.2 normalmente no aparecen en la tabla DMI. La conclusión sale de cruzar direcciones:

Slot DMIBusQué hay
Slot1 (x1)03:00.3— (bus 03 es la RTX 3060)
Slot6 (x16)01:00.0Vacío
Slot2–5, 7ff:00.xEntradas placeholder, no cableadas
NVMe02:00.0No está en la tabla → slot M.2 onboard

Script para listar todos los root ports y su estado:

Terminal window
for d in /sys/bus/pci/devices/0000:00:0{1,3}.* /sys/bus/pci/devices/0000:00:1c.*; do
[ "$(cat $d/class)" = "0x060400" ] || continue
echo "$(basename $d) max=$(cat $d/max_link_speed)x$(cat $d/max_link_width) \
cur=$(cat $d/current_link_speed)x$(cat $d/current_link_width)"
done

Resultado en esta placa:

PuertoLíneasDispositivo
00:01.0 (CPU)x4 Gen3 — vacíosegundo slot M.2 libre
00:01.1 (CPU)x4 Gen3Fanxiang S660 (M.2)
00:03.0 (CPU)x16 Gen3RTX 3060
00:1c.3 (chipset)x1 Gen2Realtek LAN onboard

5. Por qué el Optane H10 NO funciona aquí

Section titled “5. Por qué el Optane H10 NO funciona aquí”

El plan era instalar un Intel Optane H10 en el slot M.2 libre. No sirve, y el motivo no es la velocidad sino la bifurcación:

  • El H10 son dos dispositivos PCIe independientes en un solo stick M.2:
    • Caché Optane (32 GB) → x2 líneas
    • NAND QLC (base 660p) → x2 líneas
  • No trae switch PCIe: exige que el slot M.2 bifurque su x4 en x2+x2.
  • X99/Haswell-EP puede bifurcar x8 → x4+x4 (por eso existen los dos M.2), pero no puede partir un x4 en x2+x2, y el BIOS tampoco tiene soporte RST/H10.
  • Resultado al conectarlo: solo enumera una mitad del stick (normalmente la NAND QLC lenta, a x2). La otra mitad queda invisible.

¿Y aunque funcionara, el H10 es “más rápido”?

Section titled “¿Y aunque funcionara, el H10 es “más rápido”?”

No. El H10 es un NVMe, y de los mediocres:

MétricaOptane H10Fanxiang S660 (Gen3 x4)
Lectura secuencial~2.3 GB/s (limitado a x2)~3.5 GB/s
Escritura secuencial~1.3 GB/s (QLC)~3 GB/s
Latencia random (cache hit)⭐ ~10 µs~50–80 µs
Escritura sostenidacolapsa al agotar caché SLCmucho mejor

Su única gracia — latencia bajísima en lecturas random con cache hit — requiere Intel RST en plataforma soportada (300-series+), que X99 no es.

  1. lsblk -o TRAN + sysfs link_speed/width bastan para verificar NVMe real y su link negociado.
  2. Los slots M.2 onboard no salen en dmidecode -t slot — hay que cruzar direcciones de bus PCI.
  3. Esta X99 tiene 2 slots M.2 NVMe (x4 Gen3 CPU-direct cada uno), uno libre.
  4. El Optane H10 queda descartado: requiere bifurcación x2+x2 que la plataforma no soporta.
  5. Alternativa si se busca la latencia Optane: un módulo Optane puro (P1600X 58/118 GB, 800p) — es un solo dispositivo y funciona como NVMe normal en cualquier slot.