All of lore.kernel.org
 help / color / mirror / Atom feed
* [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422
@ 2018-07-26  8:04 Oliver Effland
  2018-07-27  2:06 ` Steven Miao
  2018-08-02 16:14 ` Dietmar Eggemann
  0 siblings, 2 replies; 6+ messages in thread
From: Oliver Effland @ 2018-07-26  8:04 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

First of all: thanks for all the valuable input! @(Russell, Dietmar & Steven)

On 07/23/2018 08:51 AM, Steven Miao wrote:
> Hi  Oliver,
> 
> Generally these dynamic co-efficiency and static leakage power comes
> from hardware design team by running power estimation tool, however
> you can tun these co-efficiency and parameters for better performance.
> 
> How did you get A7 or A15 power? Get Soc power or there's separate
> sensor for A7/A15?
Yes indeed, there are 2 seperate sensors for the A7 and A15.

> If you want to create cpu busy power model manually, you can:
> 1 leave 1 A7 + 1 A15 core online, keep other cores offline, disable
> thermal zone, disable idle state for all cores
> 2 set A7 frequency to 200Mhz, move all the task to A15, run cpu
> intensive task on A7(dhrystone, sysbench cpu test), read sensor to get
> 1 A7 power P1(read from A7 cluster sensor)
> 3 online 2 A7 core, run dhrystone on each core, and get power P2
> 
> we can get 1 A7 core power at 200Mhz ~= P2 - P1 (A7 power X 2 + static
> power - A7 power X 1 - static power
I followed your manual steps (using a busy loop for 10s, instead of a benchmark) and corrected my calculations (with the static
power in mind):

A7:
freq(MHz) voltage(mV) Power(mW)	A7_Power(mW)  Stat_Power(mW) DPC
200	  918.750     34.768	12.203	      10.362	     72.283955
400	  920.000     60.805	21.25	      18.305	     62.765831
600	  968.750     98.046	35.084	      27.878	     62.306652
800	  1042.500    148.095	52.285	      43.525	     60.136063
1000	  1116.250    212.214	76.112	      59.99	     61.084382
1200	  1190.000    288.958	99.993	      88.972	     58.842948
1400	  1288.750    411.936	144.807	      122.322	     62.276495
						
							mean: 62	

A15:
freq(MHz) voltage(mV) Power(mW) A15_Power(mW) Stat_Power(mW) DPC
200       916250      122.584   31.139        60.306         185.458477
500       916250      225.101   68.774        87.553         163.842401
800       942500      349.158   112.432       124.294        158.211202
1100      1016250     540.78    169.556       201.668        149.251725
1400      1078750     779.19    258.214       262.762        158.493016
1700      1180000     1179.344  392.107       395.13         165.650083
2000      1320000     1969.764  648.768       672.228        186.170798
						
							mean: 164

The ratio between A15 and A7 is now 164/62 = 2.645

I hope the dynamic-power-coefficient's are more accurate now?

> dynamic-power-coefficient ~= 400 - 500 is reasonable for big core
> dynamic-power-coefficient  ~= 100 is reasonable for LITTLE core.
> For IPA it can work effectively with a poor power model(not so
> accurate), for EAS it just need power model of LITTLE core and big
> core is proportional.

I'm guessing my values differ from your suggested values, because it's 32bit ARM?

Best regards,
Oliver

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422
  2018-07-26  8:04 [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422 Oliver Effland
@ 2018-07-27  2:06 ` Steven Miao
  2018-08-02 16:14 ` Dietmar Eggemann
  1 sibling, 0 replies; 6+ messages in thread
From: Steven Miao @ 2018-07-27  2:06 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Oliver,

On Thu, Jul 26, 2018 at 4:05 PM Oliver Effland
<s5770874@msx.tu-dresden.de> wrote:
>
> Hi,
>
> First of all: thanks for all the valuable input! @(Russell, Dietmar & Steven)
>
> On 07/23/2018 08:51 AM, Steven Miao wrote:
> > Hi  Oliver,
> >
> > Generally these dynamic co-efficiency and static leakage power comes
> > from hardware design team by running power estimation tool, however
> > you can tun these co-efficiency and parameters for better performance.
> >
> > How did you get A7 or A15 power? Get Soc power or there's separate
> > sensor for A7/A15?
> Yes indeed, there are 2 seperate sensors for the A7 and A15.
>
> > If you want to create cpu busy power model manually, you can:
> > 1 leave 1 A7 + 1 A15 core online, keep other cores offline, disable
> > thermal zone, disable idle state for all cores
> > 2 set A7 frequency to 200Mhz, move all the task to A15, run cpu
> > intensive task on A7(dhrystone, sysbench cpu test), read sensor to get
> > 1 A7 power P1(read from A7 cluster sensor)
> > 3 online 2 A7 core, run dhrystone on each core, and get power P2
> >
> > we can get 1 A7 core power at 200Mhz ~= P2 - P1 (A7 power X 2 + static
> > power - A7 power X 1 - static power
> I followed your manual steps (using a busy loop for 10s, instead of a benchmark) and corrected my calculations (with the static
> power in mind):
>
> A7:
> freq(MHz) voltage(mV) Power(mW) A7_Power(mW)  Stat_Power(mW) DPC
> 200       918.750     34.768    12.203        10.362         72.283955
> 400       920.000     60.805    21.25         18.305         62.765831
> 600       968.750     98.046    35.084        27.878         62.306652
> 800       1042.500    148.095   52.285        43.525         60.136063
> 1000      1116.250    212.214   76.112        59.99          61.084382
> 1200      1190.000    288.958   99.993        88.972         58.842948
> 1400      1288.750    411.936   144.807       122.322        62.276495
>
>                                                         mean: 62
>
> A15:
> freq(MHz) voltage(mV) Power(mW) A15_Power(mW) Stat_Power(mW) DPC
> 200       916250      122.584   31.139        60.306         185.458477
> 500       916250      225.101   68.774        87.553         163.842401
> 800       942500      349.158   112.432       124.294        158.211202
> 1100      1016250     540.78    169.556       201.668        149.251725
> 1400      1078750     779.19    258.214       262.762        158.493016
> 1700      1180000     1179.344  392.107       395.13         165.650083
> 2000      1320000     1969.764  648.768       672.228        186.170798
>
>                                                         mean: 164
>
> The ratio between A15 and A7 is now 164/62 = 2.645
>
> I hope the dynamic-power-coefficient's are more accurate now?
>
> > dynamic-power-coefficient ~= 400 - 500 is reasonable for big core
> > dynamic-power-coefficient  ~= 100 is reasonable for LITTLE core.
> > For IPA it can work effectively with a poor power model(not so
> > accurate), for EAS it just need power model of LITTLE core and big
> > core is proportional.
>
> I'm guessing my values differ from your suggested values, because it's 32bit ARM?
Yes, the ratio bit and LITTLE ~= 400/100 ~= 4.x is from A73 and A53 @
16nm process, it could vary from 32bit core or different process.
>
> Best regards,
> Oliver

Cheers,
Steven

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422
  2018-07-26  8:04 [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422 Oliver Effland
  2018-07-27  2:06 ` Steven Miao
@ 2018-08-02 16:14 ` Dietmar Eggemann
  1 sibling, 0 replies; 6+ messages in thread
From: Dietmar Eggemann @ 2018-08-02 16:14 UTC (permalink / raw)
  To: linux-arm-kernel

On 07/26/2018 10:04 AM, Oliver Effland wrote:
> Hi,
> 
> First of all: thanks for all the valuable input! @(Russell, Dietmar & Steven)
> 
> On 07/23/2018 08:51 AM, Steven Miao wrote:

[...]

> A7:
> freq(MHz) voltage(mV) Power(mW)	A7_Power(mW)  Stat_Power(mW) DPC
> 200	  918.750     34.768	12.203	      10.362	     72.283955
> 400	  920.000     60.805	21.25	      18.305	     62.765831
> 600	  968.750     98.046	35.084	      27.878	     62.306652
> 800	  1042.500    148.095	52.285	      43.525	     60.136063
> 1000	  1116.250    212.214	76.112	      59.99	     61.084382
> 1200	  1190.000    288.958	99.993	      88.972	     58.842948
> 1400	  1288.750    411.936	144.807	      122.322	     62.276495
> 						
> 							mean: 62	
> 
> A15:
> freq(MHz) voltage(mV) Power(mW) A15_Power(mW) Stat_Power(mW) DPC
> 200       916250      122.584   31.139        60.306         185.458477
> 500       916250      225.101   68.774        87.553         163.842401
> 800       942500      349.158   112.432       124.294        158.211202
> 1100      1016250     540.78    169.556       201.668        149.251725
> 1400      1078750     779.19    258.214       262.762        158.493016
> 1700      1180000     1179.344  392.107       395.13         165.650083
> 2000      1320000     1969.764  648.768       672.228        186.170798
> 						
> 							mean: 164
> 
> The ratio between A15 and A7 is now 164/62 = 2.645
> 
> I hope the dynamic-power-coefficient's are more accurate now?
> 
>> dynamic-power-coefficient ~= 400 - 500 is reasonable for big core
>> dynamic-power-coefficient  ~= 100 is reasonable for LITTLE core.
>> For IPA it can work effectively with a poor power model(not so
>> accurate), for EAS it just need power model of LITTLE core and big
>> core is proportional.
> 
> I'm guessing my values differ from your suggested values, because it's 32bit ARM?

We're running TC2 (32 bit Arm A15/A7 _test_ chip) with a ratio between 
A15 and A7 of 990/113 = 7.44.

For EAS, i.e. for task wake-up placement decisions based on task 
utilization and cpu capacity, on big.LITTLE this ratio is important.

How do you want to evaluate EAS v4 (or v5) on your ODROID-XU3 board? 
What kind of workloads and/or benchmarks will you run on it?

-- Dietmar

[...]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422
  2018-07-20 15:36 ` Russell King - ARM Linux
@ 2018-07-30 16:32   ` Vincent Guittot
  0 siblings, 0 replies; 6+ messages in thread
From: Vincent Guittot @ 2018-07-30 16:32 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Russel and Oliver,

On Fri, 20 Jul 2018 at 17:36, Russell King - ARM Linux
<linux@armlinux.org.uk> wrote:
>
> On Fri, Jul 20, 2018 at 04:15:30PM +0200, Oliver Effland wrote:
> > Hello everyone,
> >
> > I hope this is the right place to ask, otherwise please just point me in the right direction.
> >
> > I'm currently testing the EAS patches [v4] on an ODROID-XU3 board, which has an Exynos5422 SoC. However, the corresponding DT is missing the "dynamic-power-coefficient" that is needed for an appropriate EM.
> > So I'm trying to compute the dynamic-power-coefficient according to the formula:
> >
> > Pdyn = dynamic-power-coefficient * V^2 * f
> >
> > The frequency f is given by the DT.The actual Voltage and Power are determined by means of the on-chip sensors (returns the values for the specific cluster). When using the Voltage given in the DT, the differences for the d-p-coefficient are negligible.
> >
> > So I'm calculating the d-p-coefficient (mW/MHz/uV^2) by reading out the following SoC sensor values.
>
> Well, let's work this forward.  Let's take a simple, reasonable case.
>
> V=1V, f = 200MHz.  Now let's select the smallest value that
> dynamic-power-coefficient can be in DT, which, as it's an integer,
> is 1.  We're told that V is in uV, and f is in MHz.  So, let's plug
> the figures in:
>
> Pdyn = 1 * (1000000)^2 * 200
>
> That is 2 * 10^14mW, or 200GW.
>
> Somehow, I think the binding documentation is very wrong.
>
> >
> > For the little cluster (A7):
> > frequency(MHz)  Voltage(V)  Power(mW) Dynamic-power-coefficient
> >  200          0.9175       49.470     ~2.938*10^-13
> >  400          0.9165       91.892     ~2.736*10^-13
> >  600          0.9638      149.454     ~2.682*10^-13
> >  800          1.0263      223.453     ~2.652*10^-13
> > 1000          1.1000      327.707     ~2.708*10^-13
> > 1200          1.1725      445.899     ~2.703*10^-13
> > 1400          1.2713      627.010     ~2.771*10^-13
> >
> > For the big cluster (A15):
> > frequency(MHz)  Voltage(V)  Power(mW) Dynamic-power-coefficient
> >  200          0.9162       159.676    ~9.510*10^-13
> >  500          0.9138       325.480    ~7.797*10^-13
> >  800          0.9288       511.360    ~7.410*10^-13
> > 1100          1.0063       828.020    ~7.434*10^-13
> > 1400          1.0713      1209.774    ~7.530*10^-13
> > 1700          1.1750      1835.784    ~7.822*10^-13
> > 2000          1.2700      2661.849    ~8.252*10^-13
> >
> >
> > But those values are way off for the DT, unless I multiply the d-p-coefficient with 10^15.
> >
> > Assuming the Power value needs to be subtracted by a static component (power usage when idle), the results change as follows:
> >
> > For the little cluster (A7):
> > frequency(MHz)  Voltage(V)  P-dyn(mW) Dynamic-power-coefficient
> >  200          0.9175      36,381      ~2,160*10^-13
> >  400          0.9165      73,438      ~2,186*10^-13
> >  600          0.9638      122,470     ~2,197*10^-13
> >  800          1.0263      184,135     ~2,185*10^-13
> > 1000          1.1000      270,425     ~2,234*10^-13
> > 1200          1.1725      367,121     ~2,225*10^-13
> > 1400          1.2713      513,989     ~2,271*10^-13
> >
> > For the big cluster (A15):
> > frequency(MHz)  Voltage(V)  P-dyn(mW) Dynamic-power-coefficient
> >  200          0.9162      99,834      ~5,945*10^-13
> >  500          0.9138      244,651     ~5,860*10^-13
> >  800          0.9288      401,986     ~5,825*10^-13
> > 1100          1.0063      664,565     ~5,966*10^-13
> > 1400          1.0713      985,268     ~6,132*10^-13
> > 1700          1.1750      1494,173    ~6,366*10^-13
> > 2000          1.2700      2086,273    ~6,467*10^-13
> >
> >
> > While looking for examples in the kernel that calculate the dynamic-power-coefficient, I found this patch [1] by Caesar Wang that introduced this value for the rk3399 big cluster.
> > Unfortunately, I'm unable to reproduce the same results for the coefficient with the given values. My results are also with a 10^-13 factor and even when I scale them with 10^15, my results have a certain margin of error:
> >
> > > frequency(MHz)  Voltage(V)  Current(mA) Dynamic-power-coefficient   (My) d-p-coefficient
> > > 24              0.8         15
> > > 48              0.8         23          ~417                                ~598
> > > 96              0.8         40          ~443                                ~520
> > > 216             0.8         82          ~438                                ~474
> > > 312             0.8         115         ~430                                ~460
> > > 408             0.8         150         ~455                                ~459
>
> Hmm.  Let's take your 48MHz values.
>
> Pdyn (mW) = 0.8 (V) * 23 (mA) = 18.4mW
>
> dynamic-power-coefficient = Pdyn / (V^2 * f)
>         = 18.4 (mW) / (800000 * 800000 * 48)
>         = 5.99 * 10^-13
>
> Seems, again, to me that there is something very wrong with the
> binding documentation.
>
> Now, let's dig into the code:
>
>  * dev_pm_opp_get_voltage() - Gets the voltage corresponding to an opp
>  * Return: voltage in micro volt corresponding to the opp, else
>  * return 0
>
> So this returns uV.
>
>                 voltage_mv = dev_pm_opp_get_voltage(opp) / 1000;
>
> This is mV.
>
>                 u32 freq_mhz = freq_table[i].frequency / 1000;
>
> MHz.
>
>                 power = (u64)capacitance * freq_mhz * voltage_mv * voltage_mv;
>                 do_div(power, 1000000000);
>
>                 /* power is stored in mW */
>                 freq_table[i].power = power;
>
> So we have:
>
>         power(mW) = dynamic-power-coefficient * f(MHz) * V(mV)^2 / 10^9
>
> That 10^9 can't come from the fact that the calculation is using mV
> instead of uV.  Let's see what happens if we use this:
>
>         dynamic-power-coefficient = power(mW) * 10^9 / (f(MHz) * V(mV)^2)
>                 = 18.4 * 10^9 / (48 * 800 * 800)
>                 = 599
>
> which, given that dynamic-power-coefficient is an integer, is a damn
> sight more sensible.  This is equivalent to:
>
>         dynamic-power-coefficient = power(mW) * 10^15 / (f(MHz) * V(uV)^2)
>
> which means the binding documentation is wrong.

I came to similar conclusion on another thread:
https://patchwork.kernel.org/patch/10493615
the right unit of dynamic-power-coefficient is mW/V^2/Ghz

Regards,
Vincent

>
> Now, one of the things to bear in mind is that if you're measuring the
> voltage and current, and wanting "dynamic power" then you don't get
> that from multiplying the voltage and current - that includes the
> _static_ consumption.
>
>         total power = static power + dynamic power
>                     = V * (Ileakage + Idynamic)
>
> and Idynamic will be based upon the frequency.
>
> Taking your table:
>
> > > frequency(MHz)  Voltage(V)  Current(mA) dpc    Pdyn Ptot Pstatic
> > > 24              0.8         15
> > > 48              0.8         23          ~417   12.8 18.4 5.6
> > > 96              0.8         40          ~443   27.2 32   4.8
> > > 216             0.8         82          ~438   60.5 65.6 5.1
> > > 312             0.8         115         ~430   85.9 92   6.1
> > > 408             0.8         150         ~455   119  120  1
>
> Pdyn comes from the dynamic-power-coefficient calculation, Ptot from
> the voltage and current figures, and Pstatic being the difference
> between Ptot and Pdyn.
>
> Apart from the last, it looks like there's a static power of an average
> 5.4mW.  Plugging that back in:
>
>         dynamic-power-coefficient = power(mW) * 10^9 / (f(MHz) * V(mV)^2)
>                 = (18.4 - 5.4) * 10^9 / (48 * 800 * 800)  = 423
>                 = (32 - 5.4) * 10^9 / (96 * 800 * 800)    = 433
>                 = (65.6 - 5.4) * 10^9 / (216 * 800 * 800) = 435
>                 = (92 - 5.4) * 10^9 / (312 * 800 * 800)   = 434
>                 = (120 - 5.4) * 10^9 / (408 * 800 * 800)  = 439
>
> which is a bit more believable (even compared to the original post
> of the table.)
>
> --
> RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
> FTTC broadband for 0.8mile line in suburbia: sync at 13.8Mbps down 630kbps up
> According to speedtest.net: 13Mbps down 490kbps up
> _______________________________________________
> eas-dev mailing list
> eas-dev at lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/eas-dev

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422
  2018-07-20 14:15 Oliver Effland
  2018-07-20 15:36 ` Russell King - ARM Linux
  2018-07-23  6:51 ` Steven Miao
@ 2018-07-23 15:29 ` Dietmar Eggemann
  2 siblings, 0 replies; 6+ messages in thread
From: Dietmar Eggemann @ 2018-07-23 15:29 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Oliver,

On 07/20/2018 04:15 PM, Oliver Effland wrote:
> Hello everyone,
> 
> I hope this is the right place to ask, otherwise please just point me in the right direction.
> 
> I'm currently testing the EAS patches [v4] on an ODROID-XU3 board, which has an Exynos5422 SoC. However, the corresponding DT is missing the "dynamic-power-coefficient" that is needed for an appropriate EM.
> So I'm trying to compute the dynamic-power-coefficient according to the formula:
> 
> Pdyn = dynamic-power-coefficient * V^2 * f
> 
> The frequency f is given by the DT.The actual Voltage and Power are determined by means of the on-chip sensors (returns the values for the specific cluster). When using the Voltage given in the DT, the differences for the d-p-coefficient are negligible.
> 
> So I'm calculating the d-p-coefficient (mW/MHz/uV^2) by reading out the following SoC sensor values.
> 
> For the little cluster (A7):
> frequency(MHz)  Voltage(V)  Power(mW)	Dynamic-power-coefficient
>   200		0.9175	     49.470	~2.938*10^-13
>   400		0.9165	     91.892	~2.736*10^-13
>   600		0.9638	    149.454	~2.682*10^-13
>   800		1.0263	    223.453	~2.652*10^-13
> 1000		1.1000	    327.707	~2.708*10^-13
> 1200		1.1725	    445.899	~2.703*10^-13
> 1400		1.2713	    627.010	~2.771*10^-13
> 
> For the big cluster (A15):
> frequency(MHz)  Voltage(V)  Power(mW)	Dynamic-power-coefficient
>   200		0.9162	     159.676	~9.510*10^-13
>   500		0.9138	     325.480	~7.797*10^-13
>   800		0.9288	     511.360	~7.410*10^-13
> 1100		1.0063	     828.020	~7.434*10^-13
> 1400		1.0713	    1209.774	~7.530*10^-13
> 1700		1.1750	    1835.784	~7.822*10^-13
> 2000		1.2700	    2661.849	~8.252*10^-13

We do support Arm's TC2 platform (2xA15 and 3xA7) with the EAS project. 
The latest EAS mainline integration includes Quentin's "[RFC PATCH v4 
00/12] Energy Aware Scheduling" https://lkml.org/lkml/2018/6/28/301 .

You can find the appropriate patch for TC2 dynamic-power-coefficient 
integration "arm: dts: vexpress-v2p-ca15_a7: Add 
dynamic-power-coefficient properties" under 
https://developer.arm.com/open-source/energy-aware-scheduling/eas-mainline-development 
. Follow the 'eas/next/integration' link. The patch header has a little 
bit of documentation about how we did it. We used the build-in TC2 
Energy Meter.

This is all in sync with what Russel and Steve posted on this thread before.

Thanks for taking EAS for a spin on another Arm 32bit machine!

-- Dietmar

[...]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422
  2018-07-20 14:15 Oliver Effland
  2018-07-20 15:36 ` Russell King - ARM Linux
@ 2018-07-23  6:51 ` Steven Miao
  2018-07-23 15:29 ` Dietmar Eggemann
  2 siblings, 0 replies; 6+ messages in thread
From: Steven Miao @ 2018-07-23  6:51 UTC (permalink / raw)
  To: linux-arm-kernel

Hi  Oliver,

Generally these dynamic co-efficiency and static leakage power comes
from hardware design team by running power estimation tool, however
you can tun these co-efficiency and parameters for better performance.

On Fri, Jul 20, 2018 at 10:16 PM Oliver Effland
<s5770874@msx.tu-dresden.de> wrote:
>
> Hello everyone,
>
> I hope this is the right place to ask, otherwise please just point me in the right direction.
>
> I'm currently testing the EAS patches [v4] on an ODROID-XU3 board, which has an Exynos5422 SoC. However, the corresponding DT is missing the "dynamic-power-coefficient" that is needed for an appropriate EM.
> So I'm trying to compute the dynamic-power-coefficient according to the formula:
>
> Pdyn = dynamic-power-coefficient * V^2 * f
>
> The frequency f is given by the DT.The actual Voltage and Power are determined by means of the on-chip sensors (returns the values for the specific cluster). When using the Voltage given in the DT, the differences for the d-p-coefficient are negligible.
>
> So I'm calculating the d-p-coefficient (mW/MHz/uV^2) by reading out the following SoC sensor values.
How did you get A7 or A15 power? Get Soc power or there's separate
sensor for A7/A15?
If you want to create cpu busy power model manually, you can:
1 leave 1 A7 + 1 A15 core online, keep other cores offline, disable
thermal zone, disable idle state for all cores
2 set A7 frequency to 200Mhz, move all the task to A15, run cpu
intensive task on A7(dhrystone, sysbench cpu test), read sensor to get
1 A7 power P1(read from A7 cluster sensor)
3 online 2 A7 core, run dhrystone on each core, and get power P2

we can get 1 A7 core power at 200Mhz ~= P2 - P1 (A7 power X 2 + static
power - A7 power X 1 - static power)

>
> For the little cluster (A7):
> frequency(MHz)  Voltage(V)  Power(mW)   Dynamic-power-coefficient
>  200            0.9175       49.470     ~2.938*10^-13
>  400            0.9165       91.892     ~2.736*10^-13
>  600            0.9638      149.454     ~2.682*10^-13
>  800            1.0263      223.453     ~2.652*10^-13
> 1000            1.1000      327.707     ~2.708*10^-13
> 1200            1.1725      445.899     ~2.703*10^-13
> 1400            1.2713      627.010     ~2.771*10^-13
>
> For the big cluster (A15):
> frequency(MHz)  Voltage(V)  Power(mW)   Dynamic-power-coefficient
>  200            0.9162       159.676    ~9.510*10^-13
>  500            0.9138       325.480    ~7.797*10^-13
>  800            0.9288       511.360    ~7.410*10^-13
> 1100            1.0063       828.020    ~7.434*10^-13
> 1400            1.0713      1209.774    ~7.530*10^-13
> 1700            1.1750      1835.784    ~7.822*10^-13
> 2000            1.2700      2661.849    ~8.252*10^-13
>
>
> But those values are way off for the DT, unless I multiply the d-p-coefficient with 10^15.
>
> Assuming the Power value needs to be subtracted by a static component (power usage when idle), the results change as follows:
>
> For the little cluster (A7):
> frequency(MHz)  Voltage(V)  P-dyn(mW)   Dynamic-power-coefficient
>  200            0.9175      36,381      ~2,160*10^-13
>  400            0.9165      73,438      ~2,186*10^-13
>  600            0.9638      122,470     ~2,197*10^-13
>  800            1.0263      184,135     ~2,185*10^-13
> 1000            1.1000      270,425     ~2,234*10^-13
> 1200            1.1725      367,121     ~2,225*10^-13
> 1400            1.2713      513,989     ~2,271*10^-13
>
> For the big cluster (A15):
> frequency(MHz)  Voltage(V)  P-dyn(mW)   Dynamic-power-coefficient
>  200            0.9162      99,834      ~5,945*10^-13
>  500            0.9138      244,651     ~5,860*10^-13
>  800            0.9288      401,986     ~5,825*10^-13
> 1100            1.0063      664,565     ~5,966*10^-13
> 1400            1.0713      985,268     ~6,132*10^-13
> 1700            1.1750      1494,173    ~6,366*10^-13
> 2000            1.2700      2086,273    ~6,467*10^-13
>
>
> While looking for examples in the kernel that calculate the dynamic-power-coefficient, I found this patch [1] by Caesar Wang that introduced this value for the rk3399 big cluster.
> Unfortunately, I'm unable to reproduce the same results for the coefficient with the given values. My results are also with a 10^-13 factor and even when I scale them with 10^15, my results have a certain margin of error:
>
> > frequency(MHz)  Voltage(V)  Current(mA) Dynamic-power-coefficient     (My) d-p-coefficient
> > 24              0.8         15
> > 48              0.8         23          ~417                          ~598
> > 96              0.8         40          ~443                          ~520
> > 216             0.8         82          ~438                          ~474
> > 312             0.8         115         ~430                          ~460
> > 408             0.8         150         ~455                          ~459
dynamic-power-coefficient ~= 400 - 500 is reasonable for big core
dynamic-power-coefficient  ~= 100 is reasonable for LITTLE core.
For IPA it can work effectively with a poor power model(not so
accurate), for EAS it just need power model of LITTLE core and big
core is proportional.
>
>
> Is this the right approach, or am I missing something?
> Hope someone can help me out.
>
> Thanks in advance,
> Oliver Effland
>
> [1] https://patchwork.kernel.org/patch/9861505/
>
> _______________________________________________
> eas-dev mailing list
> eas-dev at lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/eas-dev

-Steven

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-08-02 16:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-26  8:04 [Eas-dev] Computing the dynamic-power-coefficient on Exynos5422 Oliver Effland
2018-07-27  2:06 ` Steven Miao
2018-08-02 16:14 ` Dietmar Eggemann
  -- strict thread matches above, loose matches on Subject: below --
2018-07-20 14:15 Oliver Effland
2018-07-20 15:36 ` Russell King - ARM Linux
2018-07-30 16:32   ` [Eas-dev] " Vincent Guittot
2018-07-23  6:51 ` Steven Miao
2018-07-23 15:29 ` Dietmar Eggemann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.