Jump to content

Power management for Sandy/Ivy Bridge/Haswell CPUs


Pimentel
 Share

533 posts in this topic

Recommended Posts

Hello!

 

No harm meant with this comment. Sometimes I am believing to be back in kindergarden with the childish challenge: "I am able to generate more C-states then a Cpu in real Intel data sheets has!" :hysterical:

 

Have fun.

Link to comment
Share on other sites

Hello

 

But sometimes C-States influence the performance of the CPU compared to PSU, not allowing the passage of a few watts of power, but as you said:
 

I think more or less C-states, don´t really matter on a desktop system. More important is to have a smooth and stable running system without being suffered from KP with full and proper working PM. The lowest and highest C-states should get available reached, when needed.

So if you already have a very good power management with several P-States, there is no need to be so worried about C-States

Link to comment
Share on other sites

Good notes. I was reading and appears it's not up to date for Haswell and new smbios and video cards.

 

 

Hello!

 

No harm meant with this comment. Sometimes I am believing to be back in kindergarden with the childish challenge: "I am able to generate more C-states then a Cpu in real Intel data sheets has!" :hysterical:

 

Have fun.

Link to comment
Share on other sites

Hello

I was reading and appears it's not up to date for Haswell and new smbios and video cards.

 

Don't worries picasso... Haswell comes very clean(when you don't need patch kernel)

 

The proceedement to get full pm in Haswell is the same o 2nd and 3th generation... don't have changes almost... SSDT scripit work fine for Haswell

 

But.... in what place you read this? Please share with us :)

Link to comment
Share on other sites

Hello

Don't worries picasso... Haswell comes very clean(when you don't need patch kernel)

 

The proceedement to get full pm in Haswell is the same o 2nd and 3th generation... don't have changes almost... SSDT scripit work fine for Haswell

 

But.... in what place you read this? Please share with us :)

 

Here, all in Insanely!

 

- Kernel works, but you need apply a patch, if you have loops. 

- SSDT script + copy smbios Mac Pro 6.1 to others smbios. (If you over clocked, use @)

- NvdaStartup needs to be modified. AICPUM too.

 

(10.9.4) New Trim for SSD, New HDA

 

Too much "commands solution" for a world where Windows 3.11 it's old! hahahaha! (I know it's free and cheap).

But sometimes it's better don't upgrade to much from 10.9 and wait for very big updates (don't go crazy for 10.9.3, 4, 5, 6, , you know?).

 

I hope someone can automatise all this things you have to do every upgrade.

  • Like 1
Link to comment
Share on other sites

Hello

 

Please make these steps:

 

Install Clover as bootloader...

If your mobo has uefi please enable this option in bios... and install Clover in UEFI mode...

 

After that use Hackintosh Vietnam to configure... follow this steps:

 

* In the section CPU choose the CPU/Model of your computer (it will serve to create your SMBIOS within config.plist file) 
* In SSDT section, select the Custom option, one config.plist will be created on your desktop and you put that in config.plist EFI/Clover/folder 
* In Section Kext select AICPUPM patch (something like that lol) to correct AICPUPM and make OSX work well for you ... 
* In section Grafik select an ideal option for your grafica intel ... up to you to configure and view the model description and screen resolution 
* After selecting some important settings, but does not select anything useless or will mess up all your hard work 
* If I am not mistaken in section Kext has the option to install FakeSMC, install this kext because it is very important for OSX and is the only kext really necessary. 
* In the Tools section, select generate SSDT, SSDT will be generated in Extra folder dento HDD folder, take that extra SSDT folder and put the EFI/Clover/ACPI/patched folder and then remove the Extra folder
 
Make them all ;)
  • Like 1
Link to comment
Share on other sites

For those wondering how I managed to get all the p-states from post #77. I used PikerRAlpha's script as below:
 
 
 
curl -o ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/master/ssdtPRGen.sh
chmod +x ssdtPRGen.sh
./ssdtPRGen.sh -turbo 4800 -t 77 -w 2 -x 1

 

I have attached also my config.plist. I have never patched the kernel or the AICPUPM.kext since 10.9.1 as clover does this on the fly by removing the need to access the locked CPU registers. 

config.zip

  • Like 1
Link to comment
Share on other sites

I am trying to achieve native power management with only config.plist, without SSDT.aml. In a vanilla config.plist (attached) I have set KernelCpu, KernelPm, EnableC2, EnableC4, EnableC7, along with some other unrelated(?) patches to true.

 

I am running OS X 10.10 DP5.

 

