Я использую Ubuntu 20.04 и работаю над оптимизацией производительности некоторого кода CFD. При хронометрировании моего кода для быстрой обратной связи относительно того, принесет ли польза какое-либо изменение, часто наблюдается довольно большое отклонение от запуска к запуску из-за включения фоновых процессов.
Поскольку код использует все доступные потоки, любой поток, перегруженный фоновыми задачами, заставляет все остальные ждать.
Теперь мой вопрос в том, есть ли быстрый и простой способ временно остановить фоновые/несущественные задачи и, таким образом, перевести мою систему в своего рода режим бенчмарка. Скрипты Bash, пакеты, встроенные опции — все приветствуется.
решение1
Один из способов — переключить систему в многопользовательский режим (т. е. без графического сеанса), сократив количество запущенных процессов примерно до 50:
sudo systemctl isolate multi-user.target
или даже переключиться на одного пользователя (будет запущено около 10 процессов)
sudo systemctl isolate runlevel1.target
# Enter
su -l your-user-name
А затем запустите свое приложение на этих уровнях выполнения.
После завершения теста переключитесь обратно в графический сеанс с помощью
sudo systemctl isolate graphical.target