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

The name of the pictureThe name of the pictureThe name of the pictureClash 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_freq


  • Using 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?







share|improve this question


























    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_freq


    • Using 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?







    share|improve this question
























      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_freq


      • Using 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?







      share|improve this question














      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_freq


      • Using 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?









      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 15 '17 at 14:37

























      asked Nov 12 '17 at 14:31









      Hermanio

      439




      439




















          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:
          intel-gpu-overlay results



          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






          share|improve this answer






















            Your Answer







            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "106"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: false,
            noModals: false,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            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






























            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:
            intel-gpu-overlay results



            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






            share|improve this answer


























              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:
              intel-gpu-overlay results



              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






              share|improve this answer
























                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:
                intel-gpu-overlay results



                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






                share|improve this answer














                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:
                intel-gpu-overlay results



                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







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 12 '17 at 20:00

























                answered Nov 12 '17 at 19:42









                Hermanio

                439




                439



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    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













































































                    Popular posts from this blog

                    Peggy Mitchell

                    Palaiologos

                    The Forum (Inglewood, California)