Гиперпоточность экземпляра AWS EC2
В настоящее время я провожу тестирование производительности веб-приложений, которые мы перешли на AWS.
Одна из вещей, которые мы заметили, это то, что производительность vCPU не так хороша, как мы ожидали. Фактически, на машине с одним виртуальным ЦП с высокой загрузкой мы поняли, что 50% зарегистрированного использования ЦП (через vmstat) были зарегистрированы как кражи ЦП. Казалось, мы получаем только половину основных циклов.
После некоторых исследований выясняется, что в большинстве случаев EC2 виртуальный ЦП фактически означает, что вы получаете одну из доступных гиперпотоков на одно ядро. Фактически это означает, что на каждый vCPU можно положиться только на 50% циклов физического ядра.
Мы нашли несколько статей, которые, кажется, подтверждают то, что мы видим: http://www.pythian.com/blog/virtual-cpus-with-amazon-web-services/
Верно ли, что vCPU - это всего лишь одна гиперпотока в ядре, или мы неправильно интерпретируем данные? Если это правда, есть ли какие-либо типы экземпляров, где мы на самом деле получили бы доступ к обоим гиперпотокам ядра?
Очевидно, что мы могли бы настроить экземпляры EC2 с удвоенным количеством vCPU, но это имеет последствия для лицензии на программное обеспечение, так как проприетарное программное обеспечение, которое мы используем, в настоящее время лицензируется ядрами. В настоящее время поставщик программного обеспечения не проводит различия между виртуальным ЦП и ядром. Мы не хотим платить вдвое больше затрат на лицензирование, поскольку определения ЦП нашего провайдера инфраструктуры и поставщика программного обеспечения не совпадают.
1 ответ
Я получил подтверждение от Amazon, что vCPU - это фактически одна гиперпотока на одном ядре.
Кстати, это была новость для поставщика программного обеспечения, с которым мы работали (одна из крупнейших корпоративных компаний), и они были достаточно хороши, чтобы изменить условия лицензий для программного обеспечения, работающего в средах AWS.