Я провожу некоторые испытания на своем сервере и хочу уменьшить ширину своего устройства PCIe (или его моста PCIe).
В случае, если это актуально, я выяснил, как снизить свою скорость на основе спецификации PCI с помощью setpci Linux и изменения «Target Link Speed» в регистре Link Control 2. Это позволяет мне упасть с 8 ГТ / с до 5 ГТ / с или даже 2,5 ГТ / с.
Вот пример того, как это работает:
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?
Я знаю, что материал может обучаться / инициализироваться для более низкой ширины, если у него есть проблемы. Так, может быть, я смогу ввести ошибки в определенную полосу и заставить ее обойти полосу?