UAS USB - USB3.0-SATA SSD reduz a taxa de transferência de taxa de transferência após reconectar

0

Estou trabalhando com um gabinete USB3.0-SATA, com um chipset JMS567, conectado a um SSD da Kingston. O controlador de host USB é um DWC Superspeed USB3.0 com PHY associado e o sistema host é uma porta 4.4 do kernel baseada em MIPS em um ambiente de buildroot. Quando conectado, o SSD é detectado como um dispositivo UAS, conforme abaixo:

[    5.220000] usb 4-1: new SuperSpeed USB device number 2 using xhci-hcd
[    5.247000] scsi host0: uas
[    5.251000] scsi 0:0:0:0: Direct-Access     KINGSTON  SV300S37A60G    9103 PQ: 0 ANSI: 6
[    5.260000] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    5.266000] sd 0:0:0:0: [sda] 117231408 512-byte logical blocks: (60.0 GB/55.9 GiB)
[    5.273000] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    5.279000] sd 0:0:0:0: [sda] Write Protect is off
[    5.285000] sd 0:0:0:0: [sda] Disabling FUA
[    5.289000] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    5.779000] sd 0:0:0:0: [sda] Attached SCSI disk

Após a inicialização ou conexão com o primeiro dispositivo, o throughput de gravação para SSD é de aproximadamente 350MB / s. No entanto, quando o dispositivo é reconectado (fisicamente ou via sysfs), a taxa de transferência é reduzida de forma consistente em cerca de 10%. Isso continua sendo o caso através de reconexões subsequentes, até que uma reinicialização seja realizada.

É possível que o dispositivo use o driver de armazenamento usb mais antigo em vez do UAS, colocando-o na lista negra artificialmente. Neste caso, o dispositivo é detectado como abaixo quando conectado:

[ 2214.653000] usb 4-1: new SuperSpeed USB device number 4 using xhci-hcd
[ 2214.671000] usb 4-1: UAS is blacklisted for this device, using usb-storage instead
[ 2214.679000] usb 4-1: UAS is blacklisted for this device, using usb-storage instead
[ 2214.686000] usb-storage 4-1:1.0: USB Mass Storage device detected
[ 2214.693000] usb-storage 4-1:1.0: Quirks match for vid 152d pid 0567: 800000
[ 2214.700000] scsi host2: usb-storage 4-1:1.0
[ 2215.706000] scsi 2:0:0:0: Direct-Access     KINGSTON  SV300S37A60G    9103 PQ: 0 ANSI: 6
[ 2215.715000] sd 2:0:0:0: Attached scsi generic sg0 type 0
[ 2215.721000] sd 2:0:0:0: [sda] 117231408 512-byte logical blocks: (60.0 GB/55.9 GiB)
[ 2215.729000] sd 2:0:0:0: [sda] Write Protect is off
[ 2215.734000] sd 2:0:0:0: [sda] No Caching mode page found
[ 2215.740000] sd 2:0:0:0: [sda] Assuming drive cache: write through
[ 2216.226000] sd 2:0:0:0: [sda] Attached SCSI disk

Nesse caso, a taxa de transferência de gravação é menor do que com o UAS (como poderíamos esperar) em torno de 260 MB / s, mas permanece consistente em todas as reconexões de dispositivos.

Reuni alguns rastreios usbmon para os casos de rendimento "bons" e "ruins". A partir disso, parece que o perfil de tráfego é praticamente o mesmo, mas "esticado" no caso de taxa de transferência reduzida. Ou seja, a questão parece estar no nível dos URBs / transações que levam mais tempo do que antes.

Alguma idéia sobre o que poderia estar por trás desse comportamento quando a reconexão ocorre no modo UAS? Ideias sobre mais debug também são muito apreciadas.

    
por E03bf085 31.05.2018 / 09:38

0 respostas