setpci调整PCIe设备Max Payload和MaxPayload Request方法
-
通过setpci设置Maxpayload由原来512调整为256
setpci -s 41:00.0 60.B=3F
执行完上述命令设备消失需要在/sys/devices/pci0000;40/0000:40.1.2/目录,执行echo 1 > rescan,重新扫描设备便可以识别
设置后重新测试nvme顺序读性能由原来的4500MB/s可以提升到4900MB/s,虽有提升但仍不达标 -
通过setpci查询Maxpayload方法
lspci -vvs查询Capabilities基址,0xXX的位置对应的capability id为0x10然后offset+8,
例如基址是58则读取setpci -s 40:03.1 0x60.W,得到2937,转换一下7:5bit值为001,对应256bytes
Device Control Register
setpci --dumpregs可以查看寄存器偏移
setpci -s 40:03.1 CAP_EXP+08.W=0x2957 / setpci -s 40:03.1 60.W=0x2957 调整Payload为512bytes -
调整Maxpayload Request
-
查询现在设置 setpci -s 41:00.0 58.W
-
修改第一位数值 0 - 128B、1 - 256B、2 - 512B、3 - 1024B、4 - 2048B 和 5 - 4096B
-
再次查询现在配置情况,确认配置成功 lspci -vvs 41:00.0