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

Виртуальные ядра процессора что это

  • автор:

Что такое виртуальный процессор?

Это не термин, а обычное словосочетание. Виртуальный процессор — это нечто, что выглядит как работоспособный процессор, но процессором не является. Точное значение зависит от контекста.

  1. Так, когда-то давно никто не слышал про многоядерные процессоры, а когда было нужно — ставили несколько процессоров. И когда многоядерные процессоры появились — то в целях обратной совместимости каждое ядро стало «представляться» операционной системе как отдельный процессор. То есть у вас на материнке стоит один проц — а ОС пишет, что их два. Никакого второго процессора реально не существует, он — виртуальный. Точнее, оба ядра называют виртуальными процессорами, потому что они одинаковые.
  2. Существуют эмуляторы процессоров. Например, вы можете скачать эмулятор NES и поиграть на нем в старые игры. Эти игры написаны для процессора Ricoh 2A03, но играть в них вы будете на процессоре семейства Intel. Однако большинство игр подмены не заметят, поскольку эмулятор реализует все нужные инструкции. В этом смысле эмулятор NES содержит в себе виртуальный процессор.
  3. Внутри виртуальной машины работает реальная ОС, называемая «гостевой». Эта ОС, точно так же, как и при работе вне виртуальной машины, пытается работать с «железом». Но у виртуальной машины все «железо» — виртуальное (за редкими исключениями): если вы, к примеру, зайдёте в Диспетчер устройств на виртуалке с виндой — вы не увидите ничего похожего на реальные устройства. Процессоры у виртуальной машины — тоже виртуальные.

Отслеживать
ответ дан 10 янв 2019 в 9:08
Pavel Mayorov Pavel Mayorov
58.3k 7 7 золотых знаков 72 72 серебряных знака 146 146 бронзовых знаков

  • терминология
  • железо
  • виртуальная-машина
  • процессор
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Процессор: потоки или ядра

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

Многоядерность и гиперпоточность

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

Поток (применительно к процессору), или виртуальное ядро – результат реализации вычислений, при котором одно физическое ядро способно программно разделять свою производительность и работать над несколькими последовательностями команд одновременно. Простыми словами, ЦП делает вид для операционной системы и программ, что у него больше ядер, чем есть на самом деле. Убедиться в этом можно, открыв диспетчер устройств или другую программу для мониторинга комплектующих.

Гиперпоточность позволяет распараллеливать вычисления более эффективно – если одно виртуальное ядро завершило работу над своей задачей и находится в режиме ожидания, его ресурсы может использовать другое. В случаях, когда гиперпоточность не поддерживается, эти ресурсы простаивают. Таким образом, поддержка виртуальных ядер может ускорить выполнение некоторых задач, хотя, разумеется, она не так хороша, как наличие дополнительных физических, и удвоения производительности ожидать не стоит.

Иллюстрация концепции потоков/виртуальных ядер:

cores threads - потоки и ядра процессора

Рассмотрим следующий упрощенный пример: если двухъядерный процессор с двумя потоками работает с четырьмя последовательностями команд одновременно, а производительность одного ядра для одной последовательности избыточна, то общая производительность будет ниже, чем в случае, если на месте такого процессора будет вариант с двумя ядрами, но с четырьмя потоками, поскольку на переключение между задачами тратится дополнительное время, и часть ресурсов иногда простаивает. А вот если вычислительных ресурсов одного потока недостаточно для выполнения одной последовательности, то виртуальные ядра почти не помогут – нужны дополнительные физические.

Распараллеливание нагрузки при помощи технологии Intel Hyper-Threading

Intel Hyper-Threading

Немного истории

Когда-то процессоры были одноядерными и однопоточными. Если требовалось эффективно распараллеливать вычисления (в серверном сегменте, рабочих станциях) использовались материнские платы с несколькими процессорными разъемами. Соответственно, материнке требовалась возможность соединять все процессоры с другими комплектующими (например, оперативной памятью). По сравнению с современной реализацией, возникали дополнительные задержки, возрастали энергозатраты.

Развитие архитектуры началось с гиперпоточности, а в дальнейшем на одном кристалле производители стали размещать и несколько физических ядер. Сейчас оба основных производителя центральных процессоров для ПК (Intel и AMD) выпускают модели с двумя и более физическими ядрами, как с поддержкой виртуальных ядер, так и без нее.

Потоки или ядра?

Центральный процессор – один из ключевых компонентов системы, влияющих на ее производительность в целевых задачах, а также на удобство использования компьютера. Часто у пользователей, желающих собрать систему, возникает вопрос: на что ориентироваться при выборе ЦП? Стоит ли переплачивать за дополнительные потоки/виртуальные ядра?

