Перейти к содержимому

8 vcpus что это

  • автор:

Управление числом vCPU и ядер в виртуальной машине

date10.02.2020
useritpro
directoryHyper-V, KVM, VMware, Windows 10, Виртуализация
commentsкомментария 2

При создании виртуальных машин на различных гипервизорах (VMWare, KVM, Hyper-V и т.д.) вы можете обратить внимание, что иногда виртуальная машина может не видеть все выделенные ей виртуальные ядра (vCPU). В нашем случае виртуальной машине на KVM были выделены 8 vCPU, на нее установлена Windows 10. Однако Windows определяла эти ядра как отдельные процессоры, из которых можно использовать только 2 vCPU.

Виртуальная машина Windows 10 не видит все ядра

Если открыть диспетчер устройств Windows, можно убедится, что все выделенные ядра видны в качестве 8 отдельных виртуальных процессоров типа QEMU Virtual CPU version 2,5.

Виртуальные процессоры QEMU Virtual CPU version 2 в оборудовании виртуальной машины.

При этом в свойствах Windows 10 (Computer -> Properties) и в Task Manage видно, что на компьютере доступны только 2 процессора QEMU Virtual CPU.

Windows не видит все выделенные виртуальные процессоры

То есть сколько бы вы не добавили виртуальных ядер, 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, все назначенные виртуальные ядра считаются отдельными процессорами.

Чтобы использовать все ресурсы 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 vCPU. Изменим конфигурацию:

# virsh edit server.vpn.ru

И после </features> добавим:

  • host-passthrough — режим эмуляции при котором на виртуальной машине будет показан физический процессор узла кластера (ноды).
  • sockets=’1′ — указываем что процессор 1
  • cores=’4′ — указываем, что процессор имеет 4 ядра
  • threads=’2′ — указываем, что ядра у нас по 2 потока

Сохраните конфигурационный файл и запустите ВМ. Авторизуйтесь в гостевой ВМ с Windows 10 и в Task Manager или Resource Monitor проверьте, что ОС видит все выделенные виртуальные ядра.

несколько виртуальных ядер в Windows 10

Также в свойства системы теперь стал отображаться физический процессор хоста Intel(R) Xeon(R) Silver 4114 CPU, а не виртуальный.

виртуальная машина KVM с гостевой Windows 10 видит два физических процессор с несколькими ядрами

Так нам удалось решить проблему с нагрузкой на ВМ, так как двух ядер не хватало для полноценной работы приложений.

Настройка виртуальных процессоров и количества ядер в VMWare

Вы можете изменить способ презентации vCPU для виртуальной машины VMWare из интерфейса vSphere Client.

vmware - количесвто ядер на процессор в виртуальной машине

  1. Выключите ВМ и откройте ее настройки;
  2. Разверните секцию CPU;
  3. Изменим конфигурацию ВМ так, чтобы гостевая ОС видела 2 процессора по 4 ядра. Измените значение Cores per Socket на 4. Это означает, что гостевая ОС будет видеть два четырех –ядерных процессора (2 сокета по 4 ядра);
  4. Сохраните изменения и запустите ВМ.

Архитектура NUMA и виртуальные vCPU

Есть еще несколько аспектов назначения vCPU и ядер виртуальным машинам, которые нужно понимать.

При назначении ядер на сокете учитывайте наличие NUMA архитектуры (используется в большинстве современных CPU). Не рекомендуется назначать вашей ВМ количество ядер на сокет (и общее количество vCPU) больше, чем доступно ядер на вашем физическом сокете/процессоре (ноде NUMA). При размещении на одной физической ноде NUMA, виртуальная машина сможет использовать быструю локальную RAM, доступную на конкретной ноде NUMA. Иначе для выполнения операции процессам придется ждать ответа от другой ноды NUMA (что несколько более долго).

Если вы назначаете для ВМ два отдельных виртуальных сокета, то гипервизор может их запускать на разных нодах NUMA. Что не лучшим образом скажется на производительности ВМ.

Если количество требуемых vCPU превышает количество ядер на 1 физическом сокете (ноде NUMA), нужно создать несколько виртуальных сокетов (процессоров) с необходимым количество ядер. Также не желательно использовать нечетное количество процессоров (лучше добавить 1 vCPU)

