Executar processo com prioridade mais alta

14

Quero executar mplayercom prioridade mais alta do que qualquer outro processo, incluindo os processos de IO. Como eu posso fazer isso?

SHW
fonte
Não há resposta variante entre unix para esta pergunta. Em geral, é melhor descrever qual sistema operacional você está usando (incluindo a distribuição para Linux, mas aqui não importa muito, se é que faz). Adicionei uma linuxtag, altere-a se não for isso que você está usando.
Gilles 'SO- stop be evil'
Você se importa se eu perguntar por que você está procurando aumentar a prioridade do mplayer? Eu perguntei, porque eu já tive problemas antes em aumentar a prioridade do mplayer, o efeito foi oposto ao que eu estava tentando realizar, porque o mplayer se ocupava gastando o tempo da CPU na limpeza de pós-produção e depois paralisava quando a rede finalmente teve um suspiro de ar para pegar mais conteúdo, então o mplayer gaguejou de volta à vida, apenas para parar novamente à espera da rede.
killermist
Eu perguntei a essa causa, estou jogando um filme através do mplayer. Sempre que tento baixar alguns arquivos de GB na rede. Mplayer observa fatias e um empurrão enquanto joga.
SHW

Respostas:

16

Para definir a gentileza (vinculado à CPU), use nice. Para definir a gentileza IO (IO bound), use ionice. Consulte as respectivas páginas do manual para obter mais informações. Você pode usá-los juntos da seguinte maneira:

ionice -c 2 -n 0 nice -n -20 mplayer

Nota: o nível mais baixo de gentileza (menor significa mais favorável) que você pode definir é determinado por limits.conf. No meu computador, o arquivo está localizado em /etc/security/limits.conf.

phunehehe
fonte
1
Mencionar as classes io scheduler é bom, porque é provável que isso seja um grande fator. Não vale nada que, para a classe de -c2agendamento intermediária , os processos sejam classificados por padrão pelo bom nível; portanto, o comando de exemplo que você forneceu não é realmente necessário. Pode-se tentar colocar o mplayer na -c1aula em tempo real. (Com acesso root.)
mattdm 17/02/11
7

Em geral, como usuário não root, você pode apenas diminuir a prioridade de suas tarefas, não aumentá-las. Portanto, uma abordagem seria diminuir a prioridade de todo o resto. Ou, você pode configurar algo no nível do sistema que lide com suas prioridades.

Se você estiver usando uma distribuição Linux relativamente moderna, a maneira mais poderosa seria com grupos de controle . Isso está em sua infância, então basicamente você teria que configurar tudo manualmente, mas, em resumo, o que você deseja é configurar o categorizador para colocar processos diferentes em diferentes grupos de controle de CPU e, então, dar ao processo mplayer mais compartilhamentos de CPU.

mattdm
fonte