- AMD Ryzen 5 3400G Is Working Well On Linux
- Ryzen
- Tweaking Ryzen
- Voltage, power and temperature monitoring
- Power management, undervolting and overclocking
- Compiling a kernel
- Troubleshooting
- Random reboots
- Screen-tearing (APU)
- Soft lock freezing
- Freeze on shutdown, reboot and suspend
- Насколько хорошая поддержка Ryzen в Linux
AMD Ryzen 5 3400G Is Working Well On Linux
AMD Raven Ridge APUs were a rough launch particularly on Linux where even with the latest motherboard BIOS updates and Linux kernel I am still hitting occasional stability issues, so when the opportunity arose recently to try out the Ryzen 5 3400G as the successor in the Picasso family, I was interested. Fortunately, AMD Picasso APUs have proven to be in better shape on Linux so here is the initial round of performance tests for those interested in the AMD Linux performance on Ubuntu.
The Ryzen 5 3400G is a $150 USD APU and while launched alongside the new Zen 2 CPUs, the Ryzen 3000 series APUs are in fact based on Zen+ and using Vega graphics. The Ryzen 5 3400G features four cores / eight threads with a 3.7GHz base frequency and 4.2GHz turbo frequency. On the graphics side are Radeon RX Vega 11 graphics that clock up to 1.4GHz as a nice boost over the Ryzen 5 2400G. This AM4 APU has a 65 Watt TDP for this highest-performing Picasso socketed APU.
With Raven Ridge on Linux at launch it was a particularly bumpy experience with display/graphics issues. Those have improved over time but with some motherboards and BIOS updates paired with ongoing Linux kernel changes have at times yielded an experience like Russian roulette. In fact, with my motherboards and the Ryzen 3 2200G and Ryzen 5 2400G, even when using the very latest BIOS/firmware and the newest Linux software components, I wasn’t able to run all of the same tests for this article 100% stable. I still hit stability issues over time but was not as bad or frequent as it was last year.
To much pleasure, the Ryzen 5 3400G hasn’t caused me any grief in testing on Linux over the past few weeks. Even when using the same motherboards/firmware and Linux software components, this Picasso APU has behaved fine without any stability problems or other headaches. It’s a delight to see but frustrating that Raven Ridge was still buggy.
For this inaugural Linux testing article of the Ryzen 5 3400G, I ran a variety of CPU benchmarks following our recent Ryzen 5 3600X Linux benchmarks and then also some basic tests of the Radeon RX Vega 11 graphics of the 3400G. Additional Linux gaming/graphics tests of the Ryzen 5 3400G will be coming up soon now that Picasso has proven itself sane on Linux.
First up is a look at the processor performance for this Zen+ processor alongside various other AMD and Intel CPUs while testing from Ubuntu 19.04 with the Linux 5.3 kernel. All benchmarks via the Phoronix Test Suite.
Ryzen
Install the amd-ucode package to enable microcode updates and enable it with the help of the Microcode page. These updates provide bug fixes that can be critical to the stability of your system. It is highly recommended to use it despite it being proprietary.
Tweaking Ryzen
Voltage, power and temperature monitoring
lm_sensors should be able to monitor temperatures out of the box. However, for more detailed information such as power consumption and voltage, zenpower3-dkms AUR is needed. For GUI based monitoring tools, use zenmonitor AUR or zenmonitor3-git AUR for Zen 3 CPUs.
Power management, undervolting and overclocking
- RyzenAdj — RyzenAdj is a command-line tool that can adjust power management settings for Ryzen mobile processors.
- Ryzen Controller — Ryzen Controller is a GUI for RyzenAdj.
- amdctl — amdctl is a command-line tool for under/over clocking/volting AMD CPUs, currently supporting AMD CPU families 10h, 11h, 12h, 15h, 16h, 17h and 19h.
- ZenStates-Linux — ZenStates is a command-line tool to adjust the clock speed and voltage. A detailed setup example is given in Level1Techs forum.
Compiling a kernel
See Gentoo:Ryzen#Kernel on enabling Ryzen support. The officially supported kernels have the required configuration by default.
Troubleshooting
Random reboots
With Ryzen 5000 series, particularly the higher-end models of 5950X and 5900X there seem to be some slight instability issues under Linux, related possibly to the 5.11+ kernel, as shown by this kernel bug. After investigating and reading reports on the Internet, It seems that out of the box, Windows seems to run the CPUs at higher voltage and lower peak frequencies, compared to the stock linux kernel, which depending on your draw from the silicon lottery could cause a host of random application crashes or hardware errors that lead to reboots. You will recognise those by dmesg logs that look like:
kernel: mce: [Hardware Error]: Machine check events logged kernel: mce: [Hardware Error]: CPU 22: Machine Check: 0 Bank 1: bc800800060c0859 kernel: mce: [Hardware Error]: TSC 0 ADDR 7ea8f5b00 MISC d012000000000000 IPID 100b000000000 kernel: mce: [Hardware Error]: PROCESSOR 2:a20f10 TIME 1636645367 SOCKET 0 APIC d microcode a201016
The CPU ID and the Processor number may vary. To solve this problem you need to supply higher voltage to your CPU so that it is stable when running at peak frequencies. The easiest way to achieve this is to use the AMD curve optimiser which is accessible via your motherboard’s bios. Access it and put a positive offset of 4 points, which will increase the voltage your CPU is getting at higher loads. It will limit overclocking potential due to higher heat dissipation requirements, but it will run stable. For more details check this forum post. When I did this for my 5950X, my processor stabilised and the frequency and voltage ranges were more similar to those observed under windows.
Screen-tearing (APU)
If you are using Xorg and are experiencing screen-tearing, see AMDGPU#Tear free rendering.
Soft lock freezing
This bug is well known and is being discussed on bugzilla and launchpad. While the solution is not the same in all cases, this one helped some users. Add the output of this command echo rcu_nocbs=0-$(($(nproc)-1)) as a kernel parameter where the command nproc just prints your CPU’s threads. For this option to be applied, you need a compiled kernel with option CONFIG_RCU_NOCB_CPU (like linux ).
A different cause for the freezes is the power saving management indicated by c-states. The maximum power saving state c6 can cause problems. Adding the kernel parameter processor.max_cstate=5 helped in some cases but other users reported that the option is not applied and the c6 state is still entered. For them, this package disable-c6-systemd AUR helped. Before using it, modprobe msr needs to be run in order to activate that kernel module.
Some laptops with Ryzen CPUs such as the HP Envy x360 15-bq100na may experience CPU soft locks which result in a frozen system. These can be avoided with the kernel parameter idle=nomwait added.
In some cases, kernel parameter pci=nomsi fixes the issue.
In some other cases, the issue is simply bad hardware, and warranty claiming the CPU for a new one may just solve your issues.
Freeze on shutdown, reboot and suspend
This seems to be related to the C6 c-state, that does not seem to be well supported (if at all) in Linux.
To fix this issue, go into UEFI Setup and search for an option labelled something like this: «Power idle control». Change its value to «Typical current idle». Note that these names are dependent on what the motherboard manufacturer calls them, so they may be a little different in your particular case.
Other less ideal solutions include disabling c-states in the UEFI Setup or adding processor.max_cstate=1 to your kernel command line arguments.
Насколько хорошая поддержка Ryzen в Linux
Давно (несколько лет) не собирал компы для Linux, сейчас вот понадобилось собрать десктопную офисную машинку.
Присматриваюсь к бюджетным процессорам AMD Ryzen 3 с графическим ядром Radeon R7. Пока что неясно следующее:
- нет ли в Linux проблем с вольтажом, управлением частотой, перегревом?
- как ведёт себя графика? Нужен ли проприетарный драйвер от AMD ил можно жить с обычным открытым драйвером? Не дёргаются ли эффекты в Гноме/КДЕ, нет ли тиринга?
- есть ли смысл ставить специализированные сборки Linux для Ryzen, типа OpenMandriva?
Или может взять что-то бюджетное на Intel? Меня в данном случае волнует не прибавка к производительности, а отсутствие геморроя.
AMD Ryzen 3 с графическим ядром Radeon R7
Разве такие есть? Я думал, внутри Vega.
нет ли в Linux проблем с вольтажом, управлением частотой, перегревом?
На счет вольтажа не в курсе, если ты про CPU. Но cpu frequency governor точно работает. Для бюджетных процессоров вполне хватит комплектного охлаждения. Я думаю, встроенный GPU можно андервольтить и разгонять в линуксе также, как и дискретки.
как ведёт себя графика? Нужен ли проприетарный драйвер от AMD
Вроде бы тут были темы с жалобами на проблемы со встройкой, но у меня дискретная вега (и проблемы с ней), так что сказать не могу. Проприентарного драйвера как такового нет: это юзерспейсная реализация OpenGL/Vulkan/OpenCL, которая местами проигрывает в производительности реализации из Mesa. Если нужен OpenCL и по какой-то причине не подходит ROCm — ставь.
В xorg.conf можно прописать, если тиринг увидишь. Я это сделал просто чтобы было.
есть ли смысл ставить специализированные сборки Linux для Ryzen, типа OpenMandriva?
Лично я не вижу смысла. Использую Gentoo, собираю пакеты с -march=znver1, особого прироста не увидел.
Есть проблема с тем, что на дефолтных настройках биоса (те, которые safe defaults) линукс может работать не стабильно. Проблема проявляется не со всеми комбинациями материнская плата + процессор, и возможно зависит от конкретных экземпляров изделий. Самое плохое, что если твоя система вдруг окажется подверженной проблеме, не факт, что ты найдешь исправляющее ситуацию временное решение. Проблема тянется с выпуска самых первых процессоров ryzen, и нормального исправления пока не предвидится.
AMD Ryzen 3 с графическим ядром Radeon R7
Там Vega 8, хорошая интегрированая «графика», между прочим.
нет ли в Linux проблем с вольтажом, управлением частотой, перегревом?
Нету. Всё там работает, как положено. А перегрев может быть только если разогнать его до скорости света под «стоковым» кулером да в наглухо закрытом корпусе.
как ведёт себя графика? Нужен ли проприетарный драйвер от AMD ил можно жить с обычным открытым драйвером? Не дёргаются ли эффекты в Гноме/КДЕ, нет ли тиринга?
Сейчас всё пляшет «из коробки», максимум, что может случиться — придётся дописывать параметр загрузки ядра (не помню, какой), и тогда гарантированно заработает. Это нужно уже на месте смотреть.
Открытый драйвер прекрасно работает, простому пользователю пропиетарный вообще не нужен (он только для OpenCL нужен, и то — некоторые умельцы нужный функционал оттуда выдирают и прикорчёвывают себе). Игры, видео — всё работает, «кеды», «гном» — прекрасно себя чувствуют, никакого тиринга нету (если только не ломать GUI специально).
есть ли смысл ставить специализированные сборки Linux для Ryzen, типа OpenMandriva?
В первый раз о таких слышу, но нет, они не нужны. Всегда ставил Arch, и мой 2600 себя прекрасно чувствует. 2200, 2400 тоже должны отлично работать с последними драйверами и «месой».
И я не могу понять, с чего вы решили, что OpenMandriva специально для «рязани» создавалась.
Или может взять что-то бюджетное на Intel? Меня в данном случае волнует не прибавка к производительности, а отсутствие геморроя.
Вроде бы и то, и другое без геморроя, как говорится — «вставил и забыл». Но к «синему» камню ещё надо хорошую мат. плату подобрать, а это задачка, так сказать, «для гурманов».