Как работает шедулер потоков на big.LITTLE типа RK3399? кто не в курсе у него 2 быстрых и 4 ядра медленнее
Например как выглядит cpu benchmark типа такого
for threads in {1..6}; do
sysbench --test=cpu --num-threads=$threads --cpu-max-prime=10000 run
done
определенно linux kernel знает что ядра разные. Насколько умный kernel чтоб выполнять cpu-bound потоки на быстрых ядрах? Это можно узнать выполнив тест выше несколько раз.
RK3399 у меня нет, но есть Snapdragon 835 (4 big + 4 LITTLE) c убунтой и sysbench 1.0.11
Экран при этом телефона включен и экономия энергии в android выключена. Т.е. производительность максимальная.
Update:
Вот странный бенчмарк. на 6-ти потоках медленнее чем на 4х. отзефак? и почему он на двух не померял?
https://youtu.be/k4kMEbeORLo?t=527
А вот бенчмарк для одного и 6ти потоков:
https://forum.armbian.com/topic/3946-rk3399-orange-pi/?do=findComment&comment=60113
производительность на 6ти потоках в 4.07 раз больше чем на одном.
Похоже на то что ядро CPU-bound потоков отдает нужным ядрам. Верно или это случайно у него так вышло?
Итого пара вопросов:
Можно ли ядру сказать вот этот поток не надо на big-ядрах запускать, а вот тот пусть только на little-ядрах работает?
Влияет ли приоритет потока на то на каком ядре (core) ядро (kernel) будет выполнять поток?