Eu acho que o problema do soluço não é necessariamente causado pela troca. Se um programa estiver reproduzindo algo, o Linux deve perceber isso e não trocá-lo. Programas que não fazem muito são os primeiros que são trocados. Você pode verificar se o programa está realmente sendo trocado olhando para o campo RSS
/ RES
do ps ou top . RSS
é o tamanho do conjunto residente, a memória física não trocada que uma tarefa está usando (em kiloBytes).
Acho que o seu problema provavelmente é causado por agendamento inadequado de CPU e E / S e um pouco de ineficiência do Rhythmbox, o que o torna sensível a altas cargas do sistema. A prioridade da CPU pode ser alterada com os comandos nice e renice . A prioridade de E / S pode ser alterada com o comando ionice . Somente o super usuário pode usar altas prioridades. Você também deve saber que os caras do kernel do Linux estão tentando melhorar a capacidade de resposta dos sistemas de desktop com vários patches de baixa latência, portanto, considere usá-los. Um deles é um patch de ~ 200 linhas escrito por Mike Galbraith que impressionou até Linus. A alternativa para esse patch é o truque dos cgroups de Lennart Poettering que eu acho que será o padrão no Fedora 15.
De qualquer forma, sem esses patches, existem duas opções: iniciar o programa com alta prioridade ou alterá-lo posteriormente. Para a primeira opção, você pode usar um script de wrapper no Rhythmbox:
#!/bin/sh
# Run Rhytmbox with high CPU and I/O priorities
nice -n -10 ionice -c 1 -n 1 su -l -c rhythmbox alexei
Você precisará executá-lo como root. Se você não quiser fazer login como root apenas para iniciar isso, use su
ou sudo
.
Quanto à alteração da prioridade posteriormente, se você estiver com preguiça de fazer login como root para alterá-la, tente usar um trabalho cron que seja executado a cada 5 minutos e defina a prioridade do rhythmbox
processo, mas eu não recomendaria isso:
#!/bin/sh
renice -n -10 -p `pidof rhythmbox`
ionice -c 1 -n 1 -p `pidof rhythmbox`