Manjaro Difference between revisions of "Undervolt intel CPU/ru"

Difference between revisions of "Undervolt intel CPU/ru"

From Manjaro
(Created page with "пояснение: # wrmsr - это инструмент, используемый для записи значений в машинно-специфические реги...")
Tags: Mobile web edit Mobile edit
 
(19 intermediate revisions by the same user not shown)
Line 3: Line 3:
= Введение =
= Введение =


== Разгон ==  
== Понижение напряжения ==  
При правильной работе понижение напряжения питания процессора снижает его энергопотребление и нагрев без ущерба для производительности.
При правильной работе понижение напряжения питания процессора снижает его энергопотребление и нагрев без ущерба для производительности.


Если напряжение установлено слишком низким - это может привести к ошибке, сбою и перезагрузке.
Но, если уровень напряжения установить слишком низким - это может привести к ошибке, сбою и перезагрузке.


{{BoxWarning|Предупреждение|Это не тривиальная вещь, используемое программное обеспечение может физически повредить Ваш компьютер, если установлены неправильные значения.}}
{{BoxWarning|Предупреждение|Это нетривиальная вещь, используемое программное обеспечение может физически повредить Ваш компьютер при установке неправильных значений.}}


== Intel P-state vs cpufreq ==
== Intel P-state vs cpufreq ==
Line 20: Line 20:
== Метод / Программы / История ==
== Метод / Программы / История ==


