Linux下查看顯卡PCIE速率x16x8x4
由于linux軟件并不是很齊全所以查看顯卡占用PCIE的帶寬并不直觀,所以本文介紹如何查看。
Windows下使用GPU-Z即可查看
Linux
-
確定當前顯卡型號
lspci | grep NVIDIA
返回
02:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)
可以看出顯卡型號為 GeForce GTX 960M
-
通過 lspci 指令查看:
sudo lspci -vv
在返回的結果信息中找到與自己顯卡相同的型號,如下:
02:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)Subsystem: Dell GM107M [GeForce GTX 960M]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: 0Interrupt: pin A routed to IRQ 131Region 0: Memory at de000000 (32-bit, non-prefetchable) [size=16M]Region 1: Memory at c0000000 (64-bit, prefetchable) [size=256M]Region 3: Memory at d0000000 (64-bit, prefetchable) [size=32M]Region 5: I/O ports at e000 [size=128][virtual] Expansion ROM at df000000 [disabled] [size=512K]Capabilities: [60] Power Management version 3Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+Address: 00000000fee00338 Data: 0000Capabilities: [78] Express (v2) Endpoint, MSI 00DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 <64usExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 75.000WDevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+MaxPayload 256 bytes, MaxReadReq 512 bytesDevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-LnkCap: Port #1, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <512ns, L1 unlimitedClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
主要信息是其中的 LnkCap 為顯卡理論的傳輸速率上限,LnkSta為顯卡當前實際的傳輸速率,切記 LnkSta的值是會發生變化的,這是因為英偉達的顯卡會根據實際使用情況進行自動切換。
-
計算帶寬
首先強調幾個概念:
- 傳輸速率為每秒傳輸量GT/s,而不是每秒位數Gbps,因為傳輸量包括不提供額外吞吐量的開銷位; 比如 PCIe 1.x和PCIe 2.x使用8b / 10b編碼方案,導致占用了20% (= 2/10)的原始信道帶寬。
- GT/s —— Giga transation per second (千兆傳輸/秒),即每一秒內傳輸的次數。重點在于描述物理層通信協議的速率屬性,可以不和鏈路寬度等關聯。
- Gbps —— Giga Bits Per Second (千兆位/秒)。GT/s 與Gbps 之間不存在成比例的換算關系。
PCIe 吞吐量(可用帶寬)計算方法:
吞吐量 = 傳輸速率 * 編碼方案
在計算之前需要知道 編碼方案,大家可以查表,如下:
所以我們根據圖中可以看出GTX 960M理論支持PCIE3.0,所以PCIE3.0每一條Lane支持:
8 * 128 / 130 = 7.8769Gbps = 984.6MB/s
所以理論上顯卡是支持PCIE3.0 X16的,并且總帶寬為:15.8 GB/s。
但是LnkSta值也就是實際值為2.5GT/s,那就是PCIE1.0,并且只使用了8根PCIE通道,說明沒有跑滿,即PCIE1.0 X8。
-
修改顯卡設置,使其達到最大帶寬
打開NVIDIA設置,可以通過快捷方式打開,也可以通過命令行:
nvidia-setting
找到 PowerMizer選項
然后調節Preferred Mode(優先級模式)為 Prefer Maximum Performance。
-
此時再此執行
sudo lspci -vv
LnkCap: Port #1, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <4usClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-LnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
可以看出 LnkSta 已經變化,這是此顯卡在本PC上發揮的最大帶寬,PCIE3.0 X8。