LINUX.ORG.RU

PState P3+ на APU Ryzen под Linux

 , ,


0

1

Имеется ноутбук HP Laptop 14s-fq1002ur с APU Ryzen 7 5700U (архитектура Lucienne, ядра Zen 2). Под Linux недоступны все PState после P2, как следствие частота не может опуститься ниже 1400 Mhz, а это не даёт снизить напряжение на ядра и экономить заряд (в Lucienne добавили поддержку разного напряжения на разные ядра). Автономность итак весьма хорошая, 6 часов на минимальной яркости при серфинге есть после нехитрой настройки TLP, но подозреваю что под Windows ноут может больше т.к. в характеристиках заявлено «Battery life mixed usage Up to 9 hours and 45 minutes».

# cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.40 GHz - 4.37 GHz
  available frequency steps:  1.80 GHz, 1.70 GHz, 1.40 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.40 GHz and 1.80 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: 1.40 GHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: yes
    Total States: 3
    Pstate-P0:  1800MHz
    Pstate-P1:  1700MHz
    Pstate-P2:  1400MHz
# ./zenstates.py -l
CPUs: 1
CPUID: 00860F81
Package Type: 0
P0 - Enabled - FID = 5A - DID = A - VID = 35 - Ratio = 18.00 - vCore = 1.21875
P1 - Enabled - FID = 66 - DID = C - VID = 60 - Ratio = 17.00 - vCore = 0.95000
P2 - Enabled - FID = 62 - DID = E - VID = 66 - Ratio = 14.00 - vCore = 0.91250
P3 - Disabled
P4 - Disabled
P5 - Disabled
P6 - Disabled
P7 - Disabled
C6 State - Package - Enabled
C6 State - Core - Enabled

