Сколько виртуальных ядер выделять для виртуальной машины?
Сейчас вылазит steal до 50% от мощности процессора. Чем больше ядер давать, тем больше ожидание соседей. Кажется, если выдать всем по 1 ядру, наступит счастье. Как вообще раздавать ядра виртуалкам? Может есть специальная настройка CPU для контроля производительности?
На хосте Intel® Xeon E3 1220 4 ядра 4 потока. Запихнул в него 5 виртуалок по 2 ядра каждой. Потом трем из них дал по 4 ядра, вылез steal(ожидание CPU соседей) до 50% от мощности процессора, то есть два ядра грубо говоря не работают всё равно. А если вернуть и поставить только 2 ядра, ожидание падает до 20% .
Подождать новых технологий. Сейчас мир смотрит в сторону параллелизма и давно уже экспериментирует. Но безусловного лидера нет.
По-хорошему вам можно использовать 5 отдельных слабых физических машин, каждая с дешевым двухъядерным процессором. Правда, это может быть в целом дороже. Зато сам подход правильнее (смотря какая у вас цель).
Так они в датацентре, мне то до энергопотребления. У этих серверов в цене разница в 20-30% а производительность кажется хуже более чем в 2 раза. Выгоды никакой. Но это субьективно. Нашел обзор этих серверов, пишут что таки да, Avoton до 70% хуже при "одноядерной" работе.
Приоритет при запросе физических поток имеет виртуальная машина с большим числом vCPU, т.к. будет обращаться к гипервизору чаще, чем ВМ с меньшим числом процессоров. Так что приоритезацию процессорных ресурсов стоит рассматривать только в случае нескольких мультипроцессорых машин. При общем числе vCPU всех виртуальных машин на хосте, равном числу процессорных потоков (в том числе и получаемых с помощью Hyper-Threading) маппинг идет 1:1, т.е. на один vCPU - одно ядро. Если общее число виртуальных процессоров превышает число физических потоков - виртуальному процессору выделяется часть процессорного времени физического сокета - тут в действие как раз вступает приоретизация для каждой ВМ.