Могу ли я намеренно отключить линии PCIe? Или уменьшить ширину PCIe?
Я провожу некоторое тестирование на своем сервере и хочу уменьшить ширину моего устройства PCIe (или его моста PCIe).
В случае, если это уместно, я выяснил, как снизить свою скорость на основе спецификации PCI с помощью setpci Linux и изменив "Target Link Speed" регистра Link Control 2. Это позволяет мне снижаться с 8GT/s до 5GT/s или даже 2.5GT/s.
Вот пример этой работы:
Server:~ # setpci -s 83:04.0 98.w=1:ff
Server:~ # setpci -s 83:04.0 78.w=20:20
Server:~ # ./check_speed_width
84:00.0 has reported reduced PCIe speed: 2.5GT/s instead of 8GT/s
bridge device 83:04.0 has reported reduced PCIe speed: 2.5GT/s instead of 8GT/s
Server:~ # setpci -s 83:04.0 98.w=2:ff
Server:~ # setpci -s 83:04.0 78.w=20:20
Server:~ # ./check_speed_width
84:00.0 has reported reduced PCIe speed: 5GT/s instead of 8GT/s
bridge device 83:04.0 has reported reduced PCIe speed: 5GT/s instead of 8GT/s
Вот некоторые из моих идей по уменьшению ширины:
Может я просто пропустил доступный для записи регистр? Target Link Speed - это регистр с возможностями чтения и записи. Когда дело доходит до регистров ширины, я вижу только регистры только для чтения, перечисленные в спецификации PCI.
Может быть, есть способ отключить некоторые линии отдельно от спецификации PCIe?
Я знаю, что материал может тренироваться / инициализироваться для уменьшения ширины, если возникают проблемы. Так, может быть, я могу ввести ошибки в конкретную полосу и заставить ее отбросить полосу?