DragonFly power management stuffs

Bob Bishop rb at gid.co.uk
Thu Jul 23 02:27:43 PDT 2015


Hi,

> On 23 Jul 2015, at 02:22, Sepherosa Ziehau <sepherosa at gmail.com> wrote:
> 
> First of all, I'd like to introduce the major power management
> stuffs currently available on DragonFly.
> 
> - ACPI P-state.  It has the proper CPU power domain support.
> - ACPI C-state.  Unlike other BSDs, on relatively recent Intel CPUs
>  (the oldest Intel CPU I tested is Sandy Bridge), we don't use I/O
>  port to enter ACPI C2/C3, instead, we give hint to BIOS that 'native
>  C2/C3' is supported.  BIOS will send us ACPI C2/C3 to mwait C-states
>  maps through GAS.

Have you checked why other BSDs don’t do that? Broken BIOSs are all too common.

> And the GAS will also contain information about
>  whether checking bus master status is needed or not for ACPI C3.
>  Given most of recent Intel CPUs (since core2) do not require bus
>  master arbitration or flush cache before entering ACPI C3, entering
>  APIC C-state becomes simple monitor/mwait instructions.
> - Intel Performance and Energy Bias Hint.  According to Intel software
>  developer manual, it's a "hint to guide the hardware heuristic of
>  power management features to favor increasing dynamic performance or
>  conserve energy consumption".
> - Mwait C-state.  This requires mwait extension, which is available on
>  almost all of the recent CPUs.  If we need to check bus master
>  status, flush cache or bus master arbitration before entering ACPI
>  C3, then mwait C-states deeper then C2/0 will not be used.
> 
> ========================
> 
> ACPI P-state
> 
> On Intel i7-3770 3.40GHz and Intel i5-3230M 2.60GHz and many other
> recent Intel CPUs (tested by dillon@), adjusting ACPI P-state does
> _not_ reduce power consumption at all.  On these CPUs, adjusting ACPI
> P-state only affects how dynamic frequency works, e.g. on Intel
> i5-3230M (system is idle):
> ACPI P-state 2601 (TurboBoost):
> hw.sensors.cpu0.freq0: 2721627000 Hz (cpu0 freq)
> hw.sensors.cpu1.freq0: 2751159000 Hz (cpu1 freq)
> hw.sensors.cpu2.freq0: 2627060000 Hz (cpu2 freq)
> hw.sensors.cpu3.freq0: 2191103000 Hz (cpu3 freq)
> ACPI P-state 2600:
> hw.sensors.cpu0.freq0: 2266678000 Hz (cpu0 freq)
> hw.sensors.cpu1.freq0: 2401977000 Hz (cpu1 freq)
> hw.sensors.cpu2.freq0: 2248562000 Hz (cpu2 freq)
> hw.sensors.cpu3.freq0: 2406333000 Hz (cpu3 freq)
> ACPI P-state 1200:
> hw.sensors.cpu0.freq0: 1197281000 Hz (cpu0 freq)
> hw.sensors.cpu1.freq0: 1197340000 Hz (cpu1 freq)
> hw.sensors.cpu2.freq0: 1197284000 Hz (cpu2 freq)
> hw.sensors.cpu3.freq0: 1197300000 Hz (cpu3 freq)
> 
> On Intel E5-2620 v2 2.10GHz, adjusting ACPI P-state reduces power
> consumption.  However, as far as I tested, the power consumption
> change is only between TurboBoost ACPI P-state and non-TurboBoost
> ACPI P-state, e.g. on Intel E5-2620 v2 (2-way):
> ACPI P-state 2101 (TurboBoost): 94.6w
> ACPI P-state 2100: 92.5w
> ACPI P-state 1200: 92.5w
> 
> ========================
> 
> Intel Performance and Energy Bias Hint
> 
> To be frank, I didn't notice power consumpion or thermal changes by
> adjusting this hint on any of the Intel CPUs that I tested.
> 
> ========================
> 
> ACPI C-state
> 
> Since on all of the Intel CPUs I tested ACPI C-states are mapped to
> mwait C-states and do not require bus master operations; we move on
> to mwait C-states.
> 
> ========================
> 
> Mwait C-state
> 
> It seems to be the only power management stuff that reduces power
> consumption on all Intel CPUs dillon@ and I tested.  The power
> consumption on the CPUs I tested.
> 
> Intel i7-3770 (ACPI P-state 3401):
> mwait C1/0: 38.3w
> mwait C1/1: 38.3w
> mwait C2/0: 37.6w
> mwait C3/0: 36.8w
> 
> Intel i5-3230M (ACPI P-state 2601):
> mwait C1/0: 14.7w
> mwait C1/1: 14.7w
> mwait C2/0: 13.3w
> mwait C3/0: 12.9w
> mwait C4/0: 12.9w
> mwait C4/1: 12.9w
> 
> Intel E5-2620 v2 (2-way)
> (ACPI P-state 2101 TurboBoost):
> mwait C1/0: 94.6w
> mwait C1/1: 94.6w
> mwait C2/0: 93.7w
> mwait C3/0: 92.3w
> (ACPI P-state 2100~1200):
> mwait C1/0: 92.5w
> mwait C1/1: 92.5w
> mwait C2/0: 85.3w
> mwait C3/0: 83.8w
> 
> One thing in common is that there is no power consumption difference
> between mwait C1/0 (C1) and C1/1 (C1E?); probably because C1E will be
> entered once all cores are in C1 state, as mentioned in Intel E5-2600
> v2 datasheet.
> 
> Though deep mwait C-states reduce power consumption, you will have to
> pay for the additional latency.  The latency could be as high as 40us
> if the CPU enters deep package C-state.  The average latency I
> gathered on various types of CPUs I tested (by using
> debug.ipiq.latency_test):
> 
> Intel i7-3770 (ACPI P-state 3401):
> mwait C1/0 and C1/1: 760ns
> mwait C2/0: 18us
> mwait C3/0: 25us
> 
> Intel i5-3230M (ACPI P-state 2601):
> mwait C1/0 and C1/1: 950ns
> mwait C2/0: 21us
> mwait C3/0, C4/0, C4/1: 26us
> 
> Intel E5-2620 v2 (2-way)
> (ACPI P-state 2101 TurboBoost)
> mwait C1/0 and C1/1: same package 2200ns, different package 2600ns
> mwait C2/0: same package 15us, different package 24us
> mwait C3/0: same package 33us, different package 37us
> (ACPI P-state 2100)
> mwait C1/0 and C1/1: same package 2200ns, different package 2600ns
> mwait C2/0: same package 15us, different package 22us
> mwait C3/0: same package 26us, different package 36us
> 
> NOTE: For Intel E5-2620 v2 (2-way) TurboBoost mode, there is up to
> 60us latency on the same package mwait C2 and mwait C3 latency test
> (well, I don't know why).
> 
> If your application is latency aware, you need to be careful with the
> deep mwait C-states.
> 
> --------
> 
> There are cases that you could save more power and your system runs
> faster!  The situation I found is that deep mwait C-states could allow
> loaded CPU to boost to higher frequency.  Here is what I saw on Intel
> E5-2620 v2 (2-way) (ACPI P-state 2101 TurboBoost):
> 
> make -j 48 -DNO_MODULES buildkernel KERNCONF=LINT64
> 
> Force mwait C1/0 on all CPUs.  Total time: 182s
> Power consumption during make depend: 110w
> CPU frequency during make depend: 2.37GHz
> Power consumption during full run: 161w
> CPU frequency during full run: 2.4GHz
> 
> Force mwait C3/0 on all CPUs.  Total time: 180s (2 seconds shorter!)
> Power consumption during make depend: 106w (4w lower!)
> CPU frequency during make depend: 2.57GHz (200MHz higher!)
> Power consumption during full run: 161w (same)
> CPU frequency during full run: 2.4GHz
> 
> Best Regards,
> sephe
> 
> -- 
> Tomorrow Will Never Die
> 

--
Bob Bishop
rb at gid.co.uk








More information about the Kernel mailing list