Estou usando o Ubuntu 20.04 e trabalhando na otimização de desempenho de alguns códigos CFD. Ao cronometrar meu código para obter feedback rápido sobre se alguma modificação é benéfica, geralmente há uma variação bastante grande de execução para execução, devido ao início de processos em segundo plano.
Como o código usa todos os threads disponíveis, qualquer thread sobrecarregado com tarefas em segundo plano faz com que todos os outros esperem.
Agora, minha pergunta é se existe ou não uma maneira rápida e fácil de interromper temporariamente tarefas em segundo plano/não essenciais e, portanto, colocar meu sistema em uma espécie de modo de benchmark. Scripts Bash, pacotes, opções integradas, tudo é bem-vindo.
Responder1
Uma das maneiras é mudar o sistema para destino multiusuário (isto significa sem sessão gráfica) reduzindo os processos em execução para cerca de 50:
sudo systemctl isolate multi-user.target
ou até mesmo mudar para usuário único (cerca de 10 processos serão executados)
sudo systemctl isolate runlevel1.target
# Enter
su -l your-user-name
E então execute seu aplicativo nesses níveis de execução.
Quando o benchmark terminar - volte para a sessão gráfica
sudo systemctl isolate graphical.target