The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.

    open source project intel cpu throttle control

    Discussion in 'Hardware Components and Aftermarket Upgrades' started by thomson, Jan 1, 2015.

  1. thomson

    thomson Newbie

    Reputations:
    0
    Messages:
    7
    Likes Received:
    2
    Trophy Points:
    6
    Here are the binary and source files: https://www.mediafire.com/folder/h0alg5q8agx87/OpenCPUControl

    Release_alpha_0_2.zip is the binary, download and extract and run OpenHardwareMonitor.exe , you will need .net 4 runtime since I upgraded the open hardware monitor code from .net 2
    the other zip is the full source file

    I get the multiplier set working so you should be able to request the highest multiplier to be used , same as TS you need to set power policy to max performance.
    I also put a turboboost disable/enable checkbox to control turboboost

    screenshot:
    8odz5TL.png

    don't complain the UI since I haven't had much time yet, on 1st run you won't see the extra buttons so you need to resize by expanding the window to the right or maximize the window, next time it will remember the window size

    min and max multiplier values are loaded by default but not the turbo ratio, you need to click the get turbo max button to load the multiplier value for turboboost, after you should be able to see the ratio to turbo if you go up

    press the set multiplier button to request the multiplier selected

    when you quit the program I suggest you change back the multiplier to max before you quit and change power policy to balance. I believe changing power policy to balance is enough to reset , if still has issue you could try using TS or reboot

    Limitations for the time being:
    -open hardware monitor uses the regular .net timer so data refresh a lot slower than TS or even task manager (the Win 8 one which show you cpu speed), if you need more accurate values just run TS6 or task manager in win8
    - cpu multiplier set only support SandyBridge & potential later generations
    -I only tested using my sandy bridge cpu 2670qm so your mileages may varies and I don't hold responsibility for any issue, that said this tool does not disable any thermal protection so is pretty safe

    change log:
    v0.2
    - added Lock max checkbox which will attempt to re-request max multiplier during refresh in case the value got reset by wndows , checking this should make the set multiplier change mostly persistent
    - display all thread multiplier value instead of only the non-HT thread

    v0.1
    initial

    -----------History line --------------------------------------------------------

    well given there is no more TS7, I am planning to create a open source alternative instead since I need to control my laptop cpu (i7 2670qm -y470/gt550m) so I can play fsx smoothly without cpu cycle from max to min due to heat throttle

    I am going to base my code on Open Hardware Monitor - Core temp, fan speed and voltages in a free software gadget since they are the one created the winring0 driver that allow us(including TS) read/write msr (model specific register) to control cpu. I am familiar with C# and able to read low level code like C for reference

    my 1st aim is to able to control cpu speed through FID and this would be only for core i series for now (since I only have a i7 2670qm and i5 (work laptop - t430s i5 3320m) )
    Updated Status : this is done!:

    -to start with I am going add display for FID to openhardwaremonitor to get myself familiar with the msr function provided by WinRing0 Status: Done:
    -after able to read FID I will look at adding control FID/turboost Status Done:

    There is no timeline but I am positive given all the public information available I think we will be able to achieve this Status Status first alpha version done:

    after I am able to read msr I will provide/setup code repository, it will be a fork of current openhardwaremonitor

    Reference material for technical people:
    intel manual including msr usage
    Intel® 64 and IA-32 Architectures Software Developer’s Manual V3 - chapter 35

    https://communities.intel.com/thread/27660
    https://software.intel.com/en-us/forums/topic/405640
    https://software.intel.com/en-us/forums/topic/533803
    linux - Understanding Processor Frequency part of cat /proc/cpuinfo - Super User
    Linux source code for cpu frequency control for reference
    https://github.com/torvalds/linux/blob/master/drivers/cpufreq/intel_pstate.c
     

    Attached Files:

    Last edited: Jan 2, 2015
  2. i_pk_pjers_i

    i_pk_pjers_i Even the ppl who never frown eventually break down

    Reputations:
    205
    Messages:
    1,033
    Likes Received:
    597
    Trophy Points:
    131
    Can you also add voltage control like TS had?
     
  3. thomson

    thomson Newbie

    Reputations:
    0
    Messages:
    7
    Likes Received:
    2
    Trophy Points:
    6
    unsure yet because from what I read VID is controlled by motherboard, well it is too early stage until I have figure how to control FID then we can go from there. Probably need to see if linux has any code to do VID control and use it as a reference
     
  4. thomson

    thomson Newbie

    Reputations:
    0
    Messages:
    7
    Likes Received:
    2
    Trophy Points:
    6
    added 1st version which allow one to request multiplier and disable/enable turboboost, see 1st post for detail
     
  5. thomson

    thomson Newbie

    Reputations:
    0
    Messages:
    7
    Likes Received:
    2
    Trophy Points:
    6
    posted 0.2 which add a checkbox to attempt to keep the max multiplier by re-requesting when values is increased by windows
     
  6. zaczac

    zaczac Notebook Enthusiast

    Reputations:
    0
    Messages:
    41
    Likes Received:
    3
    Trophy Points:
    16
    great work so far, not very useful to me without voltage control though. I'm sure many users will find this useful now that TS is no longer being developed. :D
     
  7. thomson

    thomson Newbie

    Reputations:
    0
    Messages:
    7
    Likes Received:
    2
    Trophy Points:
    6
    unfortunately I currently don't have a cpu that can adjust voltage, I believe only haswell allow voltage change?

    that said this is a far stretch from current progress, the intention of this project is more a proof of concept and provide a reference implementation that people can work/tinker with. (so if it is no longer developed people can pick it up)

    a lot of major work still need to be done to catch up to TS

    e,g
    -high resolution timer
    -accurate report of multiplier and clock speed (at least catch up to win 8 task manager accuracy for cpu speed reporting)
    -C0 % spent
    -power saver
    -multiple profiles

    I would also like to add a more fine grain control of multiplier (similar to TS profile switching but TS only allow you to switch to 1 profile on 1 cpu or gpu temp (, I am thinking a step control which slowly reduce cpu speed to find the optimal speed without cpu throttle kick in. This could be done after I rewrite the current code with a high resolution timer & accurate data report

    voltage control I can only do if someone provide the information on how + have access to cpu to test, low priority for me now since I only have a sandy bridge i7

    The good thing is if code is available from linux it is easy to port over (much of the multiplier set/turbotboost control I added are based on linux intel_pstate code)

    so ya at this point I am still in catch up phase but at least we have a codebase to start with
     
  8. TomJGX

    TomJGX I HATE BGA!

    Reputations:
    1,456
    Messages:
    8,707
    Likes Received:
    3,315
    Trophy Points:
    431
    I have a 3940XM and will be testing this tomorrow.. Will let you know if there are any areas for improvement :)..
     
  9. CyrusB

    CyrusB Notebook Consultant

    Reputations:
    25
    Messages:
    122
    Likes Received:
    0
    Trophy Points:
    30
    Works great on my HP 840 G1 Laptop! It has a Intel Core i7-4600U CPU. Will give it a test on my tri-core i7 desktop at home later on. Thanks!
     
  10. octiceps

    octiceps Nimrod

    Reputations:
    3,147
    Messages:
    9,944
    Likes Received:
    4,194
    Trophy Points:
    431
    Since when has a tri-core i7 existed?
     
  11. CyrusB

    CyrusB Notebook Consultant

    Reputations:
    25
    Messages:
    122
    Likes Received:
    0
    Trophy Points:
    30
  12. TomJGX

    TomJGX I HATE BGA!

    Reputations:
    1,456
    Messages:
    8,707
    Likes Received:
    3,315
    Trophy Points:
    431
  13. CyrusB

    CyrusB Notebook Consultant

    Reputations:
    25
    Messages:
    122
    Likes Received:
    0
    Trophy Points:
    30
    Ah, well there you go, I nearly had it..... and by nearly I mean not at all :) And I know what you are thinking, man it must be a long trip home as he hasnt posted results. Well my trusty home pc steed decided to have a small holiday from actually working, so my feedback probably ends with jsut the results from my HP 840 G1 laptop, which is more important anyway, as it throttles like a without outside assistance!