разделение ядра между виртуалками
От: Nozama  
Дата: 25.09.20 10:56
Оценка:
Многие из нас работают с облаками.

Является ли это стандартной ситуцией в облаках, когда 1 честное ядро с 2HT потоками разделяется на 2 разные виртуалки. Часто ли дают выбор какие ядра ты получишь (честные или "HT-половинки")?

Описаны ли где-то внятно и понятно с графиками — влияния виртуалок в такой спаренной конфигурацией друг на друга? (очевидно, что влияние большое)

Используется ли сейчас активно KVM и рекомендуют ли его?

Дело в том, что мы столкнулись с тем, что в такой конфигурации (или это зависит от других не ясных причин) производительность одной и той же CPU-bound задачи скачет 50% — 200% от нормы условно (скажем, сильно скачет!) при разных запусках. В нашей ситуации есть доп фактор — использование векторных операций в одном потоке. Какие-то ходят слухи что эти операции могут сильно нагибать CPU вплоть до тротлинга. Тоже кстати интересно если есть какие-то статьи на эту тему.

Я думал что если я найду "исследования" на эту тему (просто чтобы внятно было уже кем-то написано), то я мог бы уговорить поменять конфирурацию и давать разным виртуалкам честные ядра. Тем более что кажется это анти-паттерном для меня.

Спасибо за информацию
Re: разделение ядра между виртуалками
От: Vzhyk2  
Дата: 25.09.20 11:01
Оценка: +1 :))
Здравствуйте, Nozama, Вы писали:

N>Многие из нас работают с облаками.

N>Является ли это стандартной ситуцией в облаках, когда 1 честное ядро с 2HT потоками разделяется на 2 разные виртуалки. Часто ли дают выбор какие ядра ты получишь (честные или "HT-половинки")?
N>Спасибо за информацию
А почему это в политике? Предполагаешь, что в остальных частях кывта уже никого не осталось?
Но я не слышал, что виртуалки могут конкретный физический ядра юзать. Возможно на хосте через аффинити маску можно задать жестко.
Re: разделение ядра между виртуалками
От: kov_serg Россия  
Дата: 25.09.20 17:44
Оценка:
Здравствуйте, Nozama, Вы писали:

N>Дело в том, что мы столкнулись с тем, что в такой конфигурации (или это зависит от других не ясных причин) производительность одной и той же CPU-bound задачи скачет 50% — 200% от нормы условно (скажем, сильно скачет!) при разных запусках. В нашей ситуации есть доп фактор — использование векторных операций в одном потоке. Какие-то ходят слухи что эти операции могут сильно нагибать CPU вплоть до тротлинга.

НТ очень не любит деление.
Re: разделение ядра между виртуалками
От: vsb Казахстан  
Дата: 25.09.20 20:36
Оценка:
Стандартная ситуация это отсутствие каких-либо гарантий и требование к твоей виртуалке не жрать ядро(а) на 100% в течение длительного времени. В этом случае на узле запускают множество таких виртуалок, которые в основном спят и друг другу особо не мешают.

Если тебе нужна виртуалка для вычислительных задач, для них обычно отдельные тарифы, где и будут указаны конкретные гарантии.
Re: разделение ядра между виртуалками
От: Dimatec  
Дата: 25.09.20 20:57
Оценка:
Разделение честного ядра хоть с НТ хоть без НТ это норма.
Дележом для гостя только НТ или честное ядро никто не занимается.
Там все проще. И у некоторых облачных провайдеров это оговаривается
сразу при покупке, например, если хост не нагружен, то вы получаете все "герцы"
ваших виртуальных ядер, за минусом накладных расходов на виртуализацию конечно же.
Но если хост загружен, то вашим ВМ могут "подрезать" процессорное время хоста,
что можно, в некотором смысле, представить как уменьшение "герцев".

Виртуалки друг на друга по ядру наиболее жестко влияют обычно в одном случае:
когда герц на хосте становится не хватать. И тогда ВМ должны в идеале
смигрироваться на более свободные хосты. А делает это провайдер или нет,
скорее всего об этом можно судить косвенно. Скорее всего делит общее процессорное
время на всех. Нет у него денег, всем клиентам подсовывать свободные хосты.
Так же не менее узким местом, а то и более, будет работа с диском.
Здесь в облаках могут надурить еще больше. Если ваша ВМ активно использует диск,
а IOPS-ов не хватает вот и выглядит виртуалка как тормознутое УГ хоть CPU
и не нагружен.

В общем делать бенчмарки в чужом облаке неблагодарное дело.
Либо тестировать на собственном железе, пусть даже не на таком мощном,
зато контроль чистоты эксперимента лучше, либо взять в аренду "ненадолго"
ВМ с гарантированными герцами (или сразу перейти в продакшене на такие),
а еще лучше арендовать железный сервер.

Под векторными операциями имеется ввиду работа с SSE, AVX?
Хотя не важно, прозвучит банально, но вообще процессор как бы
заточен на выполнение вычислений не щадя своих сил.
И нагибается он от любого вычислительного, не требующих каких-нибудь ожиданий, кода.
Вся суть соптимизировать код так, чтобы процессор работал на максимуме,
но как можно недолго.

KVM используется активно и рекомендуют.
Re: разделение ядра между виртуалками
От: Буравчик Россия  
Дата: 25.09.20 21:27
Оценка:
Здравствуйте, Nozama, Вы писали:

N>Является ли это стандартной ситуцией в облаках, когда 1 честное ядро с 2HT потоками разделяется на 2 разные виртуалки. Часто ли дают выбор какие ядра ты получишь (честные или "HT-половинки")?


