Size: a a a

OpenNebula - русскоговорящее сообщество

2019 March 07

k

kvaps in OpenNebula - русскоговорящее сообщество
Nik Sh
возможно речь о планировщиках, присоединюсь к вопросу.
Ага и я, говорят BFQ low_latency намного быстрее, кто нибудь пробовал?
источник

k

kvaps in OpenNebula - русскоговорящее сообщество
источник

AZ

Anton Zubkov in OpenNebula - русскоговорящее сообщество
источник

AZ

Anton Zubkov in OpenNebula - русскоговорящее сообщество
В моей лабе на 32 850 прошках я получил +30%
источник

AZ

Anton Zubkov in OpenNebula - русскоговорящее сообщество
К сожалению данных о тестах не осталось
источник

ВН

Виталий На Заборе in OpenNebula - русскоговорящее сообщество
а, ясно. это моя статья и есть, да
источник

AZ

Anton Zubkov in OpenNebula - русскоговорящее сообщество
Отличная статья :)
источник

ИИ

Игорь Исаенко in OpenNebula - русскоговорящее сообщество
Я провел исследования, сделал выводы и хочу с вами поделиться.
У виртуалки в opennebula есть два параметра: CPU и VCPU.
И они значат не то, что вы думаете.

VCPU - это сколько ядер в виртуалке.
А ещё это - сколько ядер хоста может выжрать виртуалка.
Одно ядро виртуалки, если его нагрузить, выжирает одно ядро хоста.
Виртуалка с 4 VCPU, если их загрузить, нагрузит 4 ядра хоста.

CPU - бесполезный параметр.
opennebula позволяет выставлять приоритеты виртуалкам по части cpu.
Приоритеты выставляются через подсистему cgroups.
В cgroups есть параметр cpu.shares, который можно выставить процессу или группе процессов.
Два процесса с cpu.shares=100 поделят процессорное время ядра поровну.
Процессы с 100 и 200 поделят время, как 1/3 и 2/3 (каждый получит свой кусок от 100+200).
Так вот, CPU=1 у виртуалки просто выставляет ей cpu.shares=1024. И все.
CPU=0.5 - это cpu.shares=512.
CPU=0.01 - это cpu.shares=11.

Как это будет выглядеть на практике.
Допустим, есть хост с 1 ядром.
И мы запускаем 2 виртуалки с такими параметрами:

* v1: CPU=1 VCPU=1
* v2: CPU=1 VCPU=1

Если на v1 и v2 запустить нагрузку, они поделят одно реальное ядро пополам.
Если у v1 указать CPU=0.5, то он будет получать 33% одного реального ядра, а v2 - 66%.
Почему? Потому что их cpu.shares будут равны в сумме 1536. Доля v1 (512) в этом будет 33%, а доля v2 (1024) - 66%.
Так вот, если теперь у v2 указать CPU=0.5, то они снова будут делить ядро пополам.
Почему? 512+512 = 1024, и доля каждого (512) будет снова равна 50%.

CPU не отражает что-то сам по себе.
Он просто задает приоритет.
И он имеет смысл только в сравнении с CPU других виртуалок.
CPU=1 у всех виртуалок на хосте имеет такой же смысл, как CPU=0.01 или CPU=100.
Он имеет смысл только в одном случае: если у нас честный хостинг.
Т.е. если мы продаем виртуалки вообще без overselling'а.
Например, сервер на 24 ядра - это 24 виртуалки с одним виртуальным ядром.
Честно и не выгодно.
В этом случае параметр можно использовать.
opennebula честно считает отданные CPU и указывает их в "Allocated CPU".
источник

ИИ

Игорь Исаенко in OpenNebula - русскоговорящее сообщество
¯\_(ツ)_/¯
источник

AC

Alexandr Costyuk in OpenNebula - русскоговорящее сообщество
источник

AC

Alexandr Costyuk in OpenNebula - русскоговорящее сообщество
оно?
источник
2019 March 08

AC

Alexandr Costyuk in OpenNebula - русскоговорящее сообщество
мне вот предложили proxmox купить за деньги... Интересно, никто OpenNebula не продает?
источник