Intel's Power Gadget (version 3.0.1) shows reasonable values, averaging around 2GHz.

 

HWMonitor (version 6.10.1323), on the other hand, returns NO values between 792MHz and 3.17GHz. Sometimes it spikes all the way up to 12.28GHz (!) (see attachments). I do not know if I should be worried. Have any of you an idea as to what is causing it? Is the issue HWMonitor, maybe?

 

Output of sudo dmesg | grep AICPUPMI (version 4.0.0):

bash-3.2$ sudo dmesg | grep AICPUPMI
AICPUPMI: MWAIT C-States.....................: 270624
AICPUPMI: MSR_CORE_THREAD_COUNT......(0x35)  : 0x40004
AICPUPMI: MSR_PLATFORM_INFO..........(0xCE)  : 0x80838F3012000
AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x18000402
AICPUPMI: MSR_PMG_IO_CAPTURE_BASE....(0xE4)  : 0x1814
AICPUPMI: IA32_MPERF.................(0xE7)  : 0x115498C7BF
AICPUPMI: IA32_APERF.................(0xE8)  : 0x10E81BC42C
AICPUPMI: MSR_FLEX_RATIO.............(0x194) : 0x0
AICPUPMI: MSR_IA32_PERF_STATUS.......(0x198) : 0x241300002200
AICPUPMI: MSR_IA32_PERF_CONTROL......(0x199) : 0x2400
AICPUPMI: IA32_CLOCK_MODULATION......(0x19A) : 0x0
AICPUPMI: IA32_THERM_STATUS..........(0x19C) : 0x88360000
AICPUPMI: IA32_MISC_ENABLES..........(0x1A0) : 0x850089
AICPUPMI: MSR_MISC_PWR_MGMT..........(0x1AA) : 0x1
AICPUPMI: MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x22232424
AICPUPMI: IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x5
AICPUPMI: MSR_POWER_CTL..............(0x1FC) : 0x4005F
AICPUPMI: MSR_RAPL_POWER_UNIT........(0x606) : 0xA0E03
AICPUPMI: MSR_PKG_POWER_LIMIT........(0x610) : 0xFFD00000EA82
AICPUPMI: MSR_PKG_ENERGY_STATUS......(0x611) : 0xA89BD5
AICPUPMI: MSR_PKGC3_IRTL.............(0x60a) : 0x8842
AICPUPMI: MSR_PKGC6_IRTL.............(0x60b) : 0x886A
AICPUPMI: MSR_PKGC7_IRTL.............(0x60c) : 0x8891
AICPUPMI: MSR_PP0_CURRENT_CONFIG.....(0x601) : 0x1F40
AICPUPMI: MSR_PP0_POWER_LIMIT........(0x638) : 0xFFD0
AICPUPMI: MSR_PP0_ENERGY_STATUS......(0x639) : 0x5DF634
AICPUPMI: MSR_PP0_POLICY.............(0x63a) : 0x0
AICPUPMI: MSR_CONFIG_TDP_NOMINAL.....(0x648) : 0x20
AICPUPMI: MSR_CONFIG_TDP_LEVEL1......(0x649) : 0x0
AICPUPMI: MSR_CONFIG_TDP_LEVEL2......(0x64a) : 0x0
AICPUPMI: MSR_CONFIG_TDP_CONTROL.....(0x64b) : 0x80000000
AICPUPMI: MSR_TURBO_ACTIVATION_RATIO.(0x64c) : 0x0
AICPUPMI: MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x0
AICPUPMI: MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x0
AICPUPMI: MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x0
AICPUPMI: MSR_PKG_C7_RESIDENCY.......(0x3fa) : 0x0
AICPUPMI: CPU Low Frequency Mode.............: 800 MHz
AICPUPMI: CPU Maximum non-Turbo Frequency....: 3200 MHz
AICPUPMI: CPU Maximum Turbo Frequency........: 3600 MHz
AICPUPMI: CPU P-States [ (32) 34 36 ]
AICPUPMI: CPU C7-Cores [ 0 3 ]
AICPUPMI: CPU P-States [ (8) 32 33 34 36 ]
AICPUPMI: CPU C7-Cores [ 0 2 3 ]
AICPUPMI: CPU C7-Cores [ 0 1 2 3 ]
AICPUPMI: CPU C3-Cores [ 0 ]
AICPUPMI: CPU C3-Cores [ 0 1 ]
AICPUPMI: CPU P-States [ 8 32 33 34 (35) 36 ]
AICPUPMI: CPU C3-Cores [ 0 1 2 3 ]
AICPUPMI: CPU P-States [ 8 26 (32) 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 22 26 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 2 ]
AICPUPMI: CPU P-States [ (8) 22 26 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 2 3 ]
AICPUPMI: CPU P-States [ (8) 22 24 26 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 0 2 3 ]
AICPUPMI: CPU P-States [ 8 22 24 26 27 (32) 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 22 24 26 27 28 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 0 1 2 3 ]
AICPUPMI: CPU P-States [ (8) 21 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 21 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 21 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 21 22 24 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 21 22 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 21 22 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]

