"Оптимізація роботи багатоядерних процесорів" або "Ручне розподіл завантаження ядер". [CPU Control] [оновлення]

  1. Оптимізуємо роботу процесора, розподіляючи навантаження по ядрах.
  2. Післямова.

Вітаю, дорогі друзі, читачі, знайомі і всякі інші особистості.

Сьогодні я вирішив оновити і доповнити одну зі старих і неповних статей по оптимізації. Так що .. поїхали Сьогодні я вирішив оновити і доповнити одну зі старих і неповних статей по оптимізації

Не дивлячись на те, що багатоядерні процесори (і вже, тим більше, багатопроцесорні комп'ютери) давно увійшли в наше життя, далеко не всі програми вміють коректно взаємодіяти з декількома ядрами, а так само грамотно використовувати і оптимізувати доступні системні ресурси.

Не дивлячись на те, що багатоядерні процесори (і вже, тим більше, багатопроцесорні комп'ютери) давно увійшли в наше життя, далеко не всі програми вміють коректно взаємодіяти з декількома ядрами, а так само грамотно використовувати і оптимізувати доступні системні ресурси

Вже давненько я зіткнувся з цікавою програмою, яка дозволяє управляти пріоритетом використання ядер процесорів, тобто фактично розподіляти навантаження на ту чи іншу ядро. Про неї і піде мова в цій невеликій статті.

Взагалі кажучи, процесор є одним з ключових, якщо не найголовніших, компонентів, що відповідають за продуктивність в системі, тому має сенс коректно і правильно використовувати його можливості. Глобально, в цьому напрямку, з точки зору програмної оптимізації є два шляхи:

  • У випадку з багатоядерними процесорами, - це розподіл навантаження по ядрах. Справа тут в тому, що з самого початку не всі процеси можуть використовувати адекватно все ядра в системі (тобто немає підтримки багатоядерності) або коректно займати ті з них, що ні зайняті обрахуванням інших додатків і потреб, а тому має сенс вручну (або автоматично) розносити додатки на окремі ядра або групи ядер, для коректного розподілу навантаження і / або ушустренія роботи
  • У випадку з усіма процесорами, тобто одноядерними в тому числі, - це робота з пріоритетами системи. Справа в тому, що за замовчуванням Windows присвоює всім запускаються процесам нормальний пріоритет, що ставить додатки в рівні умови в плані отримання процесорних потужностей. Однак, погодьтеся, що, скажімо, 3D гра і звичайний блокнот, - це трохи різні додатки і, очевидно, що грі потрібно більше ресурсів процесора в реальному часі, т.к перебуваючи в тривимірному додатку Ви навряд чи контактуєте з цим самим блокнотом і він вам не потрібен до пори до часу (і спеціальних потужностей процесора блокноту майже не треба, - там тієї програми то .. раз два і нема). Звідси, з одного боку логічно випливає, що пріоритети у різних додатків повинні бути різні (особливо за часів багатоядерності то), але на практиці це далеко від реальності.

І в тому і в іншому випадку, вирішити проблему допоможуть програми для того призначені. Про розподіл мова піде нижче.

Оптимізуємо роботу процесора, розподіляючи навантаження по ядрах.

Що це за розподіл навантаження і як воно виглядає? Говорячи простою мовою, можна вручну, запустивши програмку, повісити всі системні служби на прораховування першим ядром, антивірус і фаєрволл другим, браузер і аську третім і тд і тп. Подібні маніпуляції, буває підвищують продуктивність системи за рахунок більш адекватного використання процесорних ядер, тобто в певному сенсі виходить така собі розширена насильницька підтримка багатоядерності.

У цьому нам допоможе така програма, як CPU Control. На жаль, она дещо застаріла і може підтримувати не всі процесори, але для рішень 2-4 ядра підійде цілком. З більш многоядренимі версіями не факт. Так само, що сумно, але хочеться відзначити, що є підтримка не всіх версій процесорів, що, знову ж таки, пов'язано з давністю поновлення програми, але, думаю, не заважає все таки деяким поекспериментувати.

Власне, програма повністю безкоштовна, підтримує російську мову, не вимагає установки (можна тягати на флешці) і гранично проста в управлінні. Власникам одноядерних процесорів навряд чи принесе якусь користь, якщо тільки одноядерний процесор не має в собі функцію розбиття фізичного ядра на два логічних.

Завантажити можна прямо з мого сайту, а саме звідси .

Після запуску бачимо приблизно таку картину:

Де відразу йдемо на вкладку "Options" і задаємо галочками "Автозапуск з Windows", "Мінімізувати", мова і ставимо галочку 4 ядра, якщо у нас їх, власне, 4 або не ставимо, якщо, власне, їх два.

Далі є кілька шляхів, а саме:

  • Ручний, тобто коли ми задаємо для кожного процесу все самі, тобто на якому ядрі / ах він буде .. м .. оброблятися
  • Авто, тобто, коли програма сама призначає розподіл по ядрах
  • CPU1, тобто, коли пріоритет віддається першому ядру
  • CPU2, тобто, коли пріоритет віддається другому ядру
  • .

Останні два нас не цікавлять, бо ідея передачі навантаження кудись в одне місце мені не ясна. Ми як-ніяк займаємося оптимізацією, а не навпаки Останні два нас не цікавлять, бо ідея передачі навантаження кудись в одне місце мені не ясна . Тому будемо працювати з першими двома.

Для початку пару слів про "Авто". Це досить зручний режим, коли немає особливого бажання морочитися з тонким налаштуванням або знань на цю саму настройку не вистачає. Тому можна вибрати цей режим і один з 9 профілів для нього, які, на базі деяких правил, розподіляють додатки по ядрах. Так можна отримати непоганий приріст продуктивності без особливих проблем, особливо, якщо деякий час повибірать правильний профіль під Вашу поточну систему.

Другий варіант, як уже говорилося, - це режим "Ручний". Він складніший, т.к вимагає певного розуміння концепції роботи системи, додатків і тп.

к вимагає певного розуміння концепції роботи системи, додатків і тп

Перейшовши в цей режим, Ви зможете самі розподіляти процеси по ядрах або групам ядер. Робиться це шляхом виділення одного або кількох процесів і наступним натисканням правої кнопки мишки. Тут власне, CPU і його номер - це номер ядра. Тобто якщо Ви хочете повісити процес на 4 -е ядро, то вибираєте CPU4, якщо на 1 -е і 3 -тье, то CPU 1 + 3, і тд. Думаю, що ідея зрозуміла. Тепер про те як краще розподіляти.

Глобально, має сенс розтягувати процеси на групи, а ресурсомісткі додатком виділяти все ядра відразу. Тобто, наприклад, фаерволл і антивірус віддати під опіку 3 + 4 ядер, системні дрібні процеси, а так само невеликі програми, на кшталт аськи, Punto Switcher та іншу шушваль на 1-е, ігри-фотошоп-інше-важке на 1+ 2 + 3 + 4. Або, як варіант, спробувати все повісити на все і подивитися, що буде.

Моніторити навантаження на ядра можна в тому ж диспетчері завдань. Важливо включити в ньому моніторинг навантаження на ядра, що робиться по кнопці "Вид" - "Висновок часу ядра" і "Вид" - "Завантаження ЦП" - "За графіком на кожен ЦП". В ідеалі таки робити все це не в режимі простою відразу після запуску комп'ютера, а в режимі офлайн системи, тобто при запущених ресурсоємних додатках, на зразок ігор, фотошоп або що там у Вас їсть ресурси.

До слова, ось на 4-х ядрах навіть в автоматичному режимі приріст продуктивності значно відчутний, зате на двох чомусь навіть в ручну не завжди вдається досягти потужності.

У загальному і цілому тут величезне поле для експериментів, яке Вам, сподіваюся, буде вивчити, бо у кожного своя система, набір програм і все таке інше. Поле, до речі, мінне, бо легко можна домогтися зворотного ефекту замість оптимізації, але зате як цікаво поколупатися У загальному і цілому тут величезне поле для експериментів, яке Вам, сподіваюся, буде вивчити, бо у кожного своя система, набір програм і все таке інше . Спробуйте використовувати різні профілі в авторежимі або ручне налаштування, щоб домогтися максимальної продуктивності на Вашому комп'ютері.

Післямова.

У двох словах якось так. Хтось звичайно скаже, що не варто всім цим заморочуватися заради скільки-то процентного приросту і плавності роботи, - Ваше право. Я люблю возиться з системою і доводити її швидкість, зручність і все таке інше до нових висот, нехай і не завжди больш і х, але зате б про льшіх.

Загалом, рекомендую хоча б спробувати Загалом, рекомендую хоча б спробувати

Що це за розподіл навантаження і як воно виглядає?