Samsung Performance SDK only has effect on the most powerful cores

Hi,

I am using the Samsung Performance SDK to try to limit the usage of the high performance CPU cores, so that my application can save more battery. My S21 Ultra with Exynos 2100 has 3 clusters:
1x2.9 GHz Cortex-X1 & 3x2.80 GHz Cortex-A78 & 4x2.2 GHz Cortex-A55

While using the SDK to limit the maximum frequency of the high performance cores, I expect that it has effects on all 4 big cores Cortex 78 and Cortex X1. However, it seems that this only affects the Cortex X1 core.

What can I do to limit the frequency of these Cortex A78 cores?

Thanks.
Luan Pham

Hello @minhluan1590 ,

Hope you are doing well. Thank you for your interest in the Galaxy Performance SDK.
In order to limit the maximum frequency of every core you can try using the following CustomParameter:

customParameter.add(TYPE_CPU_MAX, 0, 1000);

In the above example TYPE_CPU_MAX sets the maximum frequency of the cores to the lowest level (denoted by 0) allowed by Performance SDK for 1000ms.
To learn more you can check out the Javadocs from here.

PS: If you find this answer helpful please press the “like” button so that others can find it more easily.

Best Regards,
Shuvo
Samsung Developer Program

Hi @shuvo.saha,

Thank you a lot for your answer. Actually, Samsung Performance SDK does some verbose log while initializing, which showing that the MIN BUS, MIN CPU, MIN GPU parameters require 1000 ms timeout, but the MAX BUS, MAX CPU and MAX GPU can have timeout value very big.

I did follow your guide, which setting TYPE_CPU_MAX to zero every 800 ms, using 1000 ms timeout, it seems that it still has no effect at all.

Does Samsung Performance SDK have some special requirement that I don’t see in the documentation?

Bets regards,
Luan Pham

Hi @minhluan1590 ,

Hope you are doing well! We are very sorry to hear about your inconvenience.
As per our communication with the relevant development team, the code mentioned should have lowered the frequency of all cores to the lowest level.

We would like to request you share more about the nature of your application and what you are trying to achieve, to help us better answer your query. You can also check out the TYPE_TASK_AFFINITY API to see if it better suits your use case.

If the issue still persists we would like to request you to share your dumpstate logs by following the instructions below:

  • Dial *#9900#, Delete Dumpstate/logcat
  • Dial *#9900#, Select Debug Level to MID. This restarts the device.
  • Reproduce the issue/run your sample application
  • Again dial *#9900# and press “Run Dumpstate/logcat”
  • When it is finished press “Copy To SD Card (include CP Ramdump)
  • In the main directory of the device file system, please look for the directory ‘log’. That directory would contain the dupmstate log file generated, having the name format:
dumpState_<DEVICE MODEL>_<TIMESTAMP>

Best Regards,
Shuvo
Samsung Developer Program

Dear @shuvo.saha,

I have done the test for 2 devices: Galaxy A52 (Qualcomm) and Galaxy S20 FE (Exynos). Each phone, I set CPU MAX to 0 and 4. So there are totally 4 test cases with 4 dump log files.

The software I use is the sample project from Samsung Performance SDK zip file. After boosting, I keep on swiping the phone UI to make sure the CPU is always active.

Please see the result at:

I think that the only cores affected by the SDK are the two big cores (core 6 and 7). Can I know how to keep the frequency of other cores to a low level when I set CPU MAX to 0?

Best regards,
Luan Pham

Hello @minhluan1590 ,

Thank you for sharing the dumpstate logs. We will be communicating with the relevant development team about your query and will get back to you soon. Thank you again for your patience.

Best Regards,
Shuvo
Samsung Developer Program

1 Like