Поиск по сайту:

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


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

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

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

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

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

Что делает виртуальный ЦП?

Виртуальные ЦП примерно сопоставимы с одним потоком обработки, но это не совсем корректное сравнение.

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

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

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

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

Скорость обработки виртуального ЦП будет больше зависеть от фактического оборудования, на котором он работает. Большинство серверных процессоров будут Intel Xeon, поскольку они составляют большую часть рынка. Серверы более низкого уровня могут работать на более старом оборудовании, которое немного устарело по сегодняшним стандартам. Инстансы AWS T3a используют процессоры AMD EPYC с большим количеством ядер, работают немного медленнее, но стоят меньше, поскольку аппаратное обеспечение намного дешевле в расчете на ядро.

Взрываемые экземпляры

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

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

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

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

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

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