Я вот в свое время с сетевыми приложухами работал, и заметил одну интересную вещь: выгодно крутить epoll в одном потоке, а оттуда уже будить workerы, и им вручать ценные задания для обработки.
К чему я это: epoll-поток по сути выполняет роль ведра, и я подумал(еще до spectre и meltdown) что а пусть будет микроядро с возможностью передачи данных в поток настоящего ядра. Это реализуемо - есть даже быстрая библиотека IPC с futex и shared memory, название только забыл. Но факт что есть. Тем более что у нас сейчас процы с 4 ядрами минимум.
Плюс к этому, я как-то участвовал в оценке возможности приема 40гбит по UDP, и да, там военный линукс, не установить NETMAP, time critical, надо еще на массив SSD-PCIE-плат писать, и до кучи данные отдавать в массив GPU на обработку, т.к. на эти данные еще и в реалтайме надо было реагировать и давать команды корректировки. Так вот, там нагрузка ведра у I7-4820K была 7-9% на ядро, то есть если её собрать к пучок, будет 9*8=72%. С запасом хватает и это был реальный стресс-тест.
К чему я это. А что если ведро отправить на отдельный процессор? Целиком. Сразу отпадает meltdown. Более того, можно таким же макаром еще и винду в параллель запустить(я придумал общий подход), и даже разветвить syscallы между видной и линуксом(файловая система и сеть в линукс, графика в винду например)