Это позволит сохранить производительность виртуальной машины.

vCPU и процессорная архитектура NUMA

Например, для 2 процессорного хоста с 10 ядрами (суммарно доступно 40 vCPU с учетом HyperThreading), при настройке 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). Иногда вам просто выгоднее лицензировать один многоядерный процессор, чем несколько процессоров с меньшим количеством ядер.

Выбираем IaaS: что такое vCPU, и сколько ядер вам нужно

От виртуальных процессоров во многом зависит производительность облачной инфраструктуры. Что такое vCPU, как рассчитать количество процессоров под конкретный проект, и в чем отличие от физических CPUs — рассказал Сергей Афанасьев, тимлид команды Compute в Selectel.

Что такое vCPU и какова его производительность

vCPU — это виртуальный процессор, который «отрезает» гипервизор от физического CPU при создании виртуальных машин (ВМ). vCPU содержит минимум одно ядро.

От количества ядер виртуального процессора зависит количество потоков, которыми может оперировать приложение, а следовательно — его возможности.

Гипервизор наряду с другими ресурсами может нарезать vCPU и отдавать его виртуальным машинам. Основная задача — правильно распределить время физических CPU между vCPU.

Чтобы собралась полная картина, сейчас необходимо ввести еще пару терминов.

Начнем с определения ядер. Ядра — это самостоятельные вычислительные блоки в архитектуре процессоров. Основная проблема ядер в том, что они выполняют команды последовательно. Если нагрузить одно ядро несколькими последовательностями задач, оно будет переключаться между ними по завершению каждой, что негативно повлияет на скорость работы системы.

Еще важно знать про потоки обработки. Этим термином называют выделенную область внутри физического ядра процессора. Ресурсы ядра разделяются по потокам. Это позволяет обрабатывать параллельно несколько последовательностей команд.

На уровне операционной системы каждый поток воспринимается как отдельный вычислительный центр, поэтому такая модель использования ресурсов ядра обладает большей скоростью вычислений.

Сам факт такого деления возможен, потому что даже самые интенсивные задачи не используют 100% ЦП все время. По этой причине vCPU иногда рассматривают не как отдельный процессор, а как часть времени, проведенного в ядре процессора.

Сколько vCPU выбрать в зависимости от проекта

Оценить производительность vCPU можно на примере параметра CPU Usage. Он как раз показывает процент использования CPU за заданный период времени. Если ядра виртуальной машины стабильно нагружаются до 80% и выше, то такие показатели говорят о том, что она близка или находится на пике своей нагрузки. В таком случае можно посоветовать увеличить количество vCPU или же мигрировать ВМ на сервер с более производительными процессорами. Второй путь сложнее, поскольку не каждый провайдер может предоставить подходящую конфигурацию.

Важно понимать, что ядра виртуальной машины не должны нагружаться до своего пика, всегда должен быть запас (в 40-50%). В противном случае виртуальная машина может не справиться с поступающей на нее нагрузкой, которая может внезапно резко возрасти.

Для расчета правильного количества vCPU для проекта нет единой формулы — это число обычно выявляется эмпирическим путем. Для этого нужно знать характер задач приложения.

Например, в случае с интернет-магазином нагрузка прямо пропорциональна количеству активных пользователей: чем их больше, тем выше нагрузка. Вряд ли на старте в один момент у него окажется 10000 пользователей, которые обеспечат высокую нагрузку. Поэтому вкладываться заранее в ресурсы неэффективно. Масштабироваться следует постепенно, в зависимости от фактической нагрузки на сайт или приложение. Важно, чтобы со стороны провайдера этот процесс был выстроен максимально комфортно: панель управления интуитивно понятна, поддержка работает 24/7.

Можно подключить системы мониторинга для отслеживания показателей виртуальной машины, нагрузки в частности. Такой подход поможет оперативно реагировать на резко возрастающую нагрузку и не дать « захлебнуться » приложению от нее. В период маркетинговых активностей и праздников присматривать за системой следует плотнее.

Стоит также обратить внимание на параметр CPU Steal Time. Он показывает время, в течение которого виртуальная машина должна была получать ресурсы от хостовой ОС, но что-то пошло не так, и по итогу они не были получены. А значит и вычисления ВМ также не были выполнены. Нормой для этого параметра считаются значения не более 5-10%.

Причин возникновения steal может быть несколько: одна из них — высокая загруженность хоста виртуализации. Это может быть спровоцировано системными задачами хоста или же большим количеством других виртуальных машин, которые тоже его нагружают. В таком случае увеличение количества vCPU никак не поможет в решении этой проблемы, от этого ВМ никак не станет производительнее.

В большинстве случаев это решается на стороне облачного провайдера, например, изменением значения параметра переподписки (vCPU:pCPU) или же уменьшением количества виртуальных машин на этом хосте. Обычно облачные провайдеры следят за этим и стараются не допускать превышения допустимого порога значений.

Можно ли управлять количеством и производительностью vCPU в виртуальной машине

На начальном этапе даже базовая конфигурация ВМ может быть избыточна, а платить за неиспользуемые ресурсы — сомнительное удовольствие. В этих случаях отлично работает нарезка ядер на доли для рабочих ВМ.

Часть настроек, связанных с ресурсами ВМ, находится на стороне провайдера, поэтому изменить их можно только по запросу. Впрочем, обычно это не занимает много времени.

С облачными серверами Shared Line ситуация намного проще. В этой линейке можно выбрать любую производительность ядра: 10%, 20% или 50% в зависимости от задач и не платить за остальное. Если остальные ресурсы ядра доступны, то производительность увеличивается вплоть до 100% без каких-либо доплат. Этого вполне хватает для поддержки dev-сред, хостинга простых сайтов, чат-ботов/Telegram-ботов или квизов.

Если оставшуюся часть сервера никто в этот момент не использует — производительность может доходить до 100%.

Главное, что следует учитывать при распределении vCPU — историю наблюдений и фактор сезонности, а также маркетинговые активности (например, можно зарезервировать ресурсы перед началом распродажи).

Возможно, в какие-то месяцы количество пользователей резко увеличивается, поэтому следует предоставить им должный уровень сервиса и выделить достаточно ресурсов.

How to calculate vCPU to CPU | Explanations and Examples

You may be asked to specify the number of vCPU when creating a VM. Do you know what is it, and how to calculate CPU to vCPU? Here I will explain it in this article.

By Crystal / Last Updated June 20, 2022

What is vCPU

vCPU refers to virtual central processing unit, or virtual processor, which is a portion or share of the underlying physical CPU that is assigned to a particular virtual machine (VM). In most cases, it is not a one-to-one allocation.

So, you may be wondering how to calculate vCPU to CPU or CPU to vCPU. I will explain it in this article. But before that, let’s review some related terms.

vCPU

What is CPU

A (physical) CPU is the electronic circuitry that executes basic arithmetic, logic, controlling, and input/output (I/O) operations specified by the instructions in the computer program.

Most modern CPUs are implemented on integrated circuit (IC) microprocessors, with one or more CPUs on a single IC chip. Microprocessor chips with multiple CPUs are called multi-core processors. The individual physical CPUs, processor cores, can also be multithreaded to create vCPUs.

What is Core

A (physical) Core is the CPU’s processor. Unlike the past when there was only one core per processor, modern CPUs tend to have multiple cores, each of which can work on a different task. To put it simply, the more cores a CPU has, the more efficient it is.

Logical Core: As physical CPUs and physical cores are actual hardware components, logical core is a concept. To make more efficient use of the physical core, Hyper-Threading technology on Intel CPUs (or Simultaneous Multi-Threading on AMD CPUs) splits a physical core into virtual cores.

The Logical cores are calculated by the number of Physical cores times the number of threads that can run on each core. For example, if your CPU has 2 physical cores, and can run 2 threads per core, then you have 4 logical cores.

VMware vCPU vs Core: Many users have questions such as 1 vCPU how many cores. In face, it is generally assumed that 1 vCPU = 1 physical CPU core. But this is not entirely correct, as the vCPU is made up of the timeslots of all available physical cores, so in general 1 vCPU is actually more powerful than a single core.

What is Thread

