How to stop Intel HD4000 from running at max clock speed?

Clash Royale CLAN TAG#URR8PPP
up vote
2
down vote
favorite
I have run into a bit of trouble trying to force the Intel HD4000 iGPU to run at a lower clock speed to save power.
What I have tried so far:
Seems to "stick" but has no real effect from my testing:
echo 350 > /sys/kernel/debug/dri/0/i915_max_freqUsing https://github.com/jmechnich/intel-power-control to control the clock speeds. Setting the maximum clock speed to 350MHz would work when no load was on the iGPU but loading some graphics-heavy workload (like a WebGL demo in the browser) would instantly push the current clock speed to 1250MHz. Minimum and maximum are still reported as 350MHz, though.
Edit: project maintainer has introduced a fix to this issue, changing the clocks works now.Monitoring iGPU load with intel-gpu-overlay (part of package
intel-gpu-tools) , in idle workloads the clock speed was at 350MHz but any load causes either short bursts to 1250MHz or in longer heavy loads constant 1250MHz load.
Tested on Arch Linux, kernel 4.13.11-1-ARCH, Thinkpad T430 with Intel i7-3820QM CPU with Intel HD4000, no dGPU.
Is there something I'm missing here? What else can I try to force the iGPU to not clock higher than 350MHz?
linux arch-linux power-management intel-graphics thinkpad
add a comment |Â
up vote
2
down vote
favorite
I have run into a bit of trouble trying to force the Intel HD4000 iGPU to run at a lower clock speed to save power.
What I have tried so far:
Seems to "stick" but has no real effect from my testing:
echo 350 > /sys/kernel/debug/dri/0/i915_max_freqUsing https://github.com/jmechnich/intel-power-control to control the clock speeds. Setting the maximum clock speed to 350MHz would work when no load was on the iGPU but loading some graphics-heavy workload (like a WebGL demo in the browser) would instantly push the current clock speed to 1250MHz. Minimum and maximum are still reported as 350MHz, though.
Edit: project maintainer has introduced a fix to this issue, changing the clocks works now.Monitoring iGPU load with intel-gpu-overlay (part of package
intel-gpu-tools) , in idle workloads the clock speed was at 350MHz but any load causes either short bursts to 1250MHz or in longer heavy loads constant 1250MHz load.
Tested on Arch Linux, kernel 4.13.11-1-ARCH, Thinkpad T430 with Intel i7-3820QM CPU with Intel HD4000, no dGPU.
Is there something I'm missing here? What else can I try to force the iGPU to not clock higher than 350MHz?
linux arch-linux power-management intel-graphics thinkpad
add a comment |Â
up vote
2
down vote
favorite
up vote
2
down vote
favorite
I have run into a bit of trouble trying to force the Intel HD4000 iGPU to run at a lower clock speed to save power.
What I have tried so far:
Seems to "stick" but has no real effect from my testing:
echo 350 > /sys/kernel/debug/dri/0/i915_max_freqUsing https://github.com/jmechnich/intel-power-control to control the clock speeds. Setting the maximum clock speed to 350MHz would work when no load was on the iGPU but loading some graphics-heavy workload (like a WebGL demo in the browser) would instantly push the current clock speed to 1250MHz. Minimum and maximum are still reported as 350MHz, though.
Edit: project maintainer has introduced a fix to this issue, changing the clocks works now.Monitoring iGPU load with intel-gpu-overlay (part of package
intel-gpu-tools) , in idle workloads the clock speed was at 350MHz but any load causes either short bursts to 1250MHz or in longer heavy loads constant 1250MHz load.
Tested on Arch Linux, kernel 4.13.11-1-ARCH, Thinkpad T430 with Intel i7-3820QM CPU with Intel HD4000, no dGPU.
Is there something I'm missing here? What else can I try to force the iGPU to not clock higher than 350MHz?
linux arch-linux power-management intel-graphics thinkpad
I have run into a bit of trouble trying to force the Intel HD4000 iGPU to run at a lower clock speed to save power.
What I have tried so far:
Seems to "stick" but has no real effect from my testing:
echo 350 > /sys/kernel/debug/dri/0/i915_max_freqUsing https://github.com/jmechnich/intel-power-control to control the clock speeds. Setting the maximum clock speed to 350MHz would work when no load was on the iGPU but loading some graphics-heavy workload (like a WebGL demo in the browser) would instantly push the current clock speed to 1250MHz. Minimum and maximum are still reported as 350MHz, though.
Edit: project maintainer has introduced a fix to this issue, changing the clocks works now.Monitoring iGPU load with intel-gpu-overlay (part of package
intel-gpu-tools) , in idle workloads the clock speed was at 350MHz but any load causes either short bursts to 1250MHz or in longer heavy loads constant 1250MHz load.
Tested on Arch Linux, kernel 4.13.11-1-ARCH, Thinkpad T430 with Intel i7-3820QM CPU with Intel HD4000, no dGPU.
Is there something I'm missing here? What else can I try to force the iGPU to not clock higher than 350MHz?
linux arch-linux power-management intel-graphics thinkpad
edited Nov 15 '17 at 14:37
asked Nov 12 '17 at 14:31
Hermanio
439
439
add a comment |Â
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
3
down vote
accepted
The correct way of doing this is by using these two commands:
echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz
350 is the minimum frequency that the iGPU supports.
gt_boost_freq_mhz controls the boost clock (default 1250MHz)
gt_max_freq_mhz controls the nominal max clock speed (default 650MHz)
Note: max and boost clocks may vary between models. Use the following to find out your supported boost, max and min clock speeds:
cat /sys/class/drm/card0/gt_RP0_freq_mhz for boost clock
cat /sys/class/drm/card0/gt_RP1_freq_mhz for max clock
cat /sys/class/drm/card0/gt_RPn_freq_mhz for min clock
If the boost clock is higher than the max clock speed then the GPU will most likely run at the boost clock speeds (default 1250MHz).
Here is an example of setting the boost and max clocks to 800MHz and after some time under load to 350MHz. The frequency and power usage clearly drop in the bottom left graph of the overlay:
This could possibly work with other GPU-s (Intel HD 3000 and newer) but that needs to be tested.
Source:
Reddit post by user qgnox
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
The correct way of doing this is by using these two commands:
echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz
350 is the minimum frequency that the iGPU supports.
gt_boost_freq_mhz controls the boost clock (default 1250MHz)
gt_max_freq_mhz controls the nominal max clock speed (default 650MHz)
Note: max and boost clocks may vary between models. Use the following to find out your supported boost, max and min clock speeds:
cat /sys/class/drm/card0/gt_RP0_freq_mhz for boost clock
cat /sys/class/drm/card0/gt_RP1_freq_mhz for max clock
cat /sys/class/drm/card0/gt_RPn_freq_mhz for min clock
If the boost clock is higher than the max clock speed then the GPU will most likely run at the boost clock speeds (default 1250MHz).
Here is an example of setting the boost and max clocks to 800MHz and after some time under load to 350MHz. The frequency and power usage clearly drop in the bottom left graph of the overlay:
This could possibly work with other GPU-s (Intel HD 3000 and newer) but that needs to be tested.
Source:
Reddit post by user qgnox
add a comment |Â
up vote
3
down vote
accepted
The correct way of doing this is by using these two commands:
echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz
350 is the minimum frequency that the iGPU supports.
gt_boost_freq_mhz controls the boost clock (default 1250MHz)
gt_max_freq_mhz controls the nominal max clock speed (default 650MHz)
Note: max and boost clocks may vary between models. Use the following to find out your supported boost, max and min clock speeds:
cat /sys/class/drm/card0/gt_RP0_freq_mhz for boost clock
cat /sys/class/drm/card0/gt_RP1_freq_mhz for max clock
cat /sys/class/drm/card0/gt_RPn_freq_mhz for min clock
If the boost clock is higher than the max clock speed then the GPU will most likely run at the boost clock speeds (default 1250MHz).
Here is an example of setting the boost and max clocks to 800MHz and after some time under load to 350MHz. The frequency and power usage clearly drop in the bottom left graph of the overlay:
This could possibly work with other GPU-s (Intel HD 3000 and newer) but that needs to be tested.
Source:
Reddit post by user qgnox
add a comment |Â
up vote
3
down vote
accepted
up vote
3
down vote
accepted
The correct way of doing this is by using these two commands:
echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz
350 is the minimum frequency that the iGPU supports.
gt_boost_freq_mhz controls the boost clock (default 1250MHz)
gt_max_freq_mhz controls the nominal max clock speed (default 650MHz)
Note: max and boost clocks may vary between models. Use the following to find out your supported boost, max and min clock speeds:
cat /sys/class/drm/card0/gt_RP0_freq_mhz for boost clock
cat /sys/class/drm/card0/gt_RP1_freq_mhz for max clock
cat /sys/class/drm/card0/gt_RPn_freq_mhz for min clock
If the boost clock is higher than the max clock speed then the GPU will most likely run at the boost clock speeds (default 1250MHz).
Here is an example of setting the boost and max clocks to 800MHz and after some time under load to 350MHz. The frequency and power usage clearly drop in the bottom left graph of the overlay:
This could possibly work with other GPU-s (Intel HD 3000 and newer) but that needs to be tested.
Source:
Reddit post by user qgnox
The correct way of doing this is by using these two commands:
echo 350 | sudo tee /sys/class/drm/card0/gt_boost_freq_mhz
echo 350 | sudo tee /sys/class/drm/card0/gt_max_freq_mhz
350 is the minimum frequency that the iGPU supports.
gt_boost_freq_mhz controls the boost clock (default 1250MHz)
gt_max_freq_mhz controls the nominal max clock speed (default 650MHz)
Note: max and boost clocks may vary between models. Use the following to find out your supported boost, max and min clock speeds:
cat /sys/class/drm/card0/gt_RP0_freq_mhz for boost clock
cat /sys/class/drm/card0/gt_RP1_freq_mhz for max clock
cat /sys/class/drm/card0/gt_RPn_freq_mhz for min clock
If the boost clock is higher than the max clock speed then the GPU will most likely run at the boost clock speeds (default 1250MHz).
Here is an example of setting the boost and max clocks to 800MHz and after some time under load to 350MHz. The frequency and power usage clearly drop in the bottom left graph of the overlay:
This could possibly work with other GPU-s (Intel HD 3000 and newer) but that needs to be tested.
Source:
Reddit post by user qgnox
edited Nov 12 '17 at 20:00
answered Nov 12 '17 at 19:42
Hermanio
439
439
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f404049%2fhow-to-stop-intel-hd4000-from-running-at-max-clock-speed%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password