Nos arquivos de serviço systemd, é possível definir as seguintes opções relacionadas ao agendamento (na systemd.exec
página de manual , corrija-me se estiver errado):
Agradável Define o nível agradável padrão (prioridade de agendamento) para os processos executados. Leva um número inteiro entre -20 (prioridade mais alta) e 19 (prioridade mais baixa). Veja setpriority (2) para detalhes.
Qual é o bom nível familiar. Parece que seu efeito é 'subvertido' devido ao recurso de 'grupo automático' dos kernels recentes do linux. Portanto, as opções abaixo podem ser o que eu realmente gostaria de definir para manter os processos se comportando bem na minha experiência na área de trabalho.
CPUSchedulingPolicy Define a política de agendamento da CPU para processos executados. Tira um dos outros, lote, inativo, fifo ou rr. Veja sched_setscheduler (2) para detalhes.
CPUSchedulingPriority Define a prioridade de agendamento da CPU para processos executados. O intervalo de prioridade disponível depende da política de agendamento da CPU selecionada (veja acima). Para políticas de agendamento em tempo real, um número inteiro entre 1 (prioridade mais baixa) e 99 (prioridade mais alta) pode ser usado. Veja sched_setscheduler (2) para detalhes.
CPUSchedulingResetOnFork Leva um argumento booleano. Se verdadeiro, as prioridades e políticas de agendamento da CPU elevadas serão redefinidas quando os processos executados se bifurcam e, portanto, não podem vazar para os processos filhos. Veja sched_setscheduler (2) para detalhes. O padrão é false.
Eu entendo a última opção. Concluo da explicação dos dois primeiros que posso escolher uma política de agendamento e, em seguida, dada essa política, uma prioridade. Não está totalmente claro para mim o que devo escolher para que tipo de tarefas. Por exemplo, é seguro escolher 'inativo' para tarefas de backup (relativamente intensivas da CPU, devido à deduplicação) ou é outra mais adequada?
Em geral, é o que estou procurando obter uma visão geral compreensível de cada política, com cada uma de suas prioridades e adequação a finalidades específicas. Também a interação com o bom nível é de interesse.
Ao lado do agendamento da CPU, há agendamento de E / S. Eu acho que isso corresponde a ionice
(me corrija se eu estiver errado).
IOSchedulingClass Define a classe de agendamento de E / S para processos executados. Obtém um número inteiro entre 0 e 3 ou uma das seqüências nenhuma, em tempo real, melhor esforço ou inatividade. Veja ioprio_set (2) para detalhes.
IOSchedulingPriority Define a prioridade de agendamento de E / S para os processos executados. Pega um número inteiro entre 0 (prioridade mais alta) e 7 (prioridade mais baixa). As prioridades disponíveis dependem da classe de planejamento de E / S selecionada (veja acima). Veja ioprio_set (2) para detalhes.
Aqui vemos a mesma estrutura do agendamento da CPU. Também estou procurando o mesmo tipo de informação.
Para todas as opções de 'Agendamento', as páginas de manual mencionadas não são claras o suficiente para mim, principalmente na tradução de coisas para o ponto de vista de um usuário de desktop um pouco tecnicamente inclinado.
nice
valor se aplica).