A thread is a small sequence of programmed instructions that divide the physical core into multiple virtual cores to allow multitasking on computer. A physical core usually has 2 threads.

How does a vCPU work

The number of a VM’s vCPUs represents the maximum number of threads that the VM can run at any given moment.

When using a hypervisor to create VMs, you will be asked to specify the number of vCPUs for the VM. And the number of vCPUs assigned to a VM cannot exceed the number of logical cores in the host.

The Hypervisor allocates a portion of the physical CPU computing resources to the vCPU of a specific VM. Each vCPU is seen as s single physical CPU core by the VM’s operating system.

How to calculate vCPU to CPU

As I mentioned, the ratio of CPU to vCPU is generally not 1: 1. In fact, how many vCPU a host can assign is determined by the manufacturer. It’s calculated by taking the number of processing threads that a chipset offers per core and multiplying the number of occupied sockets:

(Threads x Cores) x Physical CPU = Number vCPU

For example, A 8 cores/ 16 threads CPU has (16 Threads x 8 Cores) x 1 CPU = 128 vCPUs

However, one of the major advantages of vSphere virtualization is the ability to oversubscribe. For vSphere 6.0, there is a maximum of 32 vCPUs per physical core, and vSphere administrators can allocate up to 4,096 vCPUs to virtual machines on a single host.

However, the actual achievable number of vCPUs per core depends on the workload and specifics of the hardware. Things like CPU exhaustion can degrade the VM performance, so there is a limit to the number of vCPU that can be allocated to a VM.

The recommended ratio of vCPU to CPU ranges from 1:1 to 3:1. With 3:1 to 5:1, you might begin to see a performance degradation, 6:1 or greater is often going to cause a significant problem for VM performance.

vCPU to CPU ratio

Summary

You may be confused when you are asked to specify the number of vCPUs of a VM. To calculate the ratio of vCPU to CPU, first you need to understand what are vCPU, CPU, physical cores, logical cores, and thread.

In this article, I introduced what are them and how to calculate the ratio of CPU to vCPU. However, to avoid VM performance degradation, there is a limit to the vCPU numbers that recommend to allocated to a VM.

Best Enterprise Backup Solution

Free Backup Software - AOMEI Backupper

  • VMware and Hyper-V Backup
  • SQL Server/Workstation Backup
  • Scheduled Automatic Backup
  • Flexible Backup Cleanup Policy
  • Backup and Manage Centrally

Still Need Help?

Have your problem been solved? If not, please input query in the search box below.

Что такое «vCPU» и какова его производительность? — CloudSavvy IT

чип платы

archy13 / Shutterstock

Поставщики облачных серверов часто будут рекламировать свои экземпляры как имеющие определенное количество виртуальных процессоров, сокращенно от виртуального ЦП. Какую производительность вы можете ожидать от этого по сравнению с обычным процессором?

Разница между ядрами и нитями

Важно понимать разницу между потоком обработки и ядром процессора. Процессоры будут иметь установленное количество ядер, которые обрабатывают выполнение программ. Но даже очень интенсивные задачи не используют 100% ЦП все время; Программы часто должны ожидать чтения памяти из кэша L3, ОЗУ и дисков и часто засыпают, ожидая поступления данных. В течение этого времени ядро ​​ЦП неактивно.

Решение этой проблемы называется «гиперпоточность» или «одновременная многопоточность». Вместо того, чтобы запускать один набор задач за один раз, ЦП может обрабатывать несколько потоков. В настоящее время почти каждый высокопроизводительный процессор от Intel или AMD поддерживает два потока на ядро.

В зависимости от приложения, гиперпоточность может дать теоретическое ускорение на 100%, если оба потока ожидают чтения памяти и не конфликтуют друг с другом. В большинстве случаев гиперпоточность дает увеличение скорости примерно на 30% по сравнению с отсутствием гиперпоточности. Однако в некоторых случаях, когда два потока закреплены на 100% и работают на одном и том же ядре, это может вызвать замедление, поскольку они сражаются за ресурсы ЦП.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Что делает vCPU?

vCPU примерно сопоставимы с одним потоком обработки, но это не совсем справедливое сравнение.

