Звучит как плохие задачи(слишком мелкие, < 100ns, и планировщик слишком заметен относительно или слишком крупные, то есть планировщик голодает)/плохой планировщик.
Вообще кажется в плане планирования небольших задач(~10us) все пришли к примерно одному решению golang, kotlin, rust везде планировщик это глобальная очередь с мьютексом и локальные для потока spsc.
С некоторыми оптимизациями и страшным кодом.
А для больших задач кажется важнее скорее честность распределения, и учитывая то что больших задач не будет много, этот оверхед не будет заметен, и кажется любая очередь + мьютекс подойдёт
Может ещё на всяких процах со сложной топологией можно что то интересное делать но 6-8 ядер это не про это. Да и обычных пользователей часто встречается столько. Вообще если ядер меньше, порядка 2-4, мне кажется древние подходы из геймдева с отдельными тредами под разные задачи будут работать лучше чем тредпулы общего назначения.