Блог дилетанта широкого профиля

Как я преодолевал ограничения Ryzen'а

07 января 2022 года

Домашний компьютер у меня построен на базе процессора AMD Ryzen 7 PRO 2700 и мат. платы на чипсете AMD B450. В мат. плату подключены два SATA3 SSD, которые, в свою очередь, собраны в RAID1 средствами ОС. И, до недавнего времени, эта, на первый взгляд, весьма производительная конфигурация, умудрялась безбожно "лагать" при некотором стечении обстоятельств.

Типичный пример: начинаешь качать что-то массивное с интернета (торрент поставил на закачку), а у тебя графический интерфейс теряет отзывчивость и начинает "залипать". Запускаешь какой-нибудь GVim (или даже Vim в консоли), а он виснет. Открываешь файловый браузер, и он тоже виснет… А если захочешь что-нибудь посмотреть с флешки, то у тебя есть шанс окончательно "повесить" машину, но только если эта флешка будет воткнута в определённый разъём. Не каждый разъём USB позволяет завесить машину наглухо, однако.

Странное описание проблемы? Странное. Спору нет. Но, на самом деле, я такое уже видел. Когда coreboot осваивал и игрался с системами на базе Sandy Bridge. Я тогда методом научного тыка пытался выработать лучшие варианты "намазывания" прерываний на PCI-мосты и устройства. И симптомы, перечисленные мною выше, это не проявление известного бага #12309. Нет. Это просто "ширины" PCIe не хватило, чтобы все устройства на отдельные линии посадить. Или на PCI-мост назначали прерывания, как на устройство, а не как на мост, собственно. А может сразу и то, и другое.

Проверим? lspci выглядит так:

-[0000:00]-+-00.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Root Complex
           +-00.2  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) I/O Memory Management Unit
           +-01.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-01.3-[01-07]--+-00.0  Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller
           |               +-00.1  Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller
           |               \-00.2-[02-07]--+-00.0-[03]--
           |                               +-04.0-[04]--
           |                               +-05.0-[05]--
           |                               +-06.0-[06]--
           |                               \-07.0-[07]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           +-02.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-03.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-03.1-[08]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Lexa XT [Radeon PRO WX 3200]
           |            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]
           +-04.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-07.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-07.1-[09]--+-00.0  Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function
           |            +-00.2  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor
           |            \-00.3  Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller
           +-08.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-08.1-[0a]--+-00.0  Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function
           |            +-00.2  Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
           |            \-00.3  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller
           +-14.0  Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller
           +-14.3  Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge
           +-18.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0
           +-18.1  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1
           +-18.2  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2
           +-18.3  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3
           +-18.4  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4
           +-18.5  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5
           +-18.6  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6
           \-18.7  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7

Что мы тут видим? А я был прав! Все проблемные устройства: SATA-контроллер, сетевой контроллер и проблемный контроллер USB, все они расположены за одним PCI-мостом (на листинге выделен красным цветом)! И мост этот, похоже, — чипсет материнской платы. А что там ещё за пустые порты? Это, друзья мои, порты PCI-e! Такие дела. Все порты, доступные пользователю, за исключением M2 и PCIe x16, подключены через PCI-мост чипсета. Которого не хватает уже изначально, даже на встроенные в чипсет устройства.

Очень хорошо, что мне удалось найти описание микроархитектуры Zen перед тем, как начал втыкать контроллеры в штатные разъёмы расширения. Это могло закончится разочарованием. Вместо этого я заказал… сами знаете где… контроллер SATA под разъём M2. Новый листинг lspci (установленный контроллер выделен зелёным цветом, чипсет, по-прежнему, — красным):

-[0000:00]-+-00.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Root Complex
           +-00.2  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) I/O Memory Management Unit
           +-01.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-01.1-[01]----00.0  JMicron Technology Corp. JMB58x AHCI SATA controller
           +-01.3-[02-08]--+-00.0  Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller
           |               \-00.2-[03-08]--+-00.0-[04]--
           |                               +-04.0-[05]--
           |                               +-05.0-[06]--
           |                               +-06.0-[07]--
           |                               \-07.0-[08]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
           +-02.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-03.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-03.1-[09]--+-00.0  Advanced Micro Devices, Inc. [AMD/ATI] Lexa XT [Radeon PRO WX 3200]
           |            \-00.1  Advanced Micro Devices, Inc. [AMD/ATI] Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]
           +-04.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-07.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-07.1-[0a]--+-00.0  Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function
           |            +-00.2  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor
           |            \-00.3  Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller
           +-08.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
           +-08.1-[0b]--+-00.0  Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function
           |            \-00.3  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller
           +-14.0  Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller
           +-14.3  Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge
           +-18.0  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0
           +-18.1  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1
           +-18.2  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2
           +-18.3  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3
           +-18.4  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4
           +-18.5  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5
           +-18.6  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6
           \-18.7  Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7

И да, баг больше не проявляется. Вынос SATA контроллера "ближе" к процессору решил проблему. Ну а подключения между мостом и процессором вполне хватает для оставшихся USB-контроллера (я с него использую только usb 2.0) и гигабитной сети.

А к чему эта заметка, собственно? А к тому, что долго я понять не мог, отчего же так рванули цены вверх на серверное железо. Теперь же понял: всё выше описанное мною — это не следствие просчётов в проектировании набора системной логики. Нет. Это сознательное "закручивание гаек". Ведь ещё совсем недавно, простенький сервачок под сайт легко мог быть построен на обычной потребительской компонентной базе, и её "за глаза" бы хватило. Если удастся ещё и память ECC’шную поставить, то и, считай, больше ничего и не надо. А теперь нет. Современная компонентная база ограничивает пользователя возможностью установить в свой компьютер только видеокарту и один M2-накопитель. Хочешь чего-то большего? Покупай железку за в разы большие деньги!

Ты чем-то недоволен? Зачем тебе что-то другое, когда мы тебе, в твою материнскую плату, вставили такую красивую подсветку? И в BIOS’е крутилка есть, которая тебе делает разгон. Что? ЛГБТ-подсветка не радует тебя?! Ты не испытываешь радости от роста производительности на 1% от разгона, и считаешь, что это не стоит того, чтобы убивать память и процессор?! Да что ты за человек-то такой?

Ну а если серьёзно, то мы всё ждали, когда же энергоэффективные архитектуры, типа того же ARM’а, догонят по возможностям ввода-вывода монстра x86. А случилось обратное: потребительский x86 растерял свои преимущества, притом, похоже, исключительно из соображений маркетинга и экономии.

Выбор заметок по дате