and after sleeping the computer for 2 minutes, another line is added:

AICPUPMI: CPU P-States [ 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 (36) ]

A final thought, judging from the data above, is it safe to assume that my C-states are working?

config.plist.zip

post-1199515-0-99204200-1407243193_thumb.png

post-1199515-0-26552300-1407243201_thumb.png

post-1199515-0-85162100-1407243209_thumb.png

post-1199515-0-08949100-1407243217_thumb.png

post-1199515-0-87028000-1407243744_thumb.png

  • Like 1
Link to comment
Share on other sites

I am trying to achieve native power management with only config.plist, without SSDT.aml. In a vanilla config.plist (attached) I have set KernelCpu, KernelPm, EnableC2, EnableC4, EnableC7, along with some other unrelated(?) patches to true.

 

I am running OS X 10.10 DP5.

 

Intel's Power Gadget (version 3.0.1) shows reasonable values, averaging around 2GHz.

 

HWMonitor (version 6.10.1323), on the other hand, returns NO values between 792MHz and 3.17GHz. Sometimes it spikes all the way up to 12.28GHz (!) (see attachments). I do not know if I should be worried. Have any of you an idea as to what is causing it? Is the issue HWMonitor, maybe?

 

Output of sudo dmesg | grep AICPUPMI (version 4.0.0):

