![Использование «простаивающего» процессорного времени по-прежнему замедляет работу других программ.](https://rvso.com/image/1289063/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%C2%AB%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B0%D0%B8%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%C2%BB%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8%20%D0%BF%D0%BE-%D0%BF%D1%80%D0%B5%D0%B6%D0%BD%D0%B5%D0%BC%D1%83%20%D0%B7%D0%B0%D0%BC%D0%B5%D0%B4%D0%BB%D1%8F%D0%B5%D1%82%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%83%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC..png)
Раньше, когда я запускал клиент Folding@Home, а теперь использую BOINC, они всегда использовали «простое» время процессора (для тех из вас, кто не знаком с этими программами, они выполняют огромные научные вычисления на вашем компьютере, поэтому очень интенсивно). Однако я заметил, что и в Windows, и в Linux при попытке сделать что-то другое (Firefox, программирование в Netbeans и т. д.) все эти программы работают крайне медленно.
Теперь я знаю, что можно делать такие вещи, как запуск клиентов только на 2 или 3 ядрах (предполагая 4-ядерную систему), но меня больше интересует, почему это "простое" время процессора может привести к замедлению программ с нормальным приоритетом. Разве процесс с нормальным приоритетом не будет запущен первым перед процессом с простаивающим приоритетом, прерывая его при необходимости? Почему ОС сложно с этим справиться?
решение1
Эти программы на самом деле не работают во время "простаивания" ЦП, они работают как процессы с низким приоритетом. Когда ОС запускает несколько приложений, она использует планировщик процессов, чтобы определить, какие процессы получают доступ к ЦП и как часто. Это называется вытесняющей многозадачностью.
Планировщик использует приоритеты процессов для определения того, какие процессы получают доступ к ЦП. Процесс с нормальным приоритетом будет иметь приоритет в планировщике над процессом с приоритетом бездействия, но ЦП все еще используется, и есть некоторые накладные расходы на переключение контекста между потоками и процессами.
Поскольку теперь ЦП работает на 100% все время, а не имеет доступных циклов простоя, нетрудно представить, что некоторые процессы и прерывания могут занять больше времени, чем если бы ЦП простаивал, из-за накладных расходов на переключение потоков.
Некоторые из этих программ имеют возможность фактически остановить выполнение своего процесса, когда компьютер используется. Они делают это, обнаруживая активность мыши или клавиатуры и отключаясь на определенный период времени, пока компьютер снова не определится как бездействующий, после чего они снова запустятся. Я бы посоветовал рассмотреть эту возможность.
Еще один момент, на который следует обратить внимание, заключается в том, что когда процессор простаивает, он потребляет значительно меньше энергии, чем когда он полностью загружен. Поэтому, пока ваши программы используют «запасные» циклы процессора, они могут легко удвоить потребление энергии вашим ПК, что будет стоить вам несколько долларов в месяц на электроэнергию.
решение2
Мне просто нужно добавить несколько небольших вещей к ответу Криса Томпсона, основную часть он уже сказал.
Потребление энергии и влияние на ваш счет за электроэнергию действительно могут быть значительными, просто чтобы подчеркнуть это еще немного. Причинами, по которым другие программы могут быть затронуты дополнительными потоками с низким приоритетом, могут быть дополнительная работа при изменении процессов (кэш и регистры фактически используются сейчас). И операции ввода-вывода также могут иметь некоторое влияние. Большая часть работы этих программ является только интенсивной для ЦП, и на нее может влиять приоритет процесса, но дополнительный ввод-вывод трудно приоритизировать. И дополнительное использование памяти также замедляет вашу систему. Если ваша память довольно заполнена, подкачка может значительно снизить производительность вашей системы.
Подробнее об энергопотреблении: я нашел фактические цифры энергопотребления для Intel Core i7 Extreme Edition около 300 Вт и более при большой нагрузке. Новые процессоры Intel Core имеют некоторые действительно хорошие функции энергосбережения, которые даже позволяют ЦП отключать питание для разных ядер, если они бездействуют. Так что я полагаю, что вы могли бы использовать на 150–200 Вт больше, если у вас всегда запущены такие программы. (Старые цифры, которые я нашел, показывают разницу в 150+ Вт) Но поскольку я не нашел надежных цифр, давайте предположим, что вы используете на 100 Вт больше (не забывайте, что ваша система охлаждения тоже должна работать больше, если ваш ЦП выделяет больше тепла) — это дает 100*24*30 = 72 кВт·ч/месяц или 864 кВт·ч/год, если ваш ПК будет работать 24/7.