big.little cluster not exposed?
#1
Question 
I've installed Ayufan's kernels on Armbian (both 5.0 and 4.20 work great, after fixing a missing link in /boot: uInitrd -> uInitrd-5.0.0-1103-ayufan-g5cdba61f032d).

But I've noticed that cpu-intensive tasks keep moving around the cores as if the operating system has no clue which ones are the big cores and which ones the little ones. I had to run "taskset -p -c 5-6 xxx" to force PID xxx to run on the A72 cores. When I do lscpu, I don't see that there are different classes of cores.
The raid benchmarks (in dmesg, at start of the system) gets results much lower than under Armbian's 4.4.174 kernel, which is consistent with the system running them on A57 cores instead of A72. I'm still using dtb-4.4.174 in /boot, so the kernel can pick the dtb from there.

It seems to have no effect, so I guess, that in Ayufan's kernels the dtb is compiled into the kernel? Has somebody else noticed this?Is there an easy way to use Armbian's DTB (when decompiling Armbian's DTB, it generates a DTS that has much more details than the DTS in Ayufan's kernels)?

Thanks,
Mathias
  Reply
#2
Yes, I have the same problem with mainline kernels from 4.18 to 5.0. The scheduler assigns mostly A53 cores and few times A72 when I try a load of only one process.

Regarding the performance, I use "stress-ng -cpu 1 --timeout 10 --metrics-brief" to test (and "schedtool" to force CPU affinity), and, with kernels 4.4, I get
~30 bogomips for A53 and
~58 bogomips for A72.

With kernels 4.18-5.0 I get
~44 bogomips for A72.

Moreover, when I use "userspace" governor and set the speed manually I get
~44 bogomips for 1800 MHz,
~44 bogomips for 1608 MHz, 
~43 bogomips for 1416 MHz,
~12 bogomips for 408 MHz.

Stranger still is that if I modify the device trees to change 1800000000 Hz to 2080000000 I get
~50 bogomips. WTF is happening here?
  Reply
#3
Hi,
  I've just tested with stress-ng with ubuntu and mainline kernel 5.0, and here is what I obtained :
Code:
stress-ng: info:  [3111] dispatching hogs: 1 cpu
stress-ng: info:  [3111] cache allocate: using built-in defaults as unable to determine cache details
stress-ng: info:  [3111] successful run completed in 10.09s
stress-ng: info:  [3111] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [3111]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [3111] cpu                 576     10.08     10.08      0.00        57.12        57.14

I did it several times and the results are quite similar.

To force the use of A53, I use taskset -c <CPUID>, the CPUID is 0->3 for A53 and 4->5 for A72, I obtained 28
Code:
stress-ng: info:  [3157] dispatching hogs: 1 cpu
stress-ng: info:  [3157] cache allocate: using built-in defaults as unable to determine cache details
stress-ng: info:  [3157] successful run completed in 10.09s
stress-ng: info:  [3157] stressor       bogo ops real time  usr time  sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [3157]                           (secs)    (secs)    (secs)   (real time) (usr+sys time)
stress-ng: info:  [3157] cpu                 285     10.09     10.07      0.00        28.25        28.30

Note that the kernel >4.15 includes the spectre correction which may slightly lower the performances.

Concerning the lpddr4, there is a specific driver file *.bin see : https://wiki.pine64.org/index.php/ROCKPr..._Developer
but do not know how to use them. If you have an idea, tell me because I am very interrested.

Best regards.
LMM
  Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  Big Little Cluster Questions TheUnknownMuncher 2 78 06-23-2019, 12:42 PM
Last Post: TheUnknownMuncher

Forum Jump:


Users browsing this thread: 1 Guest(s)