Я запускаю Ubuntu основной сервер с двумя процессами: - процесс 1 - работающее вычисление 100% времени работы, и который я использую для разделения вычислительной власти сообществу (это работает prio 19) - обрабатывают 2 - работающие вычисления для 5-10mins, время от времени, который я использую для вычислений для меня (это выполняет @prio-19),
Я хочу, чтобы процесс 2 был дан с 100% вычислительной мощности (обработайте 1, в тот момент должен быть рядом с 0% ЦП).
Я попытался использовать хороший / renice и обработать 1, дан с (самым низким) prio 19, и процессу 2 дают prio-19 (максимально возможный). Но лучше всего то, что я получаю, составляет 50% ЦП для процесса 1, и 50% ЦП для процесса 2 (сверился с htop) - который отчасти удивил меня...
Оба процесса являются многопоточными, и - когда выполнение одного - использует 100% всех ядер ЦП. Никакие другие ресурсы (ввод-вывод, память, пропускная способность...) не могут влиять на это использование.
Я не хочу вручную останавливаться/начинать любой процесс, когда мне нужна вычислительная мощность (оба процесса должны работать все время); 100% ЦП для процесса 2 должны быть даны автоматически.
Что я должен сделать для достижения моей цели?Спасибо.
Благодаря @ubfan1 я исследовал различные стратегии планирования, и вот лучший результат, которого я достиг до сих пор:
процесс 1 работает с политикой SCHED_BATCH
процесс 2 работает с политикой SCHED_RR
результаты: когда оба процесса работают одновременно: - процесс 1 дан приблизительно с 5% ЦП - обрабатывают 2, дан приблизительно с 95% ЦП
и то, когда только обрабатывают 1, работает, вычисления (обработайте 2, ожидает моего входа для запуска, вычисления) - обрабатывают 1, использует 100% ЦП
Если кому-то интересно больше, считайте это: