Usando e entendendo as opções relacionadas ao planejamento systemd em um contexto de desktop

8

Nos arquivos de serviço do systemd, é possível definir as seguintes opções relacionadas ao planejamento (a partir do systemd.exec man page , corrija-me se estiver errado):

Nice Sets the default nice level (scheduling priority) for executed processes. Takes an integer between -20 (highest priority) and 19 (lowest priority). See setpriority(2) for details.

Qual é o nível familiar agradável. Parece que seu efeito é "subvertido" de alguma forma devido ao recurso "autogroup" dos kernels linux recentes. Então, as opções abaixo podem ser o que eu realmente quero definir para manter os processos se comportando bem para a minha experiência de desktop.

CPUSchedulingPolicy Sets the CPU scheduling policy for executed processes. Takes one of other, batch, idle, fifo or rr. See sched_setscheduler(2) for details.

CPUSchedulingPriority Sets the CPU scheduling priority for executed processes. The available priority range depends on the selected CPU scheduling policy (see above). For real-time scheduling policies an integer between 1 (lowest priority) and 99 (highest priority) can be used. See sched_setscheduler(2) for details.

CPUSchedulingResetOnFork Takes a boolean argument. If true, elevated CPU scheduling priorities and policies will be reset when the executed processes fork, and can hence not leak into child processes. See sched_setscheduler(2) for details. Defaults to false.

Eu entendo a última opção. Eu entendo pela explicação dos dois primeiros que eu posso escolher uma política de escalonamento e então, dada essa política, uma prioridade. Não está totalmente claro para mim o que devo escolher para quais tipos de tarefas. Por exemplo, é seguro escolher "inativo" para tarefas de backup (com uso intensivo de CPU, porque desduplica), ou outro é mais adequado?

Em geral, obter uma visão geral compreensível de cada política, com cada uma das suas prioridades e adequação para fins específicos é o que estou procurando. Também a interação com o nível bom é de interesse.

Próximo ao agendamento da CPU, há o agendamento de IO. Eu acho que isso corresponde a ionice (me corrija se eu estiver errado).

IOSchedulingClass Sets the I/O scheduling class for executed processes. Takes an integer between 0 and 3 or one of the strings none, realtime, best-effort or idle. See ioprio_set(2) for details.

IOSchedulingPriority Sets the I/O scheduling priority for executed processes. Takes an integer between 0 (highest priority) and 7 (lowest priority). The available priorities depend on the selected I/O scheduling class (see above). See ioprio_set(2) for details.

Aqui vemos a mesma estrutura do agendamento da CPU. Eu estou procurando o mesmo tipo de informação também.

Para todas as opções de "Programação", as páginas do manual mencionadas não são claras o suficiente para mim, principalmente para traduzir as coisas para o ponto de vista de um usuário de área de trabalho tecnicamente inclinado.

    
por equaeghe 25.01.2017 / 11:14

1 resposta

-2

O conselho de ajuste clássico é "Don't Optimize, Benchmark".

Em vez de se preocupar com conselhos gerais, comece com um caso específico em que você está preocupado com a melhoria e foi avaliado como tendo uma preocupação de desempenho específica. Deixe os dados permitirem que você ative a diretiva correta. Com os dados, pode ficar claro se o seu processo sofre de uma prioridade ruim, está sobrecarregando a CPU ou tem outro problema.

Os desktops modernos costumam ser rápidos para funcionar sem qualquer ajuste.

    
por 19.04.2018 / 01:08