Виртуальным машинам выделяют HT-ядра, а не настоящие "железные". Это норма.

Выбирать ядра (честные/половинки) провайдеры не дают. Это позволяет распределять нагрузку на оборудование — хостовая система оптимизируем выполнение виртуальных машин — перекидывает исполнение потоков виртуальной машины с одного ядра на другое.

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

N>Описаны ли где-то внятно и понятно с графиками — влияния виртуалок в такой спаренной конфигурацией друг на друга? (очевидно, что влияние большое)


Можно считать, что в среднем два HT-потока каждый работает примерно на 75% от скорости ядра (второй поток HT дает 50% прироста скорости на ядро)

N>Используется ли сейчас активно KVM и рекомендуют ли его?


Используется, рекомендуют

N>Дело в том, что мы столкнулись с тем, что в такой конфигурации (или это зависит от других не ясных причин) производительность одной и той же CPU-bound задачи скачет 50% — 200% от нормы условно (скажем, сильно скачет!) при разных запусках. В нашей ситуации есть доп фактор — использование векторных операций в одном потоке. Какие-то ходят слухи что эти операции могут сильно нагибать CPU вплоть до тротлинга. Тоже кстати интересно если есть какие-то статьи на эту тему.


Все зависит от провайдера. В тарифе указывает, что подразумевается под ядром, насколько его можно нагружать в среднем и в пике.
Best regards, Буравчик
Re: разделение ядра между виртуалками
От: Reset  
Дата: 26.09.20 06:25
Оценка:
Недавно на хабре была статья от одного из владельцев-создателей хостинга с VPS (они щас самые ходовые и прибыльные). Он четко сказал, что машины с VPS оверселлят все, т.е. легко возможна ситуация, когда одновременно хотят работать больше VPS, чем есть CPU. Там вопрос только в том, чтобы не злоупотреблять этим. С облаками, наверняка, похожая ситуация.

Привязка твоего контейнера/VPS к ядру вообще на грани фантастики, IMHO. Если только ты хостеру не заплатишь за 100% времени использования этого CPU, а иначе на нем будет работать еще кто-то и от привязки не будет никакого толка (а за 100% времени ядра CPU тариф вырастет в разы и ты сам этого не захочешь). Так что, очень сомневаюсь, что что-то к чему-то привязывается (я про обычный покупной хостинг чего угодно и выделяемые ресурсы).

Только я удивляюсь, что ты в CPU уперся, а не IO. Но это offtop.
Re[2]: разделение ядра между виртуалками
От: Dimatec  
Дата: 26.09.20 18:50
Оценка:
Б>Виртуальным машинам выделяют HT-ядра, а не настоящие "железные". Это норма.

Т.е. на процессоре без НТ виртуалки работать не будут?
Re[3]: разделение ядра между виртуалками
От: Reset  
Дата: 27.09.20 02:01
Оценка:
Б>>Виртуальным машинам выделяют HT-ядра, а не настоящие "железные". Это норма.

D>Т.е. на процессоре без НТ виртуалки работать не будут?


В Linux, если в биосе не отключен HT, логическое ядро — это HT ядро (т.е. железное ядро будет показано, как два логических ядра). Если отключено HT, тогда железные ядра (т.е. если отключить HT — ядро Linux покажет в два раза меньше логических ядер). Для планировщика есть какая-то настройка для учета HT ядер, но вряд ли ей пользуется планировщик контейнеров/виртуалок. Виртуалки работать будут, им нет дела до HT (очень сомневаюсь, что планировщик контейнеров/виртуалок будет различать HT ядра при включенном HT и как-то их по-особому планировать). Если что-то не заработает, то не по причине отсутствия HT.
Re[2]: разделение ядра между виртуалками
От: Ночной Смотрящий Россия  
Дата: 28.09.20 14:59
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Стандартная ситуация это отсутствие каких-либо гарантий и требование к твоей виртуалке не жрать ядро(а) на 100% в течение длительного времени.


Ты сейчас про настоящие облака, или про ушлых провайдеров с VPS, прикрывающихся модными словами?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: разделение ядра между виртуалками
От: Ночной Смотрящий Россия  
Дата: 28.09.20 14:59
Оценка:
Здравствуйте, Nozama, Вы писали:

N>Является ли это стандартной ситуцией в облаках, когда 1 честное ядро с 2HT потоками разделяется на 2 разные виртуалки. Часто ли дают выбор какие ядра ты получишь (честные или "HT-половинки")?


Зависит от конкретного облачного провайдера и конкретного тарифного плана. В Ажуре, к примеру, если речь о классических линейках типа D или F, ты таки получаешь честное ядро. А вот в случае B тебе даже эксклюзивное использование НТ ядра не гарантируется.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[4]: разделение ядра между виртуалками
От: Ночной Смотрящий Россия  
Дата: 28.09.20 14:59
Оценка:
Здравствуйте, Reset, Вы писали:

R>В Linux, если в биосе не отключен HT, логическое ядро — это HT ядро


При чем тут Линукс? Во взрослых облаках гипервизор если даже и на базе Линуха, то очень сильно патченного Линуха, и там будет такая политика работы с ядрами, какой хочет провайдер. Я уж не говорю о том, что НТ вполне себе отключается.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: разделение ядра между виртуалками
От: Ночной Смотрящий Россия  
Дата: 28.09.20 14:59
Оценка:
Здравствуйте, Reset, Вы писали:

R>Недавно на хабре была статья от одного из владельцев-создателей хостинга с VPS


VPS это не облака.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.