Пробовал менять FID и VID, активировать P3-P7 со своими значениями с помощью ZenStates (https://github.com/r4m0n/ZenStates-Linux), никак не реагирует, по-прежнему 1400 Mhz и прежнее напряжение.

Возможно мне поможет https://github.com/leogx9r/ryzen_smu, но я пока что не понимаю как с его помощью понижать частоту и напряжение.

В тред призываются все владельцы ноутбуков на Ryzen с Linux.

КМК, это аппаратное какое-то. Как было с Zen 1 первых ревизий – под "оффтопиком" пашут, а под "линуксами" – будь добр, отключай C-States (или что-то подобное), или зависает. Но тут хоть слава Патрегу, не виснет.

Korchevatel ★★★★★
()
Ответ на: комментарий от Korchevatel

Со включенным ucache GCC глючит. И программы собранные с новым GCC падают как осенний дождь. В новых ревизиях первого поколения тупо отключили его потом.

steemandlinux ★★★★★
()
Ответ на: комментарий от steemandlinux

теперь и гцц в шатны амуде заливает? что дальше, столлман с линусом и реальность в целом виноваты в махинациях?

anonymous
()

Про zenstate не скажу, но cpupower frequency-info не показывает все возможные частоты на которых может работать cpu. Например у меня на Ryzen 3550h прямо сейчас так:

$ sudo cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.40 GHz - 2.10 GHz
  available frequency steps:  2.10 GHz, 1.70 GHz, 1.40 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.40 GHz and 2.10 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: 2.10 GHz (asserted by call to hardware)
  boost state support:
    Supported: no
    Active: no
    Boost States: 0
    Total States: 3
    Pstate-P0:  2100MHz
    Pstate-P1:  1700MHz
    Pstate-P2:  1400MHz

$ cpufreq-info | grep "current CPU"
  current CPU frequency is 1.56 GHz.
  current CPU frequency is 2.45 GHz.
  current CPU frequency is 1.23 GHz.
  current CPU frequency is 1.23 GHz.
  current CPU frequency is 2.76 GHz.
  current CPU frequency is 1.39 GHz.
  current CPU frequency is 1.24 GHz.
  current CPU frequency is 1.23 GHz.
Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Aber

Я тоже у себя видел частоты чуть меньше 1400 Mhz, например 1357 Mhz, но частота быстро возвращалась на 1400. А на какой частоте у тебя работает процессор с говенором powersave, можешь проверить?

ArkaDOSik ★★
() автор топика

ну во первых далеко не факт что там есть эти pstate в принципе. У zen 2 вообще в схемах энергопотребления все не так как было раньше. Да и на интелах в общем тоже - если раньше по ядрам были с0-с10, то теперь макс С3.Хотя если смотреть по потреблению - то С3 на тигре аналогично с10 на скайлейке. У красных все еще мудренее.

Правда я свою бук на ренуаре по итогу скинул ибо так и не смог научить его делать suspend. Да и с энергосбережением по видео там все плохо. Плохо опять же в том что вся система эффективна под нагрузкой но очень хреново себя ведет в idle - там где бук на интел айдлит на 1.5 ватта амд жрет три. Под оффтопиком все лучше, а под линукс пилят. По идее с каждым новым ядром должно быть лучше.

Qui-Gon ★★★★★
()
Ответ на: комментарий от ArkaDOSik

Не знаю почему но с powersave почти всегда 1.4GHz.

$ cpufreq-info  | grep -E "The govern|current CPU"
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.
              The governor "powersave" may decide which speed to use
current CPU frequency is 1.40 GHz.

Я пользуюсь schedutil и с ним по другому:

$ cpufreq-info  | grep -E "The govern|current CPU"
              The governor "schedutil" may decide which speed to use
current CPU frequency is 1.82 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 2.62 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 1.57 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 2.37 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 1.23 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 1.23 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 1.23 GHz.
              The governor "schedutil" may decide which speed to use
current CPU frequency is 1.23 GHz.
Aber ★★★★★
()
Ответ на: комментарий от Qui-Gon

вся система эффективна под нагрузкой но очень хреново себя ведет в idle - там где бук на интел айдлит на 1.5 ватта амд жрет три

Если взять обычную и не большую батарею на 40Wh то при потреблении 1.5 ватта в час этой батареи хватило бы на 26 часов, так что мне кажется ты что-то путаешь.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Aber

Можно тестером легко всё померить. Снять батарею, а в разрыв бп подключить амперметр и посчитать сколько что жрёт на самом деле…

gtk3 ★★★
()
Ответ на: комментарий от Aber

так я же написал что это в idle. Это когда ноут как писикак - молчит и ничего не делает. Загружена ОС без ничего -никаких броузеров мессенджеров почты - и экран на минимум. Стоит открыть ютубчик и вместо 1.5 будет 10+. Но пока ты будешь скажем читать текст в редакторе не шевеля мышой - комп на интеле какое то время будет есть 1.5 вата , а на АМД - 3. Ну а если на ноуте играться постоянно или ютуб смотреть - то там уже глубоко всеравно до каких C-state он теоретически может опуститься.

Qui-Gon ★★★★★
()
Ответ на: комментарий от ArkaDOSik

Я сейчас повторил эксперимент и теперь частоты между powersave и schedutil уже не отличаются.

$ cpufreq-info  | grep -E "The govern|current CPU"
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.24 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.24 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.27 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.22 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.25 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.22 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.23 GHz.
                  The governor "powersave" may decide which speed to use
  current CPU frequency is 1.23 GHz.

По потреблю, судя по sensors, никакой разницы.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 3)

Приветствую.

См. https://01.org/linux-acpi/documentation/overriding-dsdt .

Последовательность действий:

acpidump -b -o dump-all.aml
iasl -d ssdt1.dat
cp ssdt1.dsl ssdt1-mod.dsl
vim ssdt1-mod.dsl

Номер таблицы м.б. другой, зависит от вендора MB. Я добавлял существующий P-state 900MHz для APU A8-4555M, который производитель Nettop-а забыл вписать. Проверил по оф.документации на APU с сайта AMD: напряжения совпадали со следующим P-state 1100MHz. Поэтому соответствующие части скопировал 4 раза (т.е. для каждого ядра, а их 4). Изменил только частоту. Далее:

