Содержание
Как ускорить процессор, а точнее Windows под него — CPU Control — Заметки Сис.Админа
Как Вы поняли из заголовка, мы поговорим про то как ускорить процессор, а точнее говоря (просто некоторые неопытные пользователи называют системный блок так 😉 ) компьютер и Windows.
Т.е, сегодня я решил обновить и дополнить одну из старых и неполных статей по оптимизации, причем обновить не просто, а вставив в неё часть материала одного из уроков нашего курса обучения 😉
Не смотря на то, что многоядерные процессоры (и уж, тем более, многопроцессорные компьютеры) давно вошли в нашу жизнь, далеко не все программы умеют корректно взаимодействовать с несколькими ядрами, а так же грамотно использовать и оптимизировать доступные системные ресурсы Windows и.. ускорить процессор.
Давайте приступим.
Уже давненько я столкнулся с интересной программой, которая позволяет управлять приоритетом использования ядер процессоров, т.е. фактически распределять нагрузку на то или иное ядро. О ней и пойдет речь в этой небольшой статье.
Вообще говоря, процессор является одним из ключевых, если не самых главных, компонентов, отвечающих за производительность в системе, посему имеет смысл корректно и правильно использовать его возможности.
Глобально, в этом направлении, с точки зрения программной оптимизации есть два пути:
- В случае с многоядерными процессорами, — это распределение нагрузки по ядрам. Дело здесь в том, что изначально не все процессы могут использовать адекватно все ядра в системе (т.е нет поддержки многоядерности) или корректно занимать те из них, что не заняты обсчетом других приложений и нужд, а посему имеет смысл вручную (или автоматически) разносить приложения на отдельные ядра или группы ядер, для корректного распределения нагрузки и/или ушустрения работы;
- В случае со всеми процессорами, т.е одноядерными в том числе, — это работа с приоритетами системы. Дело в том, что по умолчанию Windows присваивает всем запускаемым процессам нормальный приоритет, что ставит приложения в равные условия в плане получения процессорных мощностей;
- Однако, согласитесь, что, скажем, 3D игра и обычный блокнот, – это немного разные приложения и, очевидно, что игре нужно больше ресурсов процессора в реальном времени, т.к находясь в трехмерном приложении Вы вряд ли взаимодействуете с этим самым блокнотом и он Вам не нужен до поры до времени (да особых мощностей процессора блокноту почти не надо, – там той программы то.. раз два и нету). Отсюда, вроде как логично вытекает, что приоритеты у разных приложений должны быть разные (особенно во времена многоядерности то), но на практике это далеко от реальности.
И в том и в другом случае, решить проблему с тем как ускорить процессор (вздохнул), а точнее компьютер и Windows, собственно, помогут программы для того предназначенные.
Про приоретизацию я уже немного говорил в соответствующей статье, а про распределение речь пойдет ниже.
Как ускорить процессор — вводная, скачиваем CPU Control
Что это за распределение нагрузки и как оно выглядит? Говоря простым языком, можно вручную, запустив программку, повесить все системные службы на просчитывание первым ядром, антивирус и фаерволл вторым, браузер и аську третьим и тд и тп.
Подобные манипуляции, бывает повышают производительность системы за счет более адекватного использования процессорных ядер, т.е. в некотором смысле получается мы можем ускорить процессор, т.е получается этакая расширенная насильная поддержка многоядерности.
В этом нам поможет такая программа, как CPU Control. К сожалению, оная несколько устарела и может поддерживать не все процессоры, но для решений 2-4 ядра подойдет вполне. С более многоядреными версиями не факт.
Так же, что печально, но хочется отметить, что имеется поддержка не всех версий процессоров, что, опять же, связано с давностью обновления программы, но, думаю, не мешает всё таки некоторым поэкспериментировать.
Собственно, программа полностью бесплатна, поддерживает русский язык, не требует установки (можно тягать на флешке) и предельно проста в управлении. Владельцам одноядерных процессоров вряд ли принесет какую-то пользу, если только одноядерный процессор не имеет в себе функцию разбиения физического ядра на два логических.
Скачать можно прямо с моего сайта, а именно отсюда. Установка не требуется, просто распакуйте программу.
После запуска видим примерно такую картину:
Где сразу идем на вкладку “Options” и задаем галочками “Автозапуск с Windows”, “Минимизировать”, язык и ставим галочку 4 ядра, если у нас их, собственно, 4 или не ставим, если, собственно, их два.
Настройка CPU Control, чтобы еще сильнее ускорить процессор
Дальше есть несколько путей, а именно:
-
- Ручной, т.е когда мы задаем для каждого процесса всё сами, т.е на каком ядре/ах он будет, что называется обрабатываться;
- Авто, т.е, когда программа сама назначает распределение по ядрам, чтобы ускорить наш процессор;
- CPU1, т.е, когда приоритет отдается первому ядру;
- CPU2, т.е, когда приоритет отдается второму ядру;
- И тд.
Последние два нас не интересуют, ибо идея передачи нагрузки куда-то в одно место мне не ясна. Мы как-никак занимаемся оптимизацией, а не наоборот :). Поэтому будем работать с первыми двумя.
Для начала пару слов про «Авто». Это довольно удобный режим, когда нет особого желания заморачиваться с тонкой настройкой или знаний на эту самую настройку не хватает. Посему можно выбрать этот режим и один из 9 профилей для него, которые, на базе неких правил, распределяют приложения по ядрам.
Так можно получить неплохой прирост производительности без особых заморочек, особенно, если некоторое время повыбирать правильный профиль под Вашу текущую систему.
Второй вариант, как уже говорилось,- это режим «Ручной». Он более сложен, т.к требует определенного понимания концепции работы системы, приложений и тп.
Перейдя в этот режим, Вы сможете сами распределять процессы по ядрам или группам ядер. Делается это путем выделения одного или нескольких процессов и последующим нажатием правой кнопки мышки. Здесь собственно, CPU и его номер — это номер ядра.
Т.е. если Вы хотите ускорить процессор и повесить процесс на 4-ое ядро, то выбираете CPU4, если на 1-ое и 3-тье, то CPU 1+3, и тд. Думаю, что идея ясна. Теперь о том как лучше распределять.
Глобально, имеет смысл растаскивать процессы на группы, а ресурсоёмким приложением выделять все ядра сразу. Т.е, например, фаерволл и антивирус отдать на попечение 3+4 ядер, системные мелкие процессы, а так же небольшие программы, вроде аськи, Punto Switcher и прочую шушеру на 1-ое, игры-фотошоп-прочее-тяжелое на 1+2+3+4.
Либо, как вариант, попробовать всё повесить на все и посмотреть, что будет.
Мониторить нагрузку на ядра можно в том же диспетчере задач.
Важно включить в нем мониторинг нагрузки на ядра, что делается по кнопке “Вид” — “Вывод времени ядра” и “Вид” — “Загрузка ЦП” — “По графику на каждый ЦП”.
В идеале таки делать всё это не в режиме простоя сразу после запуска компьютера, а в режиме загруженной системы, т.е при запущенных ресурсоёмких приложениях, вроде игр, фотошопов или что там у Вас кушает ресурсы.
К слову, вот на 4-х ядрах даже в автоматическом режиме прирост производительности значительно ощутим, зато на двух почему-то даже в ручную не всегда удается достигнуть мощи.
В общем и целом здесь огромное поле для экспериментов, которое Вам, надеюсь, будет изучить, ибо у каждого своя система, набор программ и всё такое прочее. Поле, кстати, минное, ибо легко можно добиться обратного эффекта вместо оптимизации, но зато как интересно поковыряться :).
Попробуйте использовать разные профили в авторежиме или ручную настройку, дабы добиться максимальной производительности на Вашем компьютере.
Послесловие
В двух словах как-то так. Кто-то конечно скажет, что не стоит всем этим заморачиваться ради сколько-то процентного прироста и плавности работы, — Ваше право.
Я люблю возится с системой и доводить её скорость, удобство и всё такое прочее до новых высот, пусть и не всегда больших, но зато больших, т.е ускорять процессор хотя бы как-то.
Посмотрим, что получится у Вас. В общем, рекомендую хотя бы попробовать.
Источник: https://sonikelf.ru/ruchnoe-raspredelenie-zagruzki-yader-ili-imitaciya-podderzhki-mnogoprocessornosti/
Управление числом vCPU и ядер в виртуальной машине
При создании виртуальных машин на различных гипервизорах (VMWare, KVM, Hyper-V и т.д.) вы можете обратить внимание, что иногда виртуальная машина может не видеть все выделенные ей виртуальные ядра (vCPU). В нашем случае виртуальной машине на KVM были выделены 8 vCPU, на нее установлена Windows 10. Однако Windows определяла эти ядра как отдельные процессоры, из которых можно использовать только 2 vCPU.
Виртуальная машина Windows 10 не видит все ядра
Если открыть диспетчер устройств Windows, можно убедится, что все выделенные ядра видны в качестве 8 отдельных виртуальных процессоров типа QEMU Virtual CPU version 2,5.
При этом в свойствах Windows 10 (Computer -> Properties) и в Task Manage видно, что на компьютере доступны только 2 процессора QEMU Virtual CPU.
То есть сколько бы вы не добавили виртуальных ядер, Windows 10 все равно сможет использовать только два. При этом соседний виртуальный сервер с Window Server 2016 на этом же гипервизоре видит все 16 выделенных ему vCPU.
Количество поддерживаемых процессоров в Windows 10
Проблема заключается в том, что в десктопных редакциях Windows (Windows 10/8.1/7) есть ограничение на максимальное количество физических процессоров (сокетов), которое компьютер может использовать:
- Windows 10 Home – 1 CPU
- Windows 10 Professional – 2 CPU
- Windows 10 Workstation – до 4 CPU
- Windows Server 2016 – до 64 CPU
Однако это ограничение не распространяется на ядра. Т.е. для повышения производительности вы можете использовать процессор с большим количеством ядер. Большинство гипервизоров умеют предоставлять vCPU в виде процессоров, процессорных ядер или даже потоков. Т.е. вместо 8 виртуальных CPU вы можете предоставить vCPU в виде 2 сокетов по 4 ядра в каждом. Рассмотрим, как в различных системах виртуализации выделить виртуальные процессоры в виде ядер и как это связать с архитектурой NUMA, использующейся в современных процессорах.
Управление виртуальными ядрами и vCPU в KVM
В моей виртуальной машине KVM c Windows 10, все назначенные виртуальные ядра считаются отдельными процессорами.
https://www.youtube.com/watch?v=VdAnikqKLRo
Чтобы использовать все ресурсы CPU, выделенные виртуальной машине нужно, чтобы виртуальная машина видела не 8 процессоров, а один 8-ядерный процессор, 2 процессора по 4 ядра или 1 процессор с 4 ядрами по 2 потока. Попробуем изменить способ назначения виртуальных ядер для ВМ на KVM.
Выключите виртуальную машину:
# virsh shutdown server.vpn.ru – где server.vpn.ru это имя виртуальной машины.
Выведите текущую XML конфигурацию виртуальной машины KVM:
# virsh dumpxml server.vpn.ru
Нам интересен блок с описанием процессоров:
8 1000 /machine hvm
Как видим, у нас указано просто 8 vCPU. Изменим конфигурацию:
# virsh edit server.vpn.ru
И после добавим:
Где:
- host-passthrough — режим эмуляции при котором на виртуальной машине будет показан физический процессор узла кластера (ноды).
- sockets='1' — указываем что процессор 1
- cores='4' — указываем, что процессор имеет 4 ядра
- threads='2' — указываем, что ядра у нас по 2 потока
Сохраните конфигурационный файл и запустите ВМ. Авторизуйтесь в гостевой ВМ с Windows 10 и в Task Manager или Resource Monitor проверьте, что ОС видит все выделенные виртуальные ядра.
Также в свойства системы теперь стал отображаться физический процессор хоста Intel(R) Xeon(R) Silver 4114 CPU, а не виртуальный.
Так нам удалось решить проблему с нагрузкой на ВМ, так как двух ядер не хватало для полноценной работы приложений.
Настройка виртуальных процессоров и количества ядер в VMWare
Вы можете изменить способ презентации vCPU для виртуальной машины VMWare из интерфейса vSphere Client.
- Выключите ВМ и откройте ее настройки;
- Разверните секцию CPU;
- Изменим конфигурацию ВМ так, чтобы гостевая ОС видела 2 процессора по 4 ядра. Измените значение Cores per Socket на 4. Это означает, что гостевая ОС будет видеть два четырех –ядерных процессора (2 сокета по 4 ядра);
- Сохраните изменения и запустите ВМ.
Архитектура NUMA и виртуальные vCPU
Есть еще несколько аспектов назначения vCPU и ядер виртуальным машинам, которые нужно понимать.
При назначении ядер на сокете учитывайте наличие NUMA архитектуры (используется в большинстве современных CPU). Не рекомендуется назначать вашей ВМ количество ядер на сокет (и общее количество vCPU) больше, чем доступно ядер на вашем физическом сокете/процессоре (ноде NUMA). При размещении на одной физической ноде NUMA, виртуальная машина сможет использовать быструю локальную RAM, доступную на конкретной ноде NUMA. Иначе для выполнения операции процессам придется ждать ответа от другой ноды NUMA (что несколько более долго).
Если вы назначаете для ВМ два отдельных виртуальных сокета, то гипервизор может их запускать на разных нодах NUMA. Что не лучшим образом скажется на производительности ВМ.
Если количество требуемых vCPU превышает количество ядер на 1 физическом сокете (ноде NUMA), нужно создать несколько виртуальных сокетов (процессоров) с необходимым количество ядер. Также не желательно использовать нечетное количество процессоров (лучше добавить 1 vCPU)
Это позволит сохранить производительность виртуальной машины.
Например, для 2 процессорного хоста с 10 ядрами (суммарно доступно 40 vCPU с учетом Hyper—Threading), при настройке vCPU для ВМ оптимально использовать такие конфигурации:
Требуемое количество vCPU | Количество виртуальных сокетов в настройках ВМ | Количество ядер на виртуальном процессоре в настройках ВМ |
1 | 1 | 1 |
…… | ||
10 | 1 | 10 |
11 | Не оптимально | |
12 | 2 | 6 |
…… | ||
20 | 2 | 10 |
Например, ВМ с Microsoft SQL Server 2016 Enterprise Edition 16 vCPU в конфигурации 8 сокетов по 2 ядра будет работать хуже, чем в конфигурации 2 сокета по 8 ядер.
Также не забывайте, что некоторые приложения лицензируются по физическим сокетам (так было в старых версиях SQL Server). Иногда вам просто выгоднее лицензировать один многоядерный процессор, чем несколько процессоров с меньшим количеством ядер.
Источник: https://winitpro.ru/index.php/2019/11/15/virtualnaya-mashina-vcpu-cores/