Скажем, вы арендуете c5.large экземпляр от AWS с 2 виртуальными ЦП. Ваше приложение будет работать вместе со многими другими на одном большом сервере. Вы можете арендовать весь сервер с AWS Bare Metal экземпляр, который дает вам прямой доступ к процессору. Если вы арендуете что-то меньшее, чем это, ваш доступ управляется через AWS Nitro,

Nitro — это гипервизор, который управляет созданием и управлением виртуальными машинами, работающими на самом сервере. Вот почему вы арендуете «Виртуальный сервер», а не место в стойке в центре обработки данных. Нитро — это то, что делает тик EC2 он частично питается от выделенного оборудования, поэтому замедление работы в виртуализированной среде должно быть минимальным.

Nitro решает, каким потокам назначать виртуальную машину, исходя из того, сколько вычислительной мощности необходимо, так же, как это делает планировщик задач в обычной среде рабочего стола. В случае двух виртуальных ЦП наихудший случай — приложение работает на одном ядре и получает два потока этого ядра. Если вы действительно максимально используете свой экземпляр, ваши потоки могут конфликтовать и вызывать небольшие замедления. Трудно сказать точно, как работает гипервизор AWS, но, вероятно, можно с уверенностью предположить, что этот сценарий в значительной степени смягчен благодаря хорошему управлению потоками со стороны Nitro.

Таким образом, в целом, вы можете ожидать производительность, сопоставимую с нормальным потоком процессора, если не чуть лучше. В любом случае это различие не имеет большого значения, поскольку большинство экземпляров EC2 будут иметь кратные 2 виртуальных ЦП. Просто помните, что экземпляр 4 vCPU — это не 4-ядерный сервер — он действительно эмулирует 2-ядерный сервер, на котором выполняется 4 потока обработки.

Скорость обработки vCPU будет больше зависеть от реального оборудования, на котором он работает. Большинство серверных процессоров будут Intel Xeons, поскольку они составляют большую часть рынка. Серверы нижнего уровня могут работать на более старом оборудовании, которое немного устарело по современным стандартам. В экземплярах AWS T3a используются процессоры AMD EPYC с большим количеством ядер, они работают немного медленнее, но стоят дешевле из-за того, что аппаратное обеспечение значительно дешевле на ядро.

Бустабильные экземпляры

AWS T2 Instance Logo

Экземпляры AWS T2 и T3 являются «пакетными», которые больше подходят для приложений, которые не должны работать на 100% все время.

Например, t3.micro Экземпляр имеет 2 виртуальных ЦП, но его базовая скорость составляет 10% от нормального виртуального ЦП. На самом деле, t3.micro на самом деле имеет только 0,2 vCPU, что на самом деле, как Google Cloud Platform рекламирует их f1-micro экземпляры,

Но t3.micro в целом не на 90% медленнее; он может превышать базовую скорость в течение коротких периодов времени, очень похоже на то, как работает турбо частота на обычном компьютере. За исключением того, что ограничивающим фактором здесь являются не термики, а то, сколько вы готовы заплатить.

За каждый час работы экземпляра ниже базовой скорости вы накапливаете кредиты ЦП, которые используются для взрыва экземпляра за одну минуту. t3.micro В частности, экземпляр накапливает 6 кредитов ЦП в час, что он работает ниже базовой скорости. Но когда требуется вычислительная мощность, кредиты ЦП расходуются на работу, превышающую базовую скорость.

Это хорошо подходит для приложений на основе микросервисов, которые должны отвечать на запросы, когда они происходят, но остаются бездействующими, пока следующий пользователь не запросит что-либо. Службы, которые должны постоянно обрабатывать цифры, лучше подходят для традиционных серверов.

Это позволяет AWS запускать больше экземпляров T2 на сервер, чем сервер обычно способен, что помогает снизить затраты. Например, каждая стойка в их центре данных может содержать 48-ядерную систему с 96 потоками обработки. Это можно использовать для экземпляров C5 на 96 виртуальных ЦП, но экземпляры T2 могут совместно использовать ядра и работать на скорости менее 20% базовой скорости ядра, поэтому AWS может запускать большее количество из них на одном сервере.

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://lechenie.kapelnicza-ot-zapoya-sankt-peterburg.ru/