1. Для CPUfreq используется PHC, и метод хорошо документирован в arch wiki (https://wiki.archlinux.org/index.php/PHC), я не буду заострять на нем внимание, так как у меня нет опыта работы с ним и нет оборудования для его получения.
1. Для CPUfreq используется PHC, и метод хорошо документирован в [https://wiki.archlinux.org/index.php/PHC Arch Wiki], я не буду заострять на нем внимание, так как у меня нет опыта работы с ним и нет оборудования для его получения.


2. Для PState метод появился в августе 2017 года (https://github.com/mihic/linux-intel-undervolt), а вскоре после этого был написан софт на python (https://github.com/xdever/linux-intel-undervolt-tool).
2. Для PState метод появился в августе 2017 года [https://github.com/mihic/linux-intel-undervolt linux-intel-undervolt], а вскоре после этого на python был написан софт [https://github.com/xdever/linux-intel-undervolt-tool linux-intel-undervolt-tool].


= PState undervolt =
= Понижение напряжения через PState =


== Описание метода ==
== Описание метода ==


Я возьму пример '''снижения''' напряжения на 0,175 В:'''-'''0,175 В.
Я возьму пример '''снижения''' напряжения на 0,175 В: '''-'''0,175 В.


Для этого мне понадобится две команды, одна для '''CPU Core''' и другая для '''CPU Cache'''. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной).
Для этого мне понадобится две команды, одна для '''CPU Core''' и другая для '''CPU Cache'''. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной).
Line 43: Line 43:
   
   
  # Второе значение - где и что мы в него пишем.
  # Второе значение - где и что мы в него пишем.
     # 0x mean hexadecimal.
     # 0x означает шестнадцатеричный.
     # 80000 is constant, meaning is unknown.
     # 80000 постоянна, значение неизвестно.
     # X <- It's the plane index, it can be (not exhaustive):
     # X <- это индекс плоскости, он может быть (не исчерпывающим):
         # 0 CPU Core
         # 0 CPU Core
         # 1 GPU
         # 1 GPU
         # 2 CPU Cache
         # 2 CPU Cache
     # 1 is constant, meaning is unknown.
     # 1 постоянна, значение неизвестно.
     # 1 write/read <- I don't know what that mean.
     # 1 write/read <- Я не знаю, что это значит.
     # E9A00000 offset, it's -0.175V after some magic calculation.
     # E9A00000 смещение, оно составляет -0,175 В после некоторого магического расчета.
         # -175*1.024 = -179.2 -> -179
         # -175*1.024 = -179.2 -> -179
         # 179  = 1011 0011
         # 179  = 1011 0011
         # -179 = 0100 1101        # invert bits+1 to get negative value.
         # -179 = 0100 1101        # инверсия битов+1 для получения отрицательного значения (дополнительный код).
   
   
         # Биты, помеченные "c" - постоянное значение, помеченные "o" - вычисленное смещение.
         # Биты, помеченные "c" - постоянное значение, помеченные "o" - вычисленное смещение.
Line 63: Line 63:
         # 0xE9A00000
         # 0xE9A00000


== Software ==
== Программы ==


=== kernel module ===
=== Модуль ядра ===
You need to have module '''msr''' enabled for '''wrmsr''' to work
Для работы '''wrmsr''' необходимо включить модуль '''msr'''
  modprobe msr
  modprobe msr


=== wrmsr/rdmsr ===
=== wrmsr/rdmsr ===
wrmsr is provided by package '''msr-tools''' in '''AUR'''
wrmsr предоставляется пакетом '''msr-tools''' в '''AUR'''.


=== The python soft I mentioned earlier ===
=== Софт на python, о котором я упоминал ранее ===
If you don't want to make the calculation yourself or want to automate undervolt at boot you can use: https://github.com/xdever/linux-intel-undervolt-tool
Если вы не хотите делать расчеты самостоятельно или хотите автоматизировать понижение напряжения при загрузке, то попробуйте использовать [https://github.com/xdever/linux-intel-undervolt-tool linux-intel-undervolt-tool].


It's not heavily used and <strike>not available as a package for now</strike> it got forked https://github.com/hedgepigdaniel/linux-intel-undervolt-tool/ and is available in '''AUR''' as '''linux-intel-undervolt-tool'''.
Он не очень активно используется и <strike>не доступен как пакет на данный момент</strike> он был форкнут https://github.com/hedgepigdaniel/linux-intel-undervolt-tool/ и доступен в '''AUR''' как '''linux-intel-undervolt-tool'''.


My quick look at '''linux-intel-undervolt-tool''' files and behaviour:
Мой беглый взгляд на файлы и поведение '''linux-intel-undervolt-tool''':
  /usr/bin/undervolt
  /usr/bin/undervolt
   # program written in python
   # программа, написана на python
   # if run without elevated right it give command to apply yourself with wrmsr
   # если запустить без повышенных прав - это даст команду применить себя с wrmsr
   # options:
   # параметры:
     '-gpu', type=int, help='Undervolt GPU by this amount of millivolts. Must be negative.'
     '-gpu', type=int, help='Undervolt GPU by this amount of millivolts. Must be negative.'
     '-cpu', type=int, help='Undervolt CPU by this amount of millivolts. Must be negative.'
     '-cpu', type=int, help='Undervolt CPU by this amount of millivolts. Must be negative.'
     '-config', type=str, help='Config file to load. Other flags has priority over -config.'
     '-config', type=str, help='Config file to load. Other flags has priority over -config.'
  /etc/undervolt.json
  /etc/undervolt.json
   # contain voltage parameters "cpu" and "gpu"
   # содержит параметры напряжения "cpu" и "gpu"
  /usr/lib/systemd/system/undervolt.service
  /usr/lib/systemd/system/undervolt.service
   # a systemd service enabled and started which restart after suspend/hibernate/hybrid-sleep with: -config /etc/undervolt.json
   # запуск и автозапуск службы systemd, которая перезапускается после suspend/hibernate/hybrid-sleep с: -config /etc/undervolt.json
  # загрузка модуля msr при включении системы
  /etc/modules-load.d/undervolt-msr.conf
  /etc/modules-load.d/undervolt-msr.conf
  # load msr module at startup


== Hardware known to work ==
== Оборудование, о котором известно, что оно работает ==
{| class="wikitable centre" width="100%"
{| class="wikitable centre" width="100%"
|-
|-
Line 107: Line 107:
I5-6300HQ
I5-6300HQ
| width="70%" |
| width="70%" |
https://forum.manjaro.org/t/undervolt-recent-intel-cpu/41948/5    (This wiki page author)
https://forum.manjaro.org/t/undervolt-recent-intel-cpu/41948/5    (Это автор страницы wiki)
|-
|-
| width="10%" |
| width="10%" |
Line 116: Line 116:
I7-??????
I7-??????
| width="70%" |
| width="70%" |
https://github.com/xdever/linux-intel-undervolt-tool    (linux-intel-undervolt-tool author)
https://github.com/xdever/linux-intel-undervolt-tool    (Автор linux-intel-undervolt-tool)
|-
|-
| width="10%" |
| width="10%" |
Line 125: Line 125:
I7-6700HQ
I7-6700HQ
| width="70%" |
| width="70%" |
https://github.com/mihic/linux-intel-undervolt    (undervolt method author)
https://github.com/mihic/linux-intel-undervolt    (автор метода понижения напряжения)
|}
|}
Feel free to report [https://forum.manjaro.org/t/undervolt-recent-intel-cpu/41948 here] with "@Yoy0" if you want me to append this list.
Не стесняйтесь сообщать [https://forum.manjaro.org/t/undervolt-recent-intel-cpu/41948 сюда] товарищу "@Yoy0" если хотите, чтобы я пополнил этот список.
[[Category:Contents Page{{#translation:}}]]
[[Category:Contents Page{{#translation:}}]]

Latest revision as of 06:10, 24 January 2023

Other languages:
English • ‎Türkçe • ‎русский

Введение

Понижение напряжения

При правильной работе понижение напряжения питания процессора снижает его энергопотребление и нагрев без ущерба для производительности.

Но, если уровень напряжения установить слишком низким - это может привести к ошибке, сбою и перезагрузке.


Предупреждение
Это нетривиальная вещь, используемое программное обеспечение может физически повредить Ваш компьютер при установке неправильных значений.

Intel P-state vs cpufreq

"CPUfreq - также называемый масштабированием скорости процессора - это инфраструктура в ядре Linux, позволяющая масштабировать частоту процессора для экономии энергии." Документация Redhat.com

"intel_pstate является частью подсистемы масштабирования производительности процессора в ядре Linux (CPUFreq). Это драйвер масштабирования для Sandy Bridge и более поздних поколений процессоров Intel." Документация Kernel.org

Метод понижения напряжения зависит от того, какое "масштабирование" используется в вашем процессоре, Intel PState начинается со 2-го поколения Intel Core i3/5/7 (Sandy Bridge).

Метод / Программы / История

1. Для CPUfreq используется PHC, и метод хорошо документирован в Arch Wiki, я не буду заострять на нем внимание, так как у меня нет опыта работы с ним и нет оборудования для его получения.

2. Для PState метод появился в августе 2017 года linux-intel-undervolt, а вскоре после этого на python был написан софт linux-intel-undervolt-tool.

Понижение напряжения через PState

Описание метода

Я возьму пример снижения напряжения на 0,175 В: -0,175 В.

Для этого мне понадобится две команды, одна для CPU Core и другая для CPU Cache. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной).


Предупреждение
Эти команды показаны для примера.
sudo wrmsr 0x150 0x80000011E9A00000
sudo wrmsr 0x150 0x80000211E9A00000

пояснение:

# wrmsr - это инструмент, используемый для записи значений в машинно-специфические регистры (MSR) процессора.

# Первое значение - номер регистра.
    # Это всегда 0x150

# Второе значение - где и что мы в него пишем.
    # 0x означает шестнадцатеричный.
    # 80000 постоянна, значение неизвестно.
    # X <- это индекс плоскости, он может быть (не исчерпывающим):
        # 0 CPU Core
        # 1 GPU
        # 2 CPU Cache
    # 1 постоянна, значение неизвестно.
    # 1 write/read <- Я не знаю, что это значит.
    # E9A00000 смещение, оно составляет -0,175 В после некоторого магического расчета.
        # -175*1.024 = -179.2 -> -179
        # 179  = 1011 0011
        # -179 = 0100 1101         # инверсия битов+1 для получения отрицательного значения (дополнительный код).

        # Биты, помеченные "c" - постоянное значение, помеченные "o" - вычисленное смещение.
        # ccco oooo oooc cccc cccc cccc cccc cccc
        # 1110 1001 1010 0000 0000 0000 0000 0000
        #    E    9    A    0    0    0    0    0

        # 0xE9A00000

Программы

Модуль ядра

Для работы wrmsr необходимо включить модуль msr

modprobe msr

wrmsr/rdmsr

wrmsr предоставляется пакетом msr-tools в AUR.

Софт на python, о котором я упоминал ранее

Если вы не хотите делать расчеты самостоятельно или хотите автоматизировать понижение напряжения при загрузке, то попробуйте использовать linux-intel-undervolt-tool.

Он не очень активно используется и не доступен как пакет на данный момент он был форкнут https://github.com/hedgepigdaniel/linux-intel-undervolt-tool/ и доступен в AUR как linux-intel-undervolt-tool.

Мой беглый взгляд на файлы и поведение linux-intel-undervolt-tool:

/usr/bin/undervolt
  # программа, написана на python
  # если запустить без повышенных прав - это даст команду применить себя с wrmsr
  # параметры:
    '-gpu', type=int, help='Undervolt GPU by this amount of millivolts. Must be negative.'
    '-cpu', type=int, help='Undervolt CPU by this amount of millivolts. Must be negative.'
    '-config', type=str, help='Config file to load. Other flags has priority over -config.'
/etc/undervolt.json
  # содержит параметры напряжения "cpu" и "gpu"
/usr/lib/systemd/system/undervolt.service
  # запуск и автозапуск службы systemd, которая перезапускается после suspend/hibernate/hybrid-sleep с: -config /etc/undervolt.json
  # загрузка модуля msr при включении системы
/etc/modules-load.d/undervolt-msr.conf

Оборудование, о котором известно, что оно работает

Manufacturer Model CPU Info source

MSI

GS40 6QE

I5-6300HQ

https://forum.manjaro.org/t/undervolt-recent-intel-cpu/41948/5 (Это автор страницы wiki)

DELL

XPS 15 9560

I7-??????

https://github.com/xdever/linux-intel-undervolt-tool (Автор linux-intel-undervolt-tool)

???

???

I7-6700HQ

https://github.com/mihic/linux-intel-undervolt (автор метода понижения напряжения)

Не стесняйтесь сообщать сюда товарищу "@Yoy0" если хотите, чтобы я пополнил этот список.

Cookies help us deliver our services. By using our services, you agree to our use of cookies.