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

Difference between revisions of "Undervolt intel CPU/ru"

From Manjaro
(Created page with "Если напряжение установлено слишком низким - это может привести к ошибке, сбою и перезагрузке.")
Tags: Mobile web edit Mobile edit
 
(32 intermediate revisions by the same user not shown)
Line 3: Line 3:
= Введение =
= Введение =


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


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


{{warning|It's not a trivial thing to do, used software can physically harm your computer if wrong value are set.}}
{{BoxWarning|Предупреждение|Это нетривиальная вещь, используемое программное обеспечение может физически повредить Ваш компьютер при установке неправильных значений.}}


== Intel P-state vs cpufreq ==
== Intel P-state vs cpufreq ==


"CPUfreq — also referred to as CPU speed scaling — is the infrastructure in the Linux kernel that enables to scale the CPU frequency in order to save power." ''Redhat.com docs.''
"CPUfreq - также называемый масштабированием скорости процессора - это инфраструктура в ядре Linux, позволяющая масштабировать частоту процессора для экономии энергии." ''Документация Redhat.com''


"intel_pstate is a part of the CPU performance scaling subsystem in the Linux kernel (CPUFreq). It is a scaling driver for the Sandy Bridge and later generations of Intel processors." ''Kernel.org docs''
"intel_pstate является частью подсистемы масштабирования производительности процессора в ядре Linux (CPUFreq). Это драйвер масштабирования для Sandy Bridge и более поздних поколений процессоров Intel." ''Документация Kernel.org''


Method to undervolt differ depending on which "scaling" is used by your processor, Intel PState start with 2nd gen Intel Core i3/5/7 (Sandy Bridge).
Метод понижения напряжения зависит от того, какое "масштабирование" используется в вашем процессоре, Intel PState начинается со 2-го поколения Intel Core i3/5/7 (Sandy Bridge).


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


1. For CPUfreq, PHC is used and method is well documented on arch wiki (https://wiki.archlinux.org/index.php/PHC), I will not focus on it as I got no experience with it and no hardware to acquire it.
1. Для CPUfreq используется PHC, и метод хорошо документирован в [https://wiki.archlinux.org/index.php/PHC Arch Wiki], я не буду заострять на нем внимание, так как у меня нет опыта работы с ним и нет оборудования для его получения.


2. For PState, a method appeared in August 2017 (https://github.com/mihic/linux-intel-undervolt) and shortly after a python soft got written (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 =


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


I will take the example of a 0.175V '''decrease''': '''- '''0.175V.
Я возьму пример '''снижения''' напряжения на 0,175 В: '''-'''0,175 В.


To achieve that I will need two commands, one for '''CPU Core''' and the other for '''CPU Cache'''. (CPU Core and Cache share the voltage plane on my machine, that's why two commands instead of one).
Для этого мне понадобится две команды, одна для '''CPU Core''' и другая для '''CPU Cache'''. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной).


{{warning|These commands are shown for illustrative purpose.}}
{{BoxWarning|Предупреждение|Эти команды показаны для примера.}}
  sudo wrmsr 0x150 0x80000011E9A00000
  sudo wrmsr 0x150 0x80000011E9A00000
  sudo wrmsr 0x150 0x80000211E9A00000
  sudo wrmsr 0x150 0x80000211E9A00000


explanation:
пояснение:
  # wrmsr is a tool used for writing values to a CPU's machine specific registers (MSR).
  # wrmsr - это инструмент, используемый для записи значений в машинно-специфические регистры (MSR) процессора.
   
   
  # First value is the register number.
  # Первое значение - номер регистра.
     # It's always 0x150
     # Это всегда 0x150
   
   
  # Second value is where and what we write in it.
  # Второе значение - где и что мы в него пишем.
     # 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 для получения отрицательного значения (дополнительный код).
   
   
         # Bits tagged with "c" are constant value, bits tagged with "o" are the calculated offset.
         # Биты, помеченные "c" - постоянное значение, помеченные "o" - вычисленное смещение.
         # ccco oooo oooc cccc cccc cccc cccc cccc
         # ccco oooo oooc cccc cccc cccc cccc cccc
         # 1110 1001 1010 0000 0000 0000 0000 0000
         # 1110 1001 1010 0000 0000 0000 0000 0000
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.