ИИ

Игорь Исаенко in OpenNebula - русскоговорящее сообщество
это люди делятся своими догадками. неверными, кстати
источник

k

kvaps in OpenNebula - русскоговорящее сообщество
Игорь Исаенко
Я провел исследования, сделал выводы и хочу с вами поделиться.
У виртуалки в opennebula есть два параметра: CPU и VCPU.
И они значат не то, что вы думаете.

VCPU - это сколько ядер в виртуалке.
А ещё это - сколько ядер хоста может выжрать виртуалка.
Одно ядро виртуалки, если его нагрузить, выжирает одно ядро хоста.
Виртуалка с 4 VCPU, если их загрузить, нагрузит 4 ядра хоста.

CPU - бесполезный параметр.
opennebula позволяет выставлять приоритеты виртуалкам по части cpu.
Приоритеты выставляются через подсистему cgroups.
В cgroups есть параметр cpu.shares, который можно выставить процессу или группе процессов.
Два процесса с cpu.shares=100 поделят процессорное время ядра поровну.
Процессы с 100 и 200 поделят время, как 1/3 и 2/3 (каждый получит свой кусок от 100+200).
Так вот, CPU=1 у виртуалки просто выставляет ей cpu.shares=1024. И все.
CPU=0.5 - это cpu.shares=512.
CPU=0.01 - это cpu.shares=11.

Как это будет выглядеть на практике.
Допустим, есть хост с 1 ядром.
И мы запускаем 2 виртуалки с такими параметрами:

* v1: CPU=1 VCPU=1
* v2: CPU=1 VCPU=1

Если на v1 и v2 запустить нагрузку, они поделят одно реальное ядро пополам.
Если у v1 указать CPU=0.5, то он будет получать 33% одного реального ядра, а v2 - 66%.
Почему? Потому что их cpu.shares будут равны в сумме 1536. Доля v1 (512) в этом будет 33%, а доля v2 (1024) - 66%.
Так вот, если теперь у v2 указать CPU=0.5, то они снова будут делить ядро пополам.
Почему? 512+512 = 1024, и доля каждого (512) будет снова равна 50%.

CPU не отражает что-то сам по себе.
Он просто задает приоритет.
И он имеет смысл только в сравнении с CPU других виртуалок.
CPU=1 у всех виртуалок на хосте имеет такой же смысл, как CPU=0.01 или CPU=100.
Он имеет смысл только в одном случае: если у нас честный хостинг.
Т.е. если мы продаем виртуалки вообще без overselling'а.
Например, сервер на 24 ядра - это 24 виртуалки с одним виртуальным ядром.
Честно и не выгодно.
В этом случае параметр можно использовать.
opennebula честно считает отданные CPU и указывает их в "Allocated CPU".
Огонь! Осталось выяснить почему OpenNebula при выделении CPU (cgroups shares) считает их как ресурсы Хоста, а vCPU для нее ничего не значит.
источник

ИИ

Игорь Исаенко in OpenNebula - русскоговорящее сообщество
потому что они упороты)
источник

k

kvaps in OpenNebula - русскоговорящее сообщество
И как в таком случае поведет себя виртуалка с одним vCPU на хосте с hyper trending,
источник

k

kvaps in OpenNebula - русскоговорящее сообщество
Alexandr Costyuk
мне вот предложили proxmox купить за деньги... Интересно, никто OpenNebula не продает?
OpenNebula Systems же
источник

ИИ

Игорь Исаенко in OpenNebula - русскоговорящее сообщество
kvaps
И как в таком случае поведет себя виртуалка с одним vCPU на хосте с hyper trending,
я думаю, как и без него.
оно отдает то, что видно, как одно ядро в htop
источник

k

kvaps in OpenNebula - русскоговорящее сообщество
Игорь Исаенко
я думаю, как и без него.
оно отдает то, что видно, как одно ядро в htop
Да, похоже на то
источник

k

kvaps in OpenNebula - русскоговорящее сообщество
Тем не менее есть возможность сделать виртуалке больше vCPU чем есть ядер на хосте
источник