Ajuste o agendador de tarefas do Kernel para melhorar o desempenho no Android [Parte 2]

, seja bem -vindo de volta a um guia de ajustes para Android. No artigo anterior, abordamos algumas opções fundamentais de configuração do agendador de tarefas, que podem ser sintonizadas manualmente para aumentar o desempenho em qualquer tipo de dispositivo Android. Em situação que você ainda não verificou esse artigo, sugerimos fortemente que isso antes de prosseguir, pois inclui algumas informações benéficas para que muito melhor compreenda exatamente como o agendador de tarefas realmente funciona, bem como exatamente como modificar o agendador de tarefas do kernel.

Ajuste do agendador de tarefas do kernel

Além dos parâmetros fundamentais discutidos no artigo anterior, o Linux Task Scheduler implementa alguns recursos especiais que tentam melhorar sua distribuição justa do poder de processamento. Esses recursos não criam exatamente os mesmos resultados em todos os sistemas e casos de uso, para que possam ser ativados ou desativados em tempo de execução. Eles são oferecidos com os Debugfs do kernel. Nem todos os kernels suportam o suporte para os recursos do Scheduler Debugfs de ajuste. Você pode descobrir se o seu kernel suporta alterar esses recursos inserindo o comando em conformidade com um aplicativo de terminal (como superusuário):

gato/sys/kernel/debug/sched_features
Se você obtiver uma saída como a seguinte, seu kernel suporta alteração de recursos de depuração no tempo de execução:

Se você obtiver uma saída de erro “não tais dados ou diretório”, tente instalar os depuradores do kernel; em situação, ele é oferecido, no entanto, não é montado na inicialização:

Mount -t Debugfs Nenhum/Sys/Kernel/Debug
Se este comando não criar um erro, você pode tentar passar o primeiro comando novamente.

Alternando um recurso de depuração do agendador

Para permitir um recurso de depuração do agendador, basta exigir seu nome dentro do arquivo sched_features. Por exemplo:

echo gentle_fair_sleepers>/sys/kernel/debug/sched_features
Para desativar um recurso, você também deve compor seu nome dentro do mesmo arquivo, no entanto, com um “NO_” na frente. Por exemplo:

ECHO NO_GENTLE_FAIR_SLEEPERS>/SYS/KERNEL/DEBUG/SHGEND_FEATURES

Não perca
Android Ram Administration Ideas, bem como truques

Recursos de depuração do agendador mais típicos

Não é garantido que um certo kernel suportará todos os recursos do agendador de tarefas discutidos abaixo. O suporte a recursos varia entre as versões do kernel, bem como entre as implementações de gadgets. Todos os recursos suportados são aqueles contidos na saída de comando ‘CAT/SYS/KERNEL/Debug/Sched_Features’. Os recursos que começam com um “NO_” são os suportados, no entanto, atualmente desativados.

Gentil_fair_sleepers

Essa função tenta minimizar o tempo de execução dos dormentes (processos que tendem a dormir por um longo tempo). Como resultado, mais tempo de execução é distribuído para tarefas ativas. Algumas pessoas relatam que desativar essa função pode aumentar a capacidade de resposta em dispositivos de ponta.

Affine_wakeups

Coloque uma tarefa que acorde exatamente na mesma CPU que a tarefa que a acordou. Isso pressupõe que a nova tarefa funcionará exatamente com os mesmos dados na memória que o anterior. Organizá -lo exatamente na mesma CPU aprimorará a localidade do cache (leia abaixo para obter mais informações sobre a localidade do cache).

Rt_runtime_share

Exigimos algumas tarefas mais profundas que organizem o entendimento para compreender esse recurso: no Linux, existem diferentes prioridades de organização de tarefas. A preocupação de uma tarefa define exatamente o quão importante é essa tarefa, bem como exatamente quanto recursos obterão do agendador. Muitas tarefas são executadas utilizando prioridade Agend_Other (Sched_Normal em kernels mais recentes). Outras prioridades são agendas, agendamento, agendamento, sched_fifo e sched_dead. As últimas três dessas prioridades são prioridades em tempo real, criadas para tarefas necessárias para executar o mais rápido possível e assim que forem criadas.

O agendador de tarefas atribui a cada CPU dois parâmetros especiais: rt_runtime e rt_period. Rt_period é o período de organização equivalente à largura de banda de 100% da CPU. RT_Runtime é o momento em que cada CPU executa apenas tarefas em tempo real. Todas as outras tarefas são executadas para o tempo [rt_period – rt_runtime]. Normalmente, o agendador de tarefas do kernel fornece 95% do tempo de uma CPU para tarefas em tempo real e 5% para todos os outros.

RT_RUNTIME_SHARE permite que uma CPU execute uma tarefa em tempo real até 100% do tempo, emprestando RT_Runtime de outras CPUs. As CPUs que emprestam RT_Runtime podem executar tarefas não reais por mais tempo. Alguns designers de kernel personalizados desabilitam essa função por padrão, pois pode tornar uma CPU que não pode atender às tarefas que não são de tempo de realização estritamente organizadas nela, além de diminuir o desempenho.

Next_buddy

Geralmente no Linux, quando uma tarefa acorda, ele antecipou (= leva a localização) a tarefa que estava em execução antes na CPU (WakeUp Preemption). Next_buddy lida com a situação quando a tarefa que acorda não causa preempção. Quando Next_buddy estiver ativado, a tarefa que acabou de acordar será executada no próximo evento de arranjo. Essa função também aprimora a localidade do cache.

Deve ler
Hackbench – Descubra o melhor kernel de desempenho para Android

Last_buddy

Cnull

Back to top