Será que renegar (abaixar) um processo irá torná-lo mais rápido sob pressão de memória?

1

Digamos que eu queira priorizar alguns processos que estão sendo executados em um dispositivo com alta pressão de memória. Esses processos são processos da interface do usuário (especificamente Android) e estão sendo executados muito lentamente nesse estado. Quando eu grep para o meu processo em

ps -eo min_flt,maj_flt,cmd

Posso ver que minhas principais falhas de página são muito altas (milhares de ações de interface do usuário, como abrir uma nova atividade do Android).

Se eu renice meus processos para uma baixa qualidade (maior prioridade), posso esperar ver menos falhas de página? Aumentar a prioridade deve dar a ela mais recursos de CPU, mas não tenho certeza se isso acelerará o processo se o gargalo for pressão de memória / falhas de página.

    
por Eric S. 05.12.2016 / 23:23

1 resposta

2

Increasing priority should give it more CPU resources, but I'm not sure if that will speed up the process if the bottleneck is memory pressure/page faults.

Não vai. O nível nice afeta apenas o agendador.

Com privilégios de root, você pode usar mlockall(MCL_CURRENT|MCL_FUTURE) para bloquear as páginas mapeadas na RAM. No Linux. Não sei se alguma dessas facilidades está disponível no Android.

Há algum tempo, havia um patch que permitia herdar mlockall status em exec , o que permitiria a criação de programas wrapper simples para executar qualquer executável com mlockall . link Infelizmente, o patch não entrou no mainline Linux, então você terá que editar o codez, ou se ele é um interpretador de linguagem de script, encontre uma maneira de fazer uma chamada nativa para mlockall .

    
por 06.12.2016 / 00:10