Dê uma olhada nos cgroups , ele deve fornecer exatamente o que você precisa - reservas de CPU (e mais). Sugiro ler como controlar a prioridade dos aplicativos usando cgroups .
Dito isso, coloque os processos importantes, ainda que ociosos, em grupo com 95% da CPU alocada e seus outros aplicativos em outro com 5% alocados - você obterá (quase) toda a energia para seus trabalhos quando necessário, enquanto o processo constantemente faminto por energia só terá 5% no máximo nesses momentos. Quando os surtos computacionais desaparecerem, todo o desempenho da CPU será lançado nos processos restantes. Como benefício, se você criar um cgroup especial (com requisitos mínimos de desempenho) para processos como sshd
, poderá efetuar login independentemente de estar tentando obter toda a CPU possível - algum tempo de CPU será reservado para sshd
.