CentOS7のサーバにPCI-ExpressのUSB3インターフェイス追加(動作確認)

スポンサーリンク

今回CentOS7.9で動作確認できたUSBインターフェイスは、玄人志向の「USB3.1A-P2-PCIE3」と「USB3.0RA-P4-PCIE」で、どちらもすんなり認識して使えました。

玄人志向「USB3.1A-P2-PCIE3」は、コネクタがPCIe x4ですがGen3のx2接続の2ポートUSBインターフェイスで、チップは「ASMedia ASM3142」、実売価格が3000円ほどのロープロファイル対応カードです。

玄人志向「USB3.0RA-P4-PCIE」はPCIe Gen2 x1接続の4ポートUSBインターフェイスで、チップは「Renesus μPD720201」、実売価格が1700円ほどのお値打ちカードです。

確認した環境は以下で、装着したサーバはHPのDL360 G7です。

cat /etc/redhat-release

CentOS Linux release 7.9.2009 (Core)

uname -a

Linux 3.10.0-1160.24.1.el7.x86_64 #1 SMP Thu Apr 8 19:51:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

USB3.1A-P2-PCIE3

装着後は何もする必要はなく、そのまま使えます。

チップは「ASM3142」ですが、「ASM2142」で認識していました。

06:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller [1b21:2142]
Subsystem: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller [1b21:2142]
Kernel driver in use: xhci_hcd

デバイスの詳細

[root@aimix ~]# lspci -s 06:00 -vvv
06:00.0 USB controller: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller (prog-if 30 [XHCI])
        Subsystem: ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller
        Physical Slot: 1
        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-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 26
        Region 0: Memory at fbef0000 (64-bit, non-prefetchable) [size=32K]
        Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [68] MSI-X: Enable+ Count=8 Masked-
                Vector table: BAR=0 offset=00002000
                PBA: BAR=0 offset=00002080
        Capabilities: [78] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] Express (v2) Legacy Endpoint, MSI 00
                DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <2us
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 256 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 8GT/s, Width x2, ASPM L0s L1, Exit Latency L0s <2us, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s, Width x2, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR+, OBFF Not Supported
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
                LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UESvrt: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap- ChkEn-
        Capabilities: [200 v1] #19
        Capabilities: [300 v1] Latency Tolerance Reporting
                Max snoop latency: 0ns
                Max no snoop latency: 0ns
        Capabilities: [400 v1] L1 PM Substates
                L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
                          PortCommonModeRestoreTime=0us PortTPowerOnTime=10us
        Kernel driver in use: xhci_hcd

このカードはPCIe Gen3のx2接続ですが、装着したサーバのインターフェイスはGen2なので、dmesgを見ると制限されちゃってますよというメッセージが出ています。

[ 0.627147] pci 0000:06:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 5 GT/s x2 link at 0000:00:09.0 (capable of 15.752 Gb/s with 8 GT/s x2 link)

fioでのベンチマークです。

テストに使える高速なストレージがなかったので、1TBのHDD4台のRAID0ですが、WindowsのCrystalDiskInfoでの計測と近い結果でした。