iasl -ta ssdt1-mod.dsl
cp ssdt1-mod.aml /boot

Добавить команду «acpi /ssdt1-mod.aml» в grub.cfg или custom.cfg . Перезагрузиться.

PS Для Ryzen проверить напряжения затруднительно, т.к. соответствующая документация (пока?) не открыта.

PPS Добавить таком же образом (оф.поддерживаемые) Boost-овые P-state >1600MHz для A8 не получилось.

PPPS Добавить таком же образом (оф.НЕподдерживаемый) новый P-state для Ryzen тоже не получилось.

anonymous
()
Ответ на: комментарий от anonymous

как минимум на фуфыксе прямо из вендовой утилиты можно было прямо на ходу крутить напряжения и множители, а так же отключать ядра полностью

anonymous
()
Ответ на: комментарий от anonymous

Приветствую разбирающегося в теме анонима. Что-то похожее на описание PStates я нашёл в ssdt4.dsl: https://pastebin.com/r7Bcf0z9

            Package (0x08)
            {
                0x00000578, 

вот здесь похоже и есть эти 1400 Mhz из P2. Но после того как я изменил на 0x00000320 (800) ничего не изменилось, как ты и написал, что неподдерживаемые PState не сработают.

Мне наверное стоит поставить хотя бы на время Windows и посмотреть как работают P3+ там.

ArkaDOSik ★★
() автор топика
Ответ на: комментарий от Qui-Gon

там где бук на интел айдлит на 1.5 ватта амд жрет три

ВРЁШ СОБАКА

неможет быть чтобы 7нм жрали больше 10

учи матчасть что бы не быть штеудом

anonymous
()
Ответ на: комментарий от anonymous

7нм это узкая часть трапецевидного затвора , у штеуда затвор прямой - так что 7нм от красных обычный маркетологический развод.

Так что учись лучше сам, неуч. Инженеров почитай грамотных а не рекламные бумажки.

А жрет интел меньше потому что интеловская графика умеет использовать PSR - Panel Self Refresh, когда экран рисует стабильную картинку скажем при чтении текста - процессор спит. АМД вроде как тоже заявили что сделали этот режим, но чтобы его включить надо в параметры ядра записать какую-то адскую бит-маск для активирования экспериментальных фич. И выяснить что оно нихрена не работает при этом и адски глючит - то есть не просто так его по дефолту не разрешили. Поэтому хоть до 5 нм заточи кончик затвора всеравно будет жрать больше - просто потому что красный процессор в этом режиме подает питание на графику и она работает, а у синего графика отключена. И за счет этого даже старые 14нм синие в idle жрут меньше чем 7нм красные.

Qui-Gon ★★★★★
()
Ответ на: комментарий от ArkaDOSik

Да, надо копировать и изменять блоки

            Package (0x06)
            {
            .....

и

            Package (0x08)
            {
            .....

16 раз для каждого из 16 SMT логических ядер.

Всё это в предположении, что напряжения у 800 MHz и 1400 MHz одинаковые. Может получиться, если этот P-state оф.поддерживаемый для 5700U , имхо.

Ну, и как вариант, можно воспользоваться zenstates.py и изменить существующий P2-state. У меня такое получалось, соответственно, это уже после загрузки Linux.

Команда типа: zenstates.py -p 3 -f a0 -d 4

Опция -v это пропорциональное линейное шаговое изменение напряжения, не думаю, что имеет большой смысл его снижать, но если есть желание попробовать…

anonymous
()
11 ноября 2021 г.

Это новые апушки такие, ниже 1400 только троттлингом можно добиться. Надо ждать новый планировщик от амд, который на ватт лучше работает. В винде уже 3года есть, а в линуксе только благодаря пинку вальве, решили сделать.

NonameKiriLL
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.