¿Forzar la renegociación de la velocidad de enlace PCI Express? la tarjeta x2 vuelve al ancho x1

15

En un esfuerzo por sortear la compatibilidad y las barreras de costos para usar unidades SSD con los nuevos servidores HP ProLiant Gen8, estoy trabajando para validar SSD basados ​​en PCIe en la plataforma. He estado experimentando con un producto interesante de Other World Computing llamado Accelsior E2 .

ingrese la descripción de la imagen aquí

Este es un diseño básico; una tarjeta PCIe con un controlador RAID SATA Marvell de 6 Gbps y dos "blades" SSD conectados a la tarjeta. Estos pueden transferirse al sistema operativo para RAID de software ( ZFS , por ejemplo) o aprovecharse como una banda RAID0 de hardware o un par duplicado RAID1. Hábil. Realmente es solo compactar un controlador y discos en un factor de forma realmente pequeño.

El problema:

Mira ese conector PCIe. Esa es una interfaz PCie x2 . Los tamaños de ranura / carril PCIe físicos suelen ser x1, x4, x8 y x16 , y las conexiones eléctricas suelen ser x1, x4, x8 y x16. Esta bien. He usado tarjetas x1 en servidores antes.

Comencé a probar el rendimiento de esta tarjeta en un sistema arrancado y descubrí que las velocidades de lectura / escritura se aceleraban a ~ 410 MB / s, independientemente de la configuración del servidor / ranura / BIOS. Los servidores en uso fueron los sistemas HP ProLiant G6, G7 y Gen8 (Nehalem, Westmere y Sandy Bridge) con ranuras PCIe x4 y x8. Al observar el BIOS de la tarjeta, se mostró que el dispositivo negoció: PCIe 2.0 5.0Gbps x1- Por lo tanto, solo está utilizando un carril PCIe en lugar de dos, por lo que solo está disponible la mitad del ancho de banda anunciado.

¿Hay alguna forma de obligar a un dispositivo PCIe a funcionar a una velocidad diferente?

Mi investigación muestra que PCIe x2 es un poco ancho de carril extraño ... El estándar PCI Express aparentemente no requiere compatibilidad con anchos de carril x2 , así que supongo que los controladores de mis servidores están volviendo a x1 ... Tengo algún recurso?


lspci -vvvSalida abreviada . Tenga en cuenta la diferencia entre las líneas LnkStay LnkCap.

05:00.0 SATA controller: Marvell Technology Group Ltd. Device 9230 (rev 10) (prog-if 01 [AHCI 1.0])
        Subsystem: Marvell Technology Group Ltd. Device 9230
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 5GT/s, Width x2, ASPM L0s L1, Latency L0 <512ns, L1 <64us
                        ClockPM- Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
        Kernel driver in use: ahci
        Kernel modules: ahci
ewwhite
fuente
Supongo que está poniendo la tarjeta en una ranura x4, ¿verdad? En cualquier caso, no estoy seguro de cómo manejará HP la tarjeta x2. En una ranura x4, debería poder usar ambos carriles pero, como mencionó, no hay garantía de que tenga que usarlo. Dicho todo esto, no estoy seguro de cuánto aumento de rendimiento podría ver, ya que el SATA de 6 gbs todavía se considera limitado a un máximo de 4.8 gb / s con la sobrecarga de codificación con un solo carril PCIe que tiene un rendimiento máximo de 5 gbs.
Rex
Se probaron @Rex "ranuras PCIe x4 y x8" . La tarjeta tiene dos SSD SATA discretos de 6 Gbps integrados, por lo que hay un aumento de velocidad disponible una vez / si se negocia PCIe x2.
ewwhite
Ah ... perdí las ranuras x4 / x8 en la pregunta, pero usted dice "tarjeta PCIe con un controlador RAID SATA Marvell 6Gbps", lo que implica un solo controlador :) Si tiene dos controladores discretos, ¿cada SSD está conectado a su propio controlador? Entonces, ¿cómo puede hacer RAID de hardware en los dos controladores diferentes?
Rex
@Rex Hay dos SSD conectados a un controlador. Un controlador RAID de 6 Gbps tiene un ancho de banda de 6 Gbps por línea SAS / SATA.
Ewwhite
La especificación PCIe no requiere que las ranuras admitan nada excepto 1x. Cuando se inserta una tarjeta, el host la solicita para obtener soporte de carril, y cualquiera que sea la potencia más alta de las dos que se utilizan (por lo tanto, 1x, 2x, 4x, 8x, 16x o 32x). Además, cada carril en un punto final (host o tarjeta) puede admitir la negociación inicial, pero generalmente solo el primer carril lo hace (cuando los carriles adicionales admiten la negociación, la ranura será capaz de bifurcarse, conectando más de una tarjeta mediante el uso de un divisor ) Como se indica a continuación, los servidores en cuestión no admiten el modo de carril 2x.
Chris S

Respuestas:

6

Esa es la respuesta oficial de OWS, ahora otra respuesta si es posible forzar al controlador hp a subirlo a un ancho de x2, que requerirá más investigación. -)

ingrese la descripción de la imagen aquí

Danila Ladner
fuente
Pero la tarjeta está en un ProLiant G6 en este momento -Manufacturer: HP Product Name: ProLiant DL180 G6
ewwhite
Correcto, probablemente todos los controladores pci Proliant DL tendrán problemas con la tarjeta.
Danila Ladner
¡Mírate, yendo a la fuente !
ewwhite
También en Gen7, Gen8 para la primera ranura en pcie riser siempre obtendrá 1x: 1 PCIe 2.0 X1 X4 Media longitud / Altura completa desde aquí: h18000.www1.hp.com/products/quickspecs/14339_na/14339_na.pdf Supongo que lo intentó diferentes tragamonedas
Danila Ladner
2

Intenté esto nuevamente en una plataforma HP ligeramente diferente, la HP ProLiant DL380p Gen8 de 2U versus la 1U DL360p Gen8. Recibí los resultados adecuados con esta combinación de hardware.

El firmware actual del host Gen8 ahora permite que los enlaces PCIe se negocien a las velocidades adecuadas, por lo que estos dispositivos SON compatibles con los servidores ProLiant DL380p Gen8.

Speed 5GT/s, Width x2, ASPM L0s L1, Latency L0 <512ns, L1 <64us
LnkSta: Speed 5GT/s, Width x2, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
ewwhite
fuente
0

Tengo a mano un servidor IBM con una tarjeta Broadcom 4 × 1GbE en él ... negociado de 2.0x4 a 2.0x2:

0b:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 
Subsystem: IBM Device 03a9 
Capabilities: [ac] Express (v2) Endpoint, MSI 00
LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM L0s L1, Latency L0 <2us, L1 <2us 
LnkSta: Speed 5GT/s, Width x2, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

Tenía un conector x4, que estoy adivinando solamente se utiliza plenamente cuando se ponen en una ranura PCIe v1, por lo que parece que está negociando hasta x2 cuando se utiliza en una ranura PCIe v2 (ya 5GT / s bidireccional es suficiente para 4 × 1 GbE )

¿Podría estar sucediendo lo mismo con su tarjeta?

(Si no, mi respuesta es: use IBM en lugar de HP: P)

MikeyB
fuente
1
¡No IBM! Nunca;)
ewwhite