O que você precisa é de cpufreqd , isso pode receber entradas de várias fontes e aplicar regras para definir cada CPU para um determinado perfil, dependendo de um sistema de pontuação.
Eu uso com o pacote lm-sensors . Isso permite que o cpufreqd consulte as temperaturas da placa-mãe e do chip, as tensões e a velocidade da ventoinha (e, dependendo do seu hardware, muitas outras coisas) e você pode usar isso para criar fatores de ponderação testados pelas regras para alternar perfis de energia.
Cada perfil de energia pode definir coisas como frequência de CPU individual, como essa frequência é govenerada e outras coisas como o brilho do monitor (para economia de energia) e a velocidade do ventilador. Pode até executar programas arbitrários para fazer coisas como enviar e-mails.
Note que o cpufreqd.conf padrão é apenas um exemplo e bastante inútil. O lm-sensors tem um utilitário para ajudá-lo a criar seu arquivo de configuração.