Hello -- Does the Snapdragon Kryo ever disable memory cache during runtime?
On memory-bound workloads designed to induce cache misses and thrashing, I consistently observe long runtimes likely attributable to memory stalls. Additionally, when run with a fixed speed CPU policy (linux userspace rather than schedutil), the runtime is sharply bimodal in the speed selected. Benchmarks run at slower speeds (up to about 70% of max_speed) all take about 3x longer than runs done at higher speeds (above 70%, up to max_speed).
This behavior would make sense if the system is disabling one or more levels of cache -- possibly because it detects that recent history has been frequently stalling on memory, and it is trying to optimize (minimize) power usage instead. Is this hunch correct?
This appears very device-specific behavior: The runtime of the same memory-bound workload, when run on other, older hardware (Krait 450), is much **shorter**. Nor is it bimodal.
None of this behavior appears with workloads that are CPU-bound. With a compute-bound workload, runtime smoothly tracks CPU speed, as expected. Further, runtime is faster on the Kryo than on the Krait, as expected.
Followup -- Is there a way to disable the memory cache(s) programmatically? Other architectures offer instructions to disable caching, and this would provide a way to evaluate the cause of the observed behavior.
Disabling Snapdragon Cache
Posted: Tue, 2022-03-08 09:47
Hello,
I would like to suggest you here about this issue