bash-3.2$ sudo dmesg | grep AICPUPMI
AICPUPMI: MWAIT C-States.....................: 270624
AICPUPMI: MSR_CORE_THREAD_COUNT......(0x35)  : 0x40004
AICPUPMI: MSR_PLATFORM_INFO..........(0xCE)  : 0x80838F3012000
AICPUPMI: MSR_PMG_CST_CONFIG_CONTROL.(0xE2)  : 0x18000402
AICPUPMI: MSR_PMG_IO_CAPTURE_BASE....(0xE4)  : 0x1814
AICPUPMI: IA32_MPERF.................(0xE7)  : 0x115498C7BF
AICPUPMI: IA32_APERF.................(0xE8)  : 0x10E81BC42C
AICPUPMI: MSR_FLEX_RATIO.............(0x194) : 0x0
AICPUPMI: MSR_IA32_PERF_STATUS.......(0x198) : 0x241300002200
AICPUPMI: MSR_IA32_PERF_CONTROL......(0x199) : 0x2400
AICPUPMI: IA32_CLOCK_MODULATION......(0x19A) : 0x0
AICPUPMI: IA32_THERM_STATUS..........(0x19C) : 0x88360000
AICPUPMI: IA32_MISC_ENABLES..........(0x1A0) : 0x850089
AICPUPMI: MSR_MISC_PWR_MGMT..........(0x1AA) : 0x1
AICPUPMI: MSR_TURBO_RATIO_LIMIT......(0x1AD) : 0x22232424
AICPUPMI: IA32_ENERGY_PERF_BIAS......(0x1B0) : 0x5
AICPUPMI: MSR_POWER_CTL..............(0x1FC) : 0x4005F
AICPUPMI: MSR_RAPL_POWER_UNIT........(0x606) : 0xA0E03
AICPUPMI: MSR_PKG_POWER_LIMIT........(0x610) : 0xFFD00000EA82
AICPUPMI: MSR_PKG_ENERGY_STATUS......(0x611) : 0xA89BD5
AICPUPMI: MSR_PKGC3_IRTL.............(0x60a) : 0x8842
AICPUPMI: MSR_PKGC6_IRTL.............(0x60b) : 0x886A
AICPUPMI: MSR_PKGC7_IRTL.............(0x60c) : 0x8891
AICPUPMI: MSR_PP0_CURRENT_CONFIG.....(0x601) : 0x1F40
AICPUPMI: MSR_PP0_POWER_LIMIT........(0x638) : 0xFFD0
AICPUPMI: MSR_PP0_ENERGY_STATUS......(0x639) : 0x5DF634
AICPUPMI: MSR_PP0_POLICY.............(0x63a) : 0x0
AICPUPMI: MSR_CONFIG_TDP_NOMINAL.....(0x648) : 0x20
AICPUPMI: MSR_CONFIG_TDP_LEVEL1......(0x649) : 0x0
AICPUPMI: MSR_CONFIG_TDP_LEVEL2......(0x64a) : 0x0
AICPUPMI: MSR_CONFIG_TDP_CONTROL.....(0x64b) : 0x80000000
AICPUPMI: MSR_TURBO_ACTIVATION_RATIO.(0x64c) : 0x0
AICPUPMI: MSR_PKG_C2_RESIDENCY.......(0x60d) : 0x0
AICPUPMI: MSR_PKG_C3_RESIDENCY.......(0x3f8) : 0x0
AICPUPMI: MSR_PKG_C6_RESIDENCY.......(0x3f9) : 0x0
AICPUPMI: MSR_PKG_C7_RESIDENCY.......(0x3fa) : 0x0
AICPUPMI: CPU Low Frequency Mode.............: 800 MHz
AICPUPMI: CPU Maximum non-Turbo Frequency....: 3200 MHz
AICPUPMI: CPU Maximum Turbo Frequency........: 3600 MHz
AICPUPMI: CPU P-States [ (32) 34 36 ]
AICPUPMI: CPU C7-Cores [ 0 3 ]
AICPUPMI: CPU P-States [ (8) 32 33 34 36 ]
AICPUPMI: CPU C7-Cores [ 0 2 3 ]
AICPUPMI: CPU C7-Cores [ 0 1 2 3 ]
AICPUPMI: CPU C3-Cores [ 0 ]
AICPUPMI: CPU C3-Cores [ 0 1 ]
AICPUPMI: CPU P-States [ 8 32 33 34 (35) 36 ]
AICPUPMI: CPU C3-Cores [ 0 1 2 3 ]
AICPUPMI: CPU P-States [ 8 26 (32) 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 22 26 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 2 ]
AICPUPMI: CPU P-States [ (8) 22 26 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 2 3 ]
AICPUPMI: CPU P-States [ (8) 22 24 26 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 0 2 3 ]
AICPUPMI: CPU P-States [ 8 22 24 26 27 (32) 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 22 24 26 27 28 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU C6-Cores [ 0 1 2 3 ]
AICPUPMI: CPU P-States [ (8) 21 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 21 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 21 22 24 26 27 28 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 21 22 24 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 21 22 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 21 22 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]
AICPUPMI: CPU P-States [ (8) 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ]

and after sleeping the computer for 2 minutes, another line is added:

AICPUPMI: CPU P-States [ 8 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 (36) ]

A final thought, judging from the data above, is it safe to assume that my C-states are working?

Very good work!

 

- HWM never works fine. Even in your SSD (lifetime 258%) - in my case is the same. For check PM it's very slow - each 1 second.

- Remember INTEL Power Gadget, in preferences, you can adjust to get more result and export in a .cvs all the information.

 

If you can export that sheet, It's a better proof! 

Link to comment
Share on other sites

Very good work!

 

- HWM never works fine. Even in your SSD (lifetime 258%) - in my case is the same. For check PM it's very slow - each 1 second.

- Remember INTEL Power Gadget, in preferences, you can adjust to get more result and export in a .cvs all the information.

 

If you can export that sheet, It's a better proof! 

Bad news… the log shows nothing between 800MHz and 3.2GHz…

Who should I trust?  :ph34r:

PwrData_2014-08-07_19-32-25.csv.zip

Link to comment
Share on other sites

Bad news… the log shows nothing between 800MHz and 3.2GHz…

Who should I trust?  :ph34r:

attachicon.gifPwrData_2014-08-07_19-32-25.csv.zip

 

It's not working.

The graphs are not a secure way. If you have not PM working are very similar.

Buy you have a low value and high, you don't have to worry that everything it's working bad.

 

In my opinion Graphic Card Power Management it's more important. After use  Final Cut, VLC or Preview stay at high values and overheat all the CPU, short the life of everything and a lot of crashes in the softwares. I get work efficiency only nvidia cards in mavericks with nvidia drivers. The differences it's huge, because work toquether with the processor. You "hear" the machine working high, medium, low and it's more stable.

Link to comment
Share on other sites

  • 1 month later...

 Allaп

thank you for having responded  

i followed the first and second part in first post
1)creation of ssdt
2)i patched  appleintelcpupowermanagement.kext

+ test with appleintelcpupowermanagementinfo.kext

 

the cpu is not overclocked

Link to comment
Share on other sites

 Share

×
×
  • Create New...