Говоря о
ресурсах, нужно заметить что OpenStack
позволяет подтверждать виртуальным
машинам больше физической памяти и
вычислительных ресурсов, чем имеется
в наличии. По умолчанию планировщик
ассоциирует с одним физическим или
«гипертрейдинговым» ядром 16 виртуальных
процессоров (vCPU). Объем памяти, выделяемой
виртуальным машинам по умолчанию в
полтора раза больше, чем имеющийся
физический. За эти значения в
конфигурационном файле /etc/nova/nova.conf
отвечают параметры:
cpu_allocation_ratio=16.0
ram_allocation_ratio=1.5
В целом, по
рекомендациям в списках рассылки
OpenStack для памяти выбирают значение 0.9.
Также рекомендуется задать резервирование
оперативной памяти при помощи параметра
reserved_host_memory_mb в nova.conf. Обычно в расчетах
можно руководствоваться закладывая на
накладные расходы порядка 100 Мб на одну
виртуальную машину. Обязательно нужно
предусмотреть swap, как минимум вдвое
больший чем этот параметр. Для процессора
коэффициент сильно зависит от нагрузки.
Обычно память становится раньше
«бутылочным горлышком», чем ресурсы
центрального процессора. Если запускается
много требовательных к ЦП приложений
типа Hadoop, то коэффициент выставляется
ближе к 2, а иногда и к 1. Если основная
нагрузка веб-сервера, то число можно
увеличить вплоть до 16 заданного по
умолчанию. Если вы не можете разделить
типы нагрузки, то можно попробовать
использовать коэффициент от 2 до 5.
Рекомендуется
по возможности ограничить в своем облаке
использование flavor (типы виртуальных
машин) с числом vCPU более одного. Для
гипервизоров первого типа намного проще
выделить ресурсы виртуальной машине с
1 vCPU. Например, для выделения вычислительных
ресурсов машине типа m1.xlarge планировщику
гипервизора необходимо будет ждать
пока не освободятся восемь физических
ядер центрального процессора.
Для целей
приблизительного «сайзинга» (определения
достаточных аппаратных требований)
можно воспользоваться калькулятором
от Mirantis —
https://www.mirantis.com/openstack-services/bom-calculator/.
Еще один калькулятор приводится в
руководстве по планированию архитектуры
OpenStack на официальном сайте OpenStack —
https://github.com/noslzzp/cloud-resource-calculator/blob/master/cloud-resource-calculator.ods.
Полезной
командами для сбора статистики по
использованию оперативной памяти будет
nova diagnostics. По умолчанию ее выполнять
может только пользователь admin. В качестве
аргумента команде необходим идентификатор
экземпляра виртуальной машины:
$ nova diagnostics 6aec269e-2633-4c56-9a61-7b8cb084995e
+---------------------------+-------------+
| Property | Value |
+---------------------------+-------------+
| cpu0_time | 34150000000 |
| memory | 307200 |
| memory-actual | 307200 |
| memory-rss | 127812 |
| tap6fc6b1e7-e7_rx | 10177 |
| tap6fc6b1e7-e7_rx_drop | 0 |
| tap6fc6b1e7-e7_rx_errors | 0 |
| tap6fc6b1e7-e7_rx_packets | 97 |
| tap6fc6b1e7-e7_tx | 11576 |
| tap6fc6b1e7-e7_tx_drop | 0 |
| tap6fc6b1e7-e7_tx_errors | 0 |
| tap6fc6b1e7-e7_tx_packets | 116 |
| vda_errors | -1 |
| vda_read | 17636864 |
| vda_read_req | 731 |
| vda_write | 324608 |
| vda_write_req | 98 |
+---------------------------+-------------+
Еще одна
полезная подкоманда virsh dommemstat которую
необходимо использовать непосредственно
на вычислительном узле. Для начала
необходимо узнать имя виртуальной
машины:
[root@os2 ~]# virsh list
Id Name State
----------------------------------------------------
2 instance-00000036 running
После чего
можно отдать непосредственно команду
virsh dommemstat:
[root@os2 ~]# virsh dommemstat instance-00000036
actual 307200
rss 127812
Также могу порекомендовать запись в моем
блоге о структурах памяти Linux, на которую я всегда ссылаюсь читая курс о настройке производительности в GNU/Linux (интересно, что это - самая популярная запись :) —
http://markelov.blogspot.ru/2009/01/linux-procmeminfo.html.
Комментариев нет:
Отправить комментарий