Ответ зависит от предполагаемых сценариев использования. В большинстве игр прирост производительности от гиперпоточности окажется минимальным или даже нулевым, а вот добавление физических ядер скажется на частоте кадров явно положительно. Разумеется, если движок игры способен распараллеливать вычисления на такое количество ядер. Многие игры, выпущенные в предыдущие годы, способны работать только с 2-4 ядрами — остальные будут простаивать или заниматься фоновыми программами.

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

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

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

Понравилось? Поделись с друзьями!

Дата: 26.01.2019 Автор/Переводчик: Zio

Виртуальное ядро процессора — что это?

  • Разбираемся
  • Принцип работы
  • Вывод

Всем привет. Виртуальное ядро? Что это? Виртуальное, значит вроде как ненастоящее что ли? Сегодня я постараюсь простыми словами рассказать что это значит, надеюсь понятно будет каждому начинающему пользователю))

Виртуальное ядро процессора — что это?

Дело в том, что процессор работает неидеально. Но сделать идеально — значит начинать все заново, не просто выпустить новый процессор, а вообще все заново, то что начинали лет 20-30 назад.

Поэтому создают технологии, которые ускоряют работу процессора. Одна из них — виртуальные ядра, они же потоки и они же технология Hyper-Threading (HT), это у Intel, а у AMD технология называется SMT (от англ. simultaneous multithreading).

Именно эта технология делает так, что одно физическое ядро представляется в системе как два виртуальных или два потока. Таких два потока — быстрее одного ядра, но медленнее двух настоящих ядер.

Поддержка виртуальных ядер определяется процессором, не все модели эту технологию поддерживают.

Виртуальное ядро процессора — как работает?

На самом деле все просто. Процессор работает себе, трудится, все хорошо. Но в работе могут быть паузы, например:

  1. Произошел промах при запросе к кэшу.
  2. Неверное предсказание события.
  3. Ожидание результата предыдущей инструкции.

Это примерные причины, по которым процессор может простаивать доли секунды, скорее всего они вам непонятны, но вы не обращайте внимание)) Даже доли секунды в процессорном времени — это значительно, особенно если таких простоев много. Что делать? Все просто. Изначально все что выше написано — делается на одном ядре, а точнее на одном потоке. Но при наличии технологии виртуальных ядер — процессор не будет останавливаться, а просто в это время передаст управление другому потоку, который тоже выполняет определенную работу.

Простыми словами, когда 2 потока на 1 ядре — то технология старается загрузить процессор по полной, если какие-то простои, ожидания ответа, еще что-то — в это время будет работать второй поток, в итоге процессор может больше обработать данных.

На практике в некоторых программах, например сжатие данных — результат хорошо заметен. В некоторых играх например эффекта нет, а иногда даже хуже. Почему? Потому что потоки система видит как ядра, ну это хорошо, но только 1 поток слабее 1 ядра. Если задача нетребовательная — то лучше чтобы она выполнялась ядрами, а не потоками. С потоками хорошо умеют работать современные игры.

Вот примерный принцип как работают потоки:

Также технология потоков увеличивает нагрев процессора именно по той причине что он может теперь больше обрабатывать данные. Насколько? Ну примерно на 30-50%. Но в современных процессорах это значение может быть выше.

Кстати, используя простую бесплатную утилиту CPU-Z можно узнать сколько в процессоре ядер и потоков:

Написано все внизу в графах Cores и Threads. CPU-Z это бесплатная крошечная утилита, нет рекламы и кажется можно даже не устанавливать, классная вещь, показывает краткую инфу о проце и про оперативную память (например год выпуска планки).

Потоки вообще можно отключить в биосе, вот например опция Hyper-threading:

У АМД все также, только опция называется SMT Mode (или немного иначе, зависит от материнки). PS: чтобы активировать опцию — нужно выбрать Enabled, ну а чтобы отключить — Disabled.

Заключение

Надеюсь выяснили — виртуальное ядро процессора, это поток. Когда проц поддерживает потоки — значит на 1 ядро идет 2 потока. Windows эти потоки видит как ядра. 4 ядерный процессор с потоками операционкой виден как 8 ядерный.

1 поток слабее 1 ядра. Но 2 потока — быстрее 1 ядра, но слабее 2 ядер. Результат — процессор с потоками или такими вот виртуальными ядрами начинает работать попросту быстрее.

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

Ребята, я надеюсь эта информация была полезной. Удачи вам и добра, берегите себя и до новых встреч!

Выбираем 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 — историю наблюдений и фактор сезонности, а также маркетинговые активности (например, можно зарезервировать ресурсы перед началом распродажи).

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

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

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