Message ID | 20240424-ayn-odin2-initial-v1-7-e0aa05c991fd@gmail.com |
---|---|
State | New |
Headers | show |
Series | AYN Odin 2 support | expand |
On 24/04/2024 16:29, Xilin Wu via B4 Relay wrote: > From: Xilin Wu <wuxilin123@gmail.com> > > The original values provided by Qualcomm appear to be quite > inaccurate. Specifically, some heavy gaming tasks could be > improperly assigned to the A510 cores by the scheduler, resulting > in a CPU bottleneck. This update to the EAS properties aims to > enhance the user experience across various scenarios. > > The power numbers were obtained using a Type-C power meter, which > was directly connected to the battery connector on the AYN Odin 2 > motherboard, acting as a fake battery. > > It should be noted that the A715 cores seem less efficient than the > A710 cores. Therefore, an average value has been assigned to them, > considering that the A715 and A710 cores share a single cpufreq > domain. > > Cortex-A510 cores: > 441 kHz, 564 mV, 43 mW, 350 Cx > 556 kHz, 580 mV, 59 mW, 346 Cx > 672 kHz, 592 mV, 71 mW, 312 Cx > 787 kHz, 604 mV, 83 mW, 290 Cx > 902 kHz, 608 mV, 96 mW, 288 Cx > 1017 kHz, 624 mV, 107 mW, 264 Cx > 1113 kHz, 636 mV, 117 mW, 252 Cx > 1228 kHz, 652 mV, 130 mW, 240 Cx > 1344 kHz, 668 mV, 146 mW, 235 Cx > 1459 kHz, 688 mV, 155 mW, 214 Cx > 1555 kHz, 704 mV, 166 mW, 205 Cx > 1670 kHz, 724 mV, 178 mW, 192 Cx > 1785 kHz, 744 mV, 197 mW, 189 Cx > 1900 kHz, 764 mV, 221 mW, 190 Cx > 2016 kHz, 784 mV, 243 mW, 188 Cx > Your dynamic-power-coefficient for cpu 1: 251 This looks pretty convincing and like good work. A few questions and suggestions for your commit log. I'd really love to know more about how you ran this test. What values exactly does your power meter give you? How did you lock the core to a specific CPU frequency ? Maybe also give the equation to calculate Pdyn in the commit log. https://patchwork.kernel.org/project/linux-arm-kernel/patch/1500974575-2244-1-git-send-email-wxt@rock-chips.com/#20763985 --- bod
On 2024/4/25 6:45, Bryan O'Donoghue wrote: > On 24/04/2024 16:29, Xilin Wu via B4 Relay wrote: >> From: Xilin Wu <wuxilin123@gmail.com> >> >> The original values provided by Qualcomm appear to be quite >> inaccurate. Specifically, some heavy gaming tasks could be >> improperly assigned to the A510 cores by the scheduler, resulting >> in a CPU bottleneck. This update to the EAS properties aims to >> enhance the user experience across various scenarios. >> >> The power numbers were obtained using a Type-C power meter, which >> was directly connected to the battery connector on the AYN Odin 2 >> motherboard, acting as a fake battery. >> >> It should be noted that the A715 cores seem less efficient than the >> A710 cores. Therefore, an average value has been assigned to them, >> considering that the A715 and A710 cores share a single cpufreq >> domain. >> >> Cortex-A510 cores: >> 441 kHz, 564 mV, 43 mW, 350 Cx >> 556 kHz, 580 mV, 59 mW, 346 Cx >> 672 kHz, 592 mV, 71 mW, 312 Cx >> 787 kHz, 604 mV, 83 mW, 290 Cx >> 902 kHz, 608 mV, 96 mW, 288 Cx >> 1017 kHz, 624 mV, 107 mW, 264 Cx >> 1113 kHz, 636 mV, 117 mW, 252 Cx >> 1228 kHz, 652 mV, 130 mW, 240 Cx >> 1344 kHz, 668 mV, 146 mW, 235 Cx >> 1459 kHz, 688 mV, 155 mW, 214 Cx >> 1555 kHz, 704 mV, 166 mW, 205 Cx >> 1670 kHz, 724 mV, 178 mW, 192 Cx >> 1785 kHz, 744 mV, 197 mW, 189 Cx >> 1900 kHz, 764 mV, 221 mW, 190 Cx >> 2016 kHz, 784 mV, 243 mW, 188 Cx >> Your dynamic-power-coefficient for cpu 1: 251 > > This looks pretty convincing and like good work. > > A few questions and suggestions for your commit log. > > I'd really love to know more about how you ran this test. What values > exactly does your power meter give you? > > How did you lock the core to a specific CPU frequency ? > > Maybe also give the equation to calculate Pdyn in the commit log. > > https://patchwork.kernel.org/project/linux-arm-kernel/patch/1500974575-2244-1-git-send-email-wxt@rock-chips.com/#20763985 > > --- > bod The power meter accepts a fixed 4 volts input, and outputs to the battery connector on the board. It is also connected to a computer for data recording, including voltage and current. The CPU frequency pinning and Pdyn calculation is done by a script on the list: [1]. I just removed the power measuring part since it was done on the computer with the meter. I will improve the commit log in v2. [1] https://lore.kernel.org/all/CAD=FV=U1FP0e3_AVHpauUUZtD-5X3XCwh5aT9fH_8S_FFML2Uw@mail.gmail.com/
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index b8bbe88e770f..a84dd7f6ebc1 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -79,8 +79,8 @@ CPU0: cpu@0 { power-domains = <&CPU_PD0>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; - capacity-dmips-mhz = <1024>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <326>; + dynamic-power-coefficient = <251>; #cooling-cells = <2>; L2_0: l2-cache { compatible = "cache"; @@ -105,8 +105,8 @@ CPU1: cpu@100 { power-domains = <&CPU_PD1>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; - capacity-dmips-mhz = <1024>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <326>; + dynamic-power-coefficient = <251>; #cooling-cells = <2>; L2_100: l2-cache { compatible = "cache"; @@ -126,8 +126,8 @@ CPU2: cpu@200 { power-domains = <&CPU_PD2>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 0>; - capacity-dmips-mhz = <1024>; - dynamic-power-coefficient = <100>; + capacity-dmips-mhz = <326>; + dynamic-power-coefficient = <251>; #cooling-cells = <2>; L2_200: l2-cache { compatible = "cache"; @@ -147,8 +147,8 @@ CPU3: cpu@300 { power-domains = <&CPU_PD3>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; - capacity-dmips-mhz = <1792>; - dynamic-power-coefficient = <270>; + capacity-dmips-mhz = <693>; + dynamic-power-coefficient = <447>; #cooling-cells = <2>; L2_300: l2-cache { compatible = "cache"; @@ -168,8 +168,8 @@ CPU4: cpu@400 { power-domains = <&CPU_PD4>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; - capacity-dmips-mhz = <1792>; - dynamic-power-coefficient = <270>; + capacity-dmips-mhz = <693>; + dynamic-power-coefficient = <447>; #cooling-cells = <2>; L2_400: l2-cache { compatible = "cache"; @@ -189,8 +189,8 @@ CPU5: cpu@500 { power-domains = <&CPU_PD5>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; - capacity-dmips-mhz = <1792>; - dynamic-power-coefficient = <270>; + capacity-dmips-mhz = <693>; + dynamic-power-coefficient = <447>; #cooling-cells = <2>; L2_500: l2-cache { compatible = "cache"; @@ -210,8 +210,8 @@ CPU6: cpu@600 { power-domains = <&CPU_PD6>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 1>; - capacity-dmips-mhz = <1792>; - dynamic-power-coefficient = <270>; + capacity-dmips-mhz = <693>; + dynamic-power-coefficient = <447>; #cooling-cells = <2>; L2_600: l2-cache { compatible = "cache"; @@ -231,8 +231,8 @@ CPU7: cpu@700 { power-domains = <&CPU_PD7>; power-domain-names = "psci"; qcom,freq-domain = <&cpufreq_hw 2>; - capacity-dmips-mhz = <1894>; - dynamic-power-coefficient = <588>; + capacity-dmips-mhz = <1024>; + dynamic-power-coefficient = <1057>; #cooling-cells = <2>; L2_700: l2-cache { compatible = "cache";