Difference between revisions of "Undervolt intel CPU/ru"
Views
Actions
Namespaces
Variants
Tools
(Created page with "Я возьму пример '''снижения''' напряжения на 0,175 В:'''-'''0,175 В.") Tags: Mobile web edit Mobile edit |
(Created page with "Для этого мне понадобится две команды, одна для '''CPU Core''' и другая для '''CPU Cache'''. (Ядро процессора и...") Tags: Mobile web edit Mobile edit |
||
| Line 30: | Line 30: | ||
Я возьму пример '''снижения''' напряжения на 0,175 В:'''-'''0,175 В. | Я возьму пример '''снижения''' напряжения на 0,175 В:'''-'''0,175 В. | ||
Для этого мне понадобится две команды, одна для '''CPU Core''' и другая для '''CPU Cache'''. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной). | |||
{{warning|These commands are shown for illustrative purpose.}} | {{warning|These commands are shown for illustrative purpose.}} | ||
Revision as of 17:30, 23 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 (https://wiki.archlinux.org/index.php/PHC), я не буду заострять на нем внимание, так как у меня нет опыта работы с ним и нет оборудования для его получения.
2. Для PState метод появился в августе 2017 года (https://github.com/mihic/linux-intel-undervolt), а вскоре после этого был написан софт на python (https://github.com/xdever/linux-intel-undervolt-tool).
PState undervolt
Описание метода
Я возьму пример снижения напряжения на 0,175 В:-0,175 В.
Для этого мне понадобится две команды, одна для CPU Core и другая для CPU Cache. (Ядро процессора и кэш разделяют уровень напряжения на моей машине, поэтому две команды вместо одной).
sudo wrmsr 0x150 0x80000011E9A00000 sudo wrmsr 0x150 0x80000211E9A00000
explanation:
# wrmsr is a tool used for writing values to a CPU's machine specific registers (MSR).
# First value is the register number.
# It's always 0x150
# Second value is where and what we write in it.
# 0x mean hexadecimal.
# 80000 is constant, meaning is unknown.
# X <- It's the plane index, it can be (not exhaustive):
# 0 CPU Core
# 1 GPU
# 2 CPU Cache
# 1 is constant, meaning is unknown.
# 1 write/read <- I don't know what that mean.
# E9A00000 offset, it's -0.175V after some magic calculation.
# -175*1.024 = -179.2 -> -179
# 179 = 1011 0011
# -179 = 0100 1101 # invert bits+1 to get negative value.
# Bits tagged with "c" are constant value, bits tagged with "o" are the calculated offset.
# 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
Software
kernel module
You need to have module msr enabled for wrmsr to work
modprobe msr
wrmsr/rdmsr
wrmsr is provided by package msr-tools in AUR
The python soft I mentioned earlier
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
It's not heavily used and not available as a package for now it got forked https://github.com/hedgepigdaniel/linux-intel-undervolt-tool/ and is available in AUR as linux-intel-undervolt-tool.
My quick look at linux-intel-undervolt-tool files and behaviour:
/usr/bin/undervolt
# program written in python
# if run without elevated right it give command to apply yourself with wrmsr
# options:
'-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
# contain voltage parameters "cpu" and "gpu"
/usr/lib/systemd/system/undervolt.service
# a systemd service enabled and started which restart after suspend/hibernate/hybrid-sleep with: -config /etc/undervolt.json
/etc/modules-load.d/undervolt-msr.conf
# load msr module at startup
Hardware known to work
| Manufacturer | Model | CPU | Info source |
|---|---|---|---|
|
MSI |
GS40 6QE |
I5-6300HQ |
https://forum.manjaro.org/t/undervolt-recent-intel-cpu/41948/5 (This wiki page author) |
|
DELL |
XPS 15 9560 |
I7-?????? |
https://github.com/xdever/linux-intel-undervolt-tool (linux-intel-undervolt-tool author) |
|
??? |
??? |
I7-6700HQ |
https://github.com/mihic/linux-intel-undervolt (undervolt method author) |
Feel free to report here with "@Yoy0" if you want me to append this list.