Eu acho que o problema do soluço não é necessariamente causado pela troca. Se um programa está jogando 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 observando o campo RSS
/ RES
de ps ou topo . RSS
é o tamanho do conjunto residente, a memória física não trocada que uma tarefa está usando (em kiloBytes).
Eu acho que o seu problema é provavelmente causado por CPU incorreto e programação de 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 ionice comando. Somente o superusuá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 desktop com vários patches de baixa latência, então você pode considerar usá-los. Um deles é um patch ~ 200 linhas escrito por Mike Galbraith , que impressionou até Linus. A alternativa para este patch é truque de 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 prioridade alta ou alterá-lo depois. Para a primeira opção, você pode usar um script wrapper em torno do 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 começar, use su
ou sudo
.
Quanto a mudar a prioridade depois, se você está com preguiça de fazer login como root para alterá-la, pode tentar usar um cron job que execute a cada 5 minutos e defina a prioridade do processo rhythmbox
, mas não recomendo fazer isso:
#!/bin/sh
renice -n -10 -p 'pidof rhythmbox'
ionice -c 1 -n 1 -p 'pidof rhythmbox'