Skip to content

Crypto performance challenge

Quentin Delhaye edited this page May 5, 2026 · 8 revisions

The main SoC on the board is a Quad-core 32-bit Qualcomm Krait 400 CPU to can go up to 2.26GHz.

To check the thermal zone in the SoC:

citro@board:~$ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(cat $i/type)"; done
/sys/class/thermal/thermal_zone0: pm8841-thermal
/sys/class/thermal/thermal_zone1: q6-dsp-thermal
/sys/class/thermal/thermal_zone10: gpu-bottom-thermal
/sys/class/thermal/thermal_zone11: pm8941-thermal
/sys/class/thermal/thermal_zone2: modemtx-thermal
/sys/class/thermal/thermal_zone3: video-thermal
/sys/class/thermal/thermal_zone4: wlan-thermal
/sys/class/thermal/thermal_zone5: cpu0-thermal
/sys/class/thermal/thermal_zone6: cpu1-thermal
/sys/class/thermal/thermal_zone7: cpu2-thermal
/sys/class/thermal/thermal_zone8: cpu3-thermal
/sys/class/thermal/thermal_zone9: gpu-top-thermal

The main zones that will be of interest to us thus are 5 through 8, the cpu* thermal zones. For example, we can keep an eye on cpu1 by calling watch -n 0.1 "cat /sys/class/thermal/thermal_zone6/temp"

Knobs to play with:

  • CPU affinity
  • Find a way to disable some cores
  • Use Neon instructions
  • Change the frequency management policy: /sys/module/cpufreq/parameters/default_governor

To monitor CPU frequency, first enable its tracing:

echo 1 | sudo tee /sys/kernel/tracing/events/power/cpu_frequency/enable

The default CPU governor is conservative:

citro@board:~/LKM/vault$ cat /sys/module/cpufreq/parameters/default_governor 
conservative

Limitations and unknown at the moment

  • Why don't we have a cpufreq subfolder in /sys/devices/system/cpu/cpu*/, even though the parameter CONFIG_CPU_FREQ=y is baked into the kernel? Without it, we don't have control over the CPU governor.
  • Why can't we manage which CPU is online, even though CONFIG_HOTPLUG_CPU=y is active in the kernel? It should be in /sys/devices/system/cpu/cpu*/online, allowing us to disable some core, lowering the power dissipation, potentially increasing the frequency of the remaining cores.

Resources and references

Clone this wiki locally