Forçar a renegociação da velocidade do link PCI Express? o cartão x2 reverte para a largura x1

15

Em um esforço para contornar as barreiras de compatibilidade e custo ao uso de unidades SSD com servidores HP ProLiant Gen8 mais recentes, estou trabalhando para validar SSDs baseados em PCIe na plataforma. Eu tenho experimentado um produto interessante da Other World Computing chamado Accelsior E2 .

insira a descrição da imagem aqui

Este é um design básico; uma placa PCIe com um controlador SATA RAID Marvell de 6 Gbps e dois "blades" SSD conectados à placa. Eles podem ser passados ​​para o SO para RAID de software ( ZFS , por exemplo) ou alavancados como uma faixa RAID0 de hardware ou par espelhado RAID1. Bacana. É realmente apenas compactar um controlador e discos em um formato realmente pequeno.

O problema:

Olhe para esse conector PCIe. Essa é uma interface PCie x2 . Os tamanhos físicos de slots / faixas PCIe são tipicamente x1, x4, x8 e x16 , com as conexões elétricas geralmente sendo x1, x4, x8 e x16. Isso é bom. Eu usei cartões x1 em servidores antes.

Comecei a testar o desempenho desta placa em um sistema inicializado e descobri que as velocidades de leitura / gravação eram limitadas a ~ 410 MB / s, independentemente da configuração do servidor / slot / BIOS. Os servidores em uso foram os sistemas HP ProLiant G6, G7 e Gen8 (Nehalem, Westmere e Sandy Bridge) com slots PCIe x4 e x8. Observar o BIOS da placa mostrou que o dispositivo negociava: PCIe 2.0 5.0Gbps x1- Portanto, ele usa apenas uma pista PCIe em vez de duas, portanto, apenas metade da largura de banda anunciada está disponível.

Existe alguma maneira de forçar um dispositivo PCIe a funcionar em uma velocidade diferente?

Minha pesquisa mostra que o PCIe x2 tem uma largura de faixa ímpar ... O padrão PCI Express aparentemente não requer compatibilidade com as larguras de faixa x2 , portanto, meu palpite é que os controladores nos meus servidores estão voltando para x1 ... Eu tenho algum recurso?


lspci -vvvSaída abreviada . Observe a diferença entre as linhas LnkStae 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
fonte
Estou assumindo que você está colocando o cartão em um slot x4, certo? De qualquer forma, não tenho certeza de como a HP manipulará a placa x2. Em um slot x4, ele deve poder usar as duas faixas, mas, como você mencionou, não há garantia de que ele seja usado. Tudo o que foi dito, não tenho certeza de quanto aumento de desempenho você pode ver, já que o SATA de 6 gbs ainda é geralmente visto como limitado a um máximo de 4,8 gb / s com a sobrecarga de codificação com uma única pista PCIe com uma taxa de transferência máximo de 5gbs.
Rex
@Rex "slots PCIe x4 e x8" foram testados. A placa possui dois SSDs SATA de 6 Gbps discretos a bordo, portanto, há um aumento de velocidade disponível uma vez / se o PCIe x2 for negociado.
ewwhite
Ah .. perdeu os slots x4 / x8 da questão, mas você diz "Placa PCIe com um controlador Marvell de 6Gbps SATA RAID" implicando um único controlador :) Se houver dois controladores distintos, cada SSD está conectado a seu próprio controlador? Então, como ele pode executar o RAID de hardware nos dois controladores diferentes?
Rex
@Rex Existem dois SSDs conectados a um controlador. Um controlador RAID de 6 Gbps tem largura de banda de 6 Gbps por pista SAS / SATA.
ewwhite
A especificação PCIe não exige que os slots suportem nada, exceto 1x. Quando um cartão é inserido, o host o consulta para obter suporte à faixa e seja qual for a potência mais alta de dois que ambos suportam (portanto, 1x, 2x, 4x, 8x, 16x ou 32x). Além disso, cada faixa em um nó de extremidade (host ou cartão) pode suportar a negociação inicial, mas normalmente apenas a primeira faixa suporta (quando faixas adicionais suportam a negociação, o slot pode ser bifurcado, conectando mais de uma placa através do uso de um divisor ) Conforme observado abaixo, os servidores em questão não oferecem suporte ao modo de pista 2x.
Chris S

Respostas:

6

Essa é a resposta oficial da OWS, agora outra resposta, se for possível forçar o hp controller a subir até a largura x2, que exigirá mais pesquisas. -)

insira a descrição da imagem aqui

Danila Ladner
fonte
Mas o cartão está em um ProLiant G6 no momento -Manufacturer: HP Product Name: ProLiant DL180 G6
ewwhite
Certo, provavelmente todos os controladores Proliant DL pci terão problemas com o cartão.
Danila Ladner #
Olhe para você, indo para a fonte !!
ewwhite
Também na Gen7, a Gen8 para o primeiro slot no pcie riser sempre terá 1x: 1 PCIe 2.0 X1 X4 de meio comprimento / altura total a partir daqui: h18000.www1.hp.com/products/quickspecs/14339_na/14339_na.pdf Suponho que você tentou slots diferentes.
Danila Ladner #
2

Tentei novamente em uma plataforma HP ligeiramente diferente, a 2U HP ProLiant DL380p Gen8 versus a 1U DL360p Gen8. Recebi os resultados adequados usando essa combinação de hardware.

O firmware atual do host Gen8 agora permite que os links PCIe negociem nas velocidades adequadas, para que esses dispositivos sejam compatíveis com os 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
fonte
0

Tenho em mãos um servidor IBM com uma placa Broadcom 4 × 1GbE ... negociado de 2,0x4 para 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-

Tinha um conector x4 que eu estou supondo que só é plenamente utilizado quando colocado em um slot PCIe v1, por isso parece que ele está negociando para baixo para x2 quando usado em um slot PCIe v2 (desde 5GT / s bidirecional é suficiente para 4 × 1GbE )

O mesmo pode estar acontecendo com seu cartão?

(Caso contrário, minha resposta é: use IBM em vez de HP: P)

MikeyB
fonte
1
No IBM !!! Nunca;)
ewwhite