[root@aimix test]# fio -filename=./test -direct=1 -rw=read -bs=1m -size=1G -numjobs=64 -runtime=10 -group_reporting -name=file1
file1: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
...
fio-3.7
Starting 64 processes
Jobs: 64 (f=64): [R(64)][100.0%][r=256MiB/s,w=0KiB/s][r=256,w=0 IOPS][eta 00m:00s]
file1: (groupid=0, jobs=64): err= 0: pid=21058: Thu May 20 13:33:58 2021
   read: IOPS=248, BW=249MiB/s (261MB/s)(2546MiB/10228msec)
    clat (msec): min=4, max=441, avg=254.89, stdev=27.58
     lat (msec): min=4, max=441, avg=254.89, stdev=27.58
    clat percentiles (msec):
     |  1.00th=[  184],  5.00th=[  228], 10.00th=[  257], 20.00th=[  257],
     | 30.00th=[  257], 40.00th=[  257], 50.00th=[  257], 60.00th=[  257],
     | 70.00th=[  257], 80.00th=[  257], 90.00th=[  257], 95.00th=[  257],
     | 99.00th=[  330], 99.50th=[  443], 99.90th=[  443], 99.95th=[  443],
     | 99.99th=[  443]
   bw (  KiB/s): min= 2043, max= 4096, per=1.56%, avg=3970.61, stdev=490.01, samples=1280
   iops        : min=    1, max=    4, avg= 3.81, stdev= 0.53, samples=1280
  lat (msec)   : 10=0.08%, 20=0.12%, 50=0.27%, 100=0.24%, 250=4.48%
  lat (msec)   : 500=94.82%
  cpu          : usr=0.00%, sys=0.05%, ctx=3077, majf=0, minf=18743
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=2546,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=249MiB/s (261MB/s), 249MiB/s-249MiB/s (261MB/s-261MB/s), io=2546MiB (2670MB), run=10228-10228msec

Disk stats (read/write):
  sdc: ios=5027/0, merge=0/0, ticks=960863/0, in_queue=969946, util=98.70%

USB3.0RA-P4-PCIE

こちらは「Renesus μPD720201」とちゃんと認識しています。

09:00.0 USB controller [0c03]: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller [1912:0014] (rev 03)
Kernel driver in use: xhci_hcd

デバイスの詳細表示

[root@aimix ~]# lspci -s 09:00 -vvv
09:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03) (prog-if 30 [XHCI])
        Physical Slot: 2
        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-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 35
        Region 0: Memory at fbff0000 (64-bit, non-prefetchable) [size=8K]
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [70] MSI: Enable- Count=1/8 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [90] MSI-X: Enable+ Count=8 Masked-
                Vector table: BAR=0 offset=00001000
                PBA: BAR=0 offset=00001080
        Capabilities: [a0] Express (v2) Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0.000W
                DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 128 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 unlimited
                        ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF Not Supported
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
                LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB
                LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
                         EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UESvrt: DLP- SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
        Capabilities: [150 v1] Latency Tolerance Reporting
                Max snoop latency: 0ns
                Max no snoop latency: 0ns
        Kernel driver in use: xhci_hcd

4ポートありますが、PCIe Gen2のx1接続なので片方向 4.0Gbps(500MB/s)が理論上の限界なため、最近の高速なストレージを接続すると頭打ちになるかもしれません。

新品が1600円~1700円ほどで購入できるので、とりあえず増設したい用途にはピッタリです。

HP DL360 G7への装着

PCI-Expressカードはライザーのスロットに装着してから本体へ取り付けます。

電源はエアバッフルを外した箇所に6ピンがあり、PC用と同じく爪側がマイナスで、反対側が+12Vです。

ただし、このコネクタはエアバッフルを装着すると隠れてしまう位置にあるため、ケーブルを通すためエアバッフルを削る必要があります。

その横に10ピンがあり「EXT PCI PWR」と記載されています。
こちらも中央の6ピンは爪側がマイナスで反対側が+12Vですが、両端は異なるようなのでアクセスパネルを外したまま起動してテスターで確認した方が良いです。

DL580の例はhpeのコミュニティで掲載されている方がいました。

https://community.hpe.com/t5/ProLiant-Servers-ML-DL-SL/Pinout-for-DL580-10pin-PCIe-Power-Cable/td-p/6992186

ライザーへ取り付けます。

フルハイトの方はフルレングスでPCIe x16、ロープロファイルの方はハーフレングスでPCIe x8のカードが装着でき、どちらもGen2です。

ライザーを本体に装着するとこんな感じです。

サーバーにお値打ちカードを装着する人はあまりいないと思いますが、故障の少ない部類のパーツなので、そこそこの能力で動いてくれれば良いかなと思います。

Comment

タイトルとURLをコピーしました