1、 通过命令“lspci -vvv |grep “Non-Volatile””查询被测PCIE SSD NVMe卡是否被识别到
#lspci -vvv |grep “Non-Volatile”
2、通过lspci查询命令lspci -s 85:00.0 -vvvxxx |grep “Speed”(85:0.0为ID号),查询PCIE SSD NVMe卡的最大速率和link协商速率是否正确
#lspci -s 85:00.0 -vvvxxx |grep “Speed”
3、执行以下命令,通知操作系统对此设备下电。以下命令中的“slot”为设备实际在服务器中的槽位号。echo0>/sys/bus/pci/slots/slot”为设备实际在服务器中的槽位号。 echo 0 > /sys/bus/pci/slots/slot”为设备实际在服务器中的槽位号。echo0>/sys/bus/pci/slots/slot/power
$slot是采用lspci –vvv –ns 85:00.0 |grep Phy 命令查出来的Physical Slot number;
4.在30s后,再将被测PCIe硬盘插回先前的槽位,查询被测NVME硬盘端口速率协商是否正常。重复步骤2。
PS:Linux PCIE相关知识总结
1.首先我们先來复习一下 PCI-E bus 的速度上限.
• PCI Express 1.1
使用两对低电压的差位讯号排线(low-voltage differential signaling pairs),分別各跑 2.5GBit/s 速度,x1 有两对(传送与接收) 2.5 G x 2 = 5Gbps 的频宽.不过在讨论频宽时还是以单方向来计算.下面的速度是以单对的速度而言.
x1 2.5Gbps (20% overhead – PCI-e 在每八个位元的资料串上用十位元來加以编码) 2Gbps (250 MB/sec)
x4 10Gbps 8Gbps (1 GB/sec)
x8 20Gbps 16Gbps (2GB/sec)
x16 40Gbps 32Gbps (4GB/sec)
• PCI Express 2.0
PCI-SIG 的 PCI Express 2.0规格,新版每条 Lane 的单向频宽 2.5Gbps 倍增到 5Gbps.
x1 5Gbps (20% overhead – PCI-e 并且在每八个位元的资料串上用十位元來加以编码) 4Gbps (500 MB/sec)
(5G*0.8)Mb/8=500MB
x4 20Gbps 16Gbps (2 GB/sec)
x8 40Gbps 32Gbps (4 GB/sec)
x16 80Gbps 64Gbps (8 GB/sec)
• PCI Express 3.0
PCI-SIG 的 PCI Express 3.0 规格,新版每条 Lane 的单向频宽增到 8Gbps.
但因為编码方式改变了,相对于 2.0 之前采用 8b/10b (每10个bit只有8个是有效资料)而 3.0 编码方式为 128/130,所以资料传输频宽以及原始传输率基本当都可以算成 8Gbps.
x1 8Gbps (1GB/sec)
x4 32Gbps (4 GB/sec)
x8 64Gbps (8 GB/sec)
x16 128Gbps (16 GB/sec)
2.在 PCI 的裝置使用三个编号用來当做识别值,分别为
a.汇流排(bus number), b.装置 (device number) c. 功能(function number).(例如刚刚的 85:00.0 就是 bus number = 85 ,device number = 00 function = 0 )
这3个编号会组成 16-bits 的識別碼.
a. 汇流排(bus number) 8bits 2^8 至多可链接 256 个汇流排(0 to ff).
b. 装置(device number) 5bits 2^5 至多可接 32 种裝置(0 to 1f).
c. 功能(function number) 3bits 2^3 至多每种裝置可有 8 项功能(0 to 7).
3.
LnkSta :
目前系统所提供的速度 PCI-Express 1.0 ( 2.5G ) ,如果是 PCI-Express 2.0 那速度是 5G
LnkCap :
裝置目前所采用的速度.
LnkSta 和 LnkCap 这两个速度有可能不一樣 ,系統所提供的是 PCI Express 是 2.0 但裝置还是使用 1.0 的.