kitsunyan / intel-undervolt Goto Github PK
View Code? Open in Web Editor NEWIntel CPU undervolting and throttling configuration tool
License: GNU General Public License v3.0
Intel CPU undervolting and throttling configuration tool
License: GNU General Public License v3.0
Using Ubuntu 20.04.1 LTS with 5.4.69-xanmod1 kernel. I have i5-2430M with Intel HD Graphics 3000.
v30xy@akaBedir:~/Masaüstü/undervolt$ sudo intel-undervolt apply
CPU (0): Input/output error
GPU (1): Input/output error
CPU Cache (2): Input/output error
System Agent (3): Input/output error
Analog I/O (4): Input/output error
Installing intel-undervolt
when I run ./configure, this error
'sed: can't read Makefile.in: No such file or directory'
The Makefile.in is in the folder, however.
When i try to run ./configure && make && make install i get errors like :
-make: gcc: No such file or directory
-gcc -Wall -Wextra
-DSYSCONFDIR='"'/etc'"'
-o config.o -c config.c
-make: *** [Makefile:69: config.o] Error 127
I used to use intel-undervolt on debian 11 with no problems at all but i'm fairly new to linux so if you know how to solve this i would be grateful !
I decided that I don't want to use it anymore and running make clean didn't delete it
how do I fully delete it from my laptop?
First of all, thank you for your work. I've been using your package for some weeks now and its been working great on my Arch setup.
Some months ago, though, Throttlestop`s author unclewebb spotted an issue with the labeling of the planes in the program. For newer architectures, "System Agent" was actually setting the iGPU Unslice plane, whereas "Analog I/O" was the one setting the System Agent plane. See his post from last august:
http://forum.notebookreview.com/threads/the-throttlestop-guide.531329/page-839#post-10779703
He indeed fixed that in Throttlestop, given that "Analog I/O" no longer exists and was replaced with "iGPU Unslice" on newer versions.
I'm not sure if you were aware of that. But seeing "Analog I/O" as a plane in intel-undervolt.conf makes me wonder whether that is something you should revise too, or at least make sure the labelings were adjusting the correct planes underneath.
Regards.
Setting undervolt values for 'CPU Cache' works just fine but setting values for 'CPU' does nothing on my 9750h.
I tested at at different values and saw no difference on temps, power draw or freqs. For reference, doing so in Throttlestop (Windows) shows very tangible differences up to -250mV. I didn't touch anything else on the conf file, just these values.
Srry for the edits. Pressed enter by mistake.
I've successfully managed to undervolt my i5-10210u on ZorinOS but TDP values aren't actually being changed(even though it's said they are).
My config file: https://del.dog/edadocarfy.go
I've also tried using daemon with the mentioned config but the TDP and frequencies stay unchanged(if I enforce a 100ms daemon refresh, it will just say 24W but the actual TDP will still be 15W).
Am I missing something?
how to add this command?
Thanks for the useful piece of software! I've been using it for a few months on my 6th gen x1 carbon.
It works well for my undervolting and power limit needs. However, this generation of Lenovo laptops has an issue on Linux; the temperature limit is hard-coded to 80C, while it's on 100C on Windows. See https://www.reddit.com/r/thinkpad/comments/870u0a/t480s_linux_throttling_bug/ for more information.
This project has a way to subtract a number from the initial temperature limit, such as going from 100 to 90 or 80. Could the reverse be implemented, so I could go from 80 to 90 or 100, and have my CPU throttle less? I've tried playing with the current settings, but I can't get the apparent limit to go past 80.
Thanks!
hi,
thanks for this tools, i use it on arch linux and manjaro :)
but,
i wanted to test on other distrib debian unstable and ubuntu
i install msr-tools and mchbar
-- L'unité (unit) intel-undervolt.service a échoué, avec le résultat RESULT.
root@zenbook:/home/opentux/Téléchargements/intel-undervolt# intel-undervolt read
Exec failed: No such file or directory
Modprobe failed
Failed to setup the program
i do not find a precise log for resolve the problem.
thanks in advance
I am probably overlooking something super-obvious, so I hope this is only a quick question.
The config file says:
# Energy Versus Performance Preference Switch
# Usage: hwphint ${mode} ${algorithm} ${load_hint} ${normal_hint}
# Hints: see energy_performance_available_preferences
Where do I "see energy_performance_available_preferences"? Is there something similar for the algorithm string?
Hi, I think it would be really nice if there is a command-line option to do measurement only once instead of current intel-undervolt measure
, so the results printed can be easily used in scripts or by other programs.
Currently I'm developing a GUI frontend based on this program, and directly obtaining measurement results from intel-undervolt can help a lot. And maybe this function can also help other users.
Hi,
I'm running ubuntu 21.10, kernel 5.13.0-30 on my machine, and I realized that the undervolt-tool is not working anymore.
Problem is probably the failure to load the undervolt module, which throws "Invalid module format" and "missing .modinfo section or name field: no module found in object" when I try to load it manually from a recent build.
Do I miss something here?
thanks,
Mathias
Hey guys, I'm trying to apply the undervolt on startup to my system. But when I run:
sudo systemctl enable intel-undervolt
It states that:
Failed to enable unit: Unit file intel-undervolt.service does not exist.
Hi,
Since a few kernel updates ago (now on Linux nk-zbook 5.5.2-1-MANJARO #1 SMP PREEMPT Tue Feb 4 19:22:35 UTC 2020 x86_64 GNU/Linux) I am having an issue undervolting my HP Zbook Studio Mobile system (i7 8750h).
Any idea how to fix?
Cheers
CPU (0): Values do not equal
GPU (1): -0.00 mV
CPU Cache (2): Values do not equal
System Agent (3): -0.00 mV
Analog I/O (4): -0.00 mV
my config
undervolt 0 'CPU' -150
#undervolt 0 'CPU' 0
undervolt 1 'GPU' 0
undervolt 2 'CPU Cache' -150
#undervolt 2 'CPU Cache' 0
undervolt 3 'System Agent' 0
undervolt 4 'Analog I/O' 0
i have a 12600 which i have OCed the BCLK to 127,5 MHz
clocks reported are with 100 MHz BCLK which are far lower than real
#not an issue
just wanted to know how uninstallation would work? The documentation is not listing method to uninstall.
Hey,
Thank you for providing this tool. I'm currently experimenting with various settings, but I'm struggling to find details on what the System Agent
undervolts. Could you please clarify on what's happening?
Cheers
Hi!
When I use:
sudo intel-undervolt apply
I always get the same error:
CPU (0): Values do not equal
GPU (1): Values do not equal
CPU Cache (2): Values do not equal
System Agent (3): Values do not equal
Analog I/O (4): Values do not equal
And if I read after that command I get:
CPU (0): -0.00 mV
GPU (1): -0.00 mV
CPU Cache (2): -0.00 mV
System Agent (3): -0.00 mV
Analog I/O (4): -0.00 mV
And my intel-undervolt.conf is:
undervolt 0 'CPU' -5.0
undervolt 1 'GPU' -5.0
undervolt 2 'CPU Cache' -5.0
undervolt 3 'System Agent' -5.0
undervolt 4 'Analog I/O' -5.0
My cpu is i5-8250U
Here is my console output:
https://i.imgur.com/kXafgqH.png
If I replace the space after the all:
then I get a command-not-found
, otherwise a nothing can be done for all
.
Running configure after "fixing" the makefile breaks the makefile again.
Hello I am running Ubuntu 18 but when I try to make this error comes up. Any ideas what causes it? When running make %% make install i get the same problem
user@user-Link:~/intel-undervolt$ make gcc -lm -o intel-undervolt config.o main.o main.o: In function
tdp_to_seconds':
main.c:(.text+0x4da): undefined reference to exp2f' main.o: In function
tdp_from_seconds':
main.c:(.text+0x515): undefined reference to log2f' main.c:(.text+0x58e): undefined reference to
log2f'
main.o: In function tdp': main.c:(.text+0x798): undefined reference to
exp2f'
main.c:(.text+0x7df): undefined reference to exp2f' collect2: error: ld returned 1 exit status Makefile:18: recipe for target 'intel-undervolt' failed make: *** [intel-undervolt] Error 1
Thank you
First of all thanks for this great tool. I use this tool for a Thinkpad Extreme to tune it to be as quiet as possible but still be performant if needed in a more long term sense (several seconds)
I have something like this defined in the conf:
hwphint switch load:multi:4.00 balance_performance power
There is mentioned it might be possible to have multiple instructions like this. I would like to fine tune this a bit more, however I can not use this:
hwphint switch load:multi:1.00 balance_performance power
hwphint switch load:multi:4.00 balance_power balance_performance
Also following things came in my mind:
The lastest 4 commits aren't in any version, but I think the code could be considered as fairly stable. I would appreciate it, if you could add the latest commits to a 1.7 git tag, since I plan to pack this for debian.
It would be useful if certain settings could change when a laptop is unplugged from the charger.
For example, using a lower temperature limit or power limit on battery could reduce overall fan usage, which could mean longer battery life. On the other hand, when plugged in, one might want the highest performance, even if that means a louder fan and more power use.
Perhaps this is outside the scope of this project, but I wasn't able to find any information about it.
I want to disable short term package power max, because I found that my cpu is more efficient with this function disable. i have tested with XTU on windows.
I am not sure if you can help to add this function.
Your hardwork is very good and help for me by the way.
How to uninstall intel-undervolt
?
The following does not seem to be doing that:
$ sudo make uninstall
make: *** No rule to make target 'uninstall'. Stop.
Steps:
systemctl enable --now intel-undervolt-loop.service
systemctl enable --now intel-undervolt.service
ps ax | grep intel-under
3477 ? Ss 0:00 /usr/bin/intel-undervolt daemon
intel-undervolt apply
intel-undervolt read
yields correct settingsintel-undervolt read
yields zero settingsNo reboot was done in the process.
Hello there,
Installing went fine, issue is that I can't issue these commands:
sudo intel-undervolt read
or sudo intel-undervolt apply
They both give me this as response:
CPU (0): Operation not permitted
GPU (1): Operation not permitted
CPU Cache (2): Operation not permitted
System Agent (3): Operation not permitted
Analog I/O (4): Operation not permitted
Altough sudo intel-undervolt measure
is just fine.
Secureboot is disabled.
CPU: i7-4710HQ
https://www.phoronix.com/scan.php?page=news_item&px=Linux-Filter-Tightening-MSRs
Maybe it's worth to collaborate with upstream somehow?
i tried it on linux mint and ubuntu default kernel and not working.
Using cpu Intel core 2 duo and Core 2 quad.
I know nothing about programming. I was able to install and use on mint 18.3 but now on 19.1 the make fails.
xxxx@xxxxxxxx:~/intel-undervolt-master$ sudo make && sudo make install
gcc
-DSYSCONFDIR='"'/etc'"'
-o config.o -c config.c
config.c:1:10: fatal error: fcntl.h: No such file or directory
#include <fcntl.h>
^~~~~~~~~
compilation terminated.
Makefile:13: recipe for target 'config.o' failed
make: *** [config.o] Error 1
Maybe this is a simple fix. I just dont know what I'm looking at.
I have a Thinkad E590 running Ubuntu 18.04 LTS + Intel i3 8145
The setting does seem to work, but the values are not taken into account by my system:
For exemple this Dumb value may be set :
undervolt 0 'CPU' -800.84
undervolt 1 'GPU' -800.84
undervolt 2 'CPU Cache' -100.84
undervolt 3 'System Agent' -120.84
undervolt 4 'Analog I/O' -120.84
Obviousely -800mv seems impossible, but all seem to go find and the read command "reads" the bios values as setted correctly...
Only the 'CPU Cache' value seems to do something, since when I play below - 100 mW it crashes my system.
I am running a 3D game to do the tests
It'd be nice if intel-undervolt measure
showed the results from the i915 driver, which is in the same uj output as the current rapl source. Here's some code I just wrote to do it:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
FILE *f;
uint64_t this_microjoules, last_microjoules = ~UINT64_C(0);
setbuf(stdout, NULL);
f = fopen("/sys/kernel/debug/dri/0/i915_energy_uJ", "r");
if (!f) {
perror("fopen(/sys/kernel/debug/dri/0/i915_energy_uJ)");
return 1;
}
printf("Measuring...");
for (;;) {
if (fscanf(f, "%" PRIu64, &this_microjoules) != 1) {
perror("fscanf");
return 1;
}
rewind(f);
if (last_microjoules != ~UINT64_C(0))
printf("\x1b[0G\x1b[0K%.2f W", (double)(this_microjoules - last_microjoules) / 1000000.0);
last_microjoules = this_microjoules;
sleep(1);
}
return 0;
}
Executing intel-undervolt read or apply results into modprobe: FATAL: Module msr not found in directory /lib/modules/5.4.1-arch1-1
Hi,
I upgraded to Fedora 34 yesterday and I started getting this error when I try to use undervolt
:
Failed to open memory device: Permission denied
Any idea?
Thanks,
Rafid
First: Thank you a lot for the work. i love the tool.
But:
I cannot set any value apart from the CPU voltage:
> sudo intel-undervolt apply
CPU (0): -70.31 mV
Failed to write value for GPU (1)
Failed to write value for CPU Cache (2)
Failed to write value for System Agent (3)
Failed to write value for Analog I/O (4)
When looking into your source i see, that you are calling the tools: ioutils
and regval
Are those dependencies? Do you know where i can install them on archlinux?
Hi, I am on Arch Linux and I cannot shutdown because of this error:
Failed to reboot system via logind: Transaction for reboot.target/start is destructive (intel-undervolt.service has 'start' job queued, but 'stop' is included in transaction).
Failed to talk to init daemon.
Here is the output of systemctl status intel-undervolt
:
● intel-undervolt.service - Intel Undervolt Service
Loaded: loaded (/usr/lib/systemd/system/intel-undervolt.service; enabled; vendor preset: disabled)
Active: inactive (dead
Hi, On ubuntu 19.04, after ./configure
, I got
Package libelogind was not found in the pkg-config search path.
Perhaps you should add the directory containing `libelogind.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libelogind' found
Enable systemd: false
Enable elogind: false
Enable OpenRC: false
So no systemd services are installed. Can you push me in right direction?
CPU: i5-4330M
when setting the tjunction limit, the apply script fails with the following error message:
> sudo intel-undervolt apply
CPU (0): -70.31 mV
GPU (1): -80.08 mV
CPU Cache (2): -70.31 mV
System Agent (3): -0.00 mV
Analog I/O (4): -0.00 mV
Failed to write MSR
Failed to write temperature offset value
when reading the value the script reports
This is a 5.1.9 Kernel.
Modules are loaded:
# lsmod |grep rapl
intel_rapl 16384 0
intel_rapl_perf 12288 0
iosf_mbi 12288 2 intel_rapl,i915
intel-undervolt measure
works, but
Intel-undervolt read
returns Input/output error on all channels.
I have tried installing using the following command
sudo ./configure --enable-systemd --enable-elogind --enable-openrc
but I am getting the following message
Package libelogind was not found in the pkg-config search path. Perhaps you should add the directory containing 'libelogind.pc' to the PKG_CONFIG_PATH environment variable No package 'libelogind' found Failed to configure eloginddir
My system has msr-tools installed and the CPU is Core i7-9750H on Ubuntu 18.04, kernel 4.18.20-041820-generic
Hi there!
What does that message means?
executing: intel-undervolt read, outputs the following:
CPU (0): -128.91 mV
GPU (1): -0.00 mV
CPU Cache (2): -128.91 mV
System Agent (3): -0.00 mV
Analog I/O (4): -0.00 mV
Warning: MSR and memory values are not equal
Short term package power: 45 W, 0.002 s, disabled
Long term package power: 200 W, 28.000 s, enabled
So, i guess everything is working?
Relevant specs:
CPU Model name: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz (skylake)
OS: Arch Linux
Kernel: 5.16.9-arch1-1
Intel-undervolt: 1.7-2
Cheers!
Hello, Whenever I set the analog IO to other value than -0, it will give value do not equal. Is this mean the configuration failed or it's just error reading. Thanks
Conf file
undervolt 0 'CPU' -93
undervolt 1 'GPU' -103
undervolt 2 'CPU Cache' -125
undervolt 3 'System Agent' -100
undervolt 4 'Analog I/O' -0
result
CPU (0): -92.77 mV
GPU (1): -102.54 mV
CPU Cache (2): -125.00 mV
System Agent (3): Values do not equal
Analog I/O (4): -0.00 mV
I am running Linux Manjaro 4.19 and I was wondering how I can automatically start intel-undervolt on start?
I put in the correct values in intel-undervolt.conf, but it doesn't look like these are automatically applied during start.
When reading or applying undervolt settings I get operation not permitted
heylon@heylon-Lenovo-IdeaPad-S145-15IWL:~/git/intel-undervolt$ sudo intel-undervolt read CPU (0): Operation not permitted GPU (1): Operation not permitted CPU Cache (2): Operation not permitted System Agent (3): Operation not permitted Analog I/O (4): Operation not permitted heylon@heylon-Lenovo-IdeaPad-S145-15IWL:~/git/intel-undervolt$ sudo intel-undervolt apply CPU (0): Operation not permitted GPU (1): Operation not permitted CPU Cache (2): Operation not permitted System Agent (3): Operation not permitted Analog I/O (4): Operation not permitted
Trying without sudo and I get:
heylon@heylon-Lenovo-IdeaPad-S145-15IWL:~/git/intel-undervolt$ intel-undervolt apply Failed to open MSR device: Permission denied Failed to setup the program heylon@heylon-Lenovo-IdeaPad-S145-15IWL:~/git/intel-undervolt$ intel-undervolt read Failed to open MSR device: Permission denied Failed to setup the program
Not sure what's the issue
Installed as per instructions on Ubuntu 19.10 running on a laptop with an Intel i7-8565U
There is a different tool on github called lenovo-throttling-fix.
Its doing the same and more. How about joining the effort on that one?
Version 1.6 builds and works fine but new one 1.7 wont built with default Fedora flags.
gcc -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -o intel-undervolt config.o measure.o main.o modes.o power.o scaling.o stat.o undervolt.o util.o -lm
/usr/bin/ld: config.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: measure.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: main.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: modes.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: power.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: scaling.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: stat.o: relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: undervolt.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: util.o: relocation R_X86_64_32 against `.bss' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: nonrepresentable section on output
collect2: error: ld returned 1 exit status
For some reason after full load, CPU force frequency to ~1.2Ghz to keep 50^C. The only way to fix this - execute once https://github.com/erpalma/throttled.
Also tjunction is not applied after executing intel-undervolt apply. I.e. the value is the one from the config, but the actual temperature limit is not changed. Throttled somehow managed to change that
When I try to run systemctl enable --now intel-undervolt-loop.service
it returns:
"Synchronizing state of intel-undervolt-loop.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable intel-undervolt-loop
update-rc.d: error: intel-undervolt-loop Default-Start contains no runlevels, aborting."
This seems to result in me being unable to use the service, so only the main command and daemon have any degree of persistence.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.