Difference between revisions of "Undervolt intel CPU/ru"
Views
Actions
Namespaces
Variants
Tools
(Created page with "== Описание метода ==") Tags: Mobile web edit Mobile edit |
|||
(23 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, и метод хорошо документирован в | 1. Для CPUfreq используется PHC, и метод хорошо документирован в [https://wiki.archlinux.org/index.php/PHC Arch Wiki], я не буду заострять на нем внимание, так как у меня нет опыта работы с ним и нет оборудования для его получения. | ||
2. Для PState метод появился в августе 2017 года | 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 | = Понижение напряжения через PState = | ||
== Описание метода == | == Описание метода == | ||
Я возьму пример '''снижения''' напряжения на 0,175 В: '''-'''0,175 В. | |||
Для этого мне понадобится две команды, одна для '''CPU Core''' и другая для '''CPU Cache'''. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной). | |||
{{ | {{BoxWarning|Предупреждение|Эти команды показаны для примера.}} | ||
sudo wrmsr 0x150 0x80000011E9A00000 | sudo wrmsr 0x150 0x80000011E9A00000 | ||
sudo wrmsr 0x150 0x80000211E9A00000 | sudo wrmsr 0x150 0x80000211E9A00000 | ||
пояснение: | |||
# wrmsr | # wrmsr - это инструмент, используемый для записи значений в машинно-специфические регистры (MSR) процессора. | ||
# | # Первое значение - номер регистра. | ||
# | # Это всегда 0x150 | ||
# | # Второе значение - где и что мы в него пишем. | ||
# 0x | # 0x означает шестнадцатеричный. | ||
# 80000 | # 80000 постоянна, значение неизвестно. | ||
# X <- | # X <- это индекс плоскости, он может быть (не исчерпывающим): | ||
# 0 CPU Core | # 0 CPU Core | ||
# 1 GPU | # 1 GPU | ||
# 2 CPU Cache | # 2 CPU Cache | ||
# 1 | # 1 постоянна, значение неизвестно. | ||
# 1 write/read <- | # 1 write/read <- Я не знаю, что это значит. | ||
# E9A00000 | # E9A00000 смещение, оно составляет -0,175 В после некоторого магического расчета. | ||
# -175*1.024 = -179.2 -> -179 | # -175*1.024 = -179.2 -> -179 | ||
# 179 = 1011 0011 | # 179 = 1011 0011 | ||
# -179 = 0100 1101 # | # -179 = 0100 1101 # инверсия битов+1 для получения отрицательного значения (дополнительный код). | ||
# | # Биты, помеченные "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 | ||
== | == Программы == | ||
=== | === Модуль ядра === | ||
Для работы '''wrmsr''' необходимо включить модуль '''msr''' | |||
modprobe msr | modprobe msr | ||
=== wrmsr/rdmsr === | === wrmsr/rdmsr === | ||
wrmsr | wrmsr предоставляется пакетом '''msr-tools''' в '''AUR'''. | ||
=== | === Софт на python, о котором я упоминал ранее === | ||
Если вы не хотите делать расчеты самостоятельно или хотите автоматизировать понижение напряжения при загрузке, то попробуйте использовать [https://github.com/xdever/linux-intel-undervolt-tool linux-intel-undervolt-tool]. | |||
Он не очень активно используется и <strike>не доступен как пакет на данный момент</strike> он был форкнут https://github.com/hedgepigdaniel/linux-intel-undervolt-tool/ и доступен в '''AUR''' как '''linux-intel-undervolt-tool'''. | |||
Мой беглый взгляд на файлы и поведение '''linux-intel-undervolt-tool''': | |||
/usr/bin/undervolt | /usr/bin/undervolt | ||
# | # программа, написана на python | ||
# | # если запустить без повышенных прав - это даст команду применить себя с wrmsr | ||
# | # параметры: | ||
'-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 | ||
# | # содержит параметры напряжения "cpu" и "gpu" | ||
/usr/lib/systemd/system/undervolt.service | /usr/lib/systemd/system/undervolt.service | ||
# | # запуск и автозапуск службы systemd, которая перезапускается после suspend/hibernate/hybrid-sleep с: -config /etc/undervolt.json | ||
# загрузка модуля msr при включении системы | |||
/etc/modules-load.d/undervolt-msr.conf | /etc/modules-load.d/undervolt-msr.conf | ||
== | == Оборудование, о котором известно, что оно работает == | ||
{| 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 ( | 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 | 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 ( | https://github.com/mihic/linux-intel-undervolt (автор метода понижения напряжения) | ||
|} | |} | ||
Не стесняйтесь сообщать [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
Введение
Понижение напряжения
При правильной работе понижение напряжения питания процессора снижает его энергопотребление и нагрев без ущерба для производительности.
Но, если уровень напряжения установить слишком низким - это может привести к ошибке, сбою и перезагрузке.
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" если хотите, чтобы я пополнил этот список.