Сегодня поговорим о сайзинге ресурсов в облаке.
О том, как получать больше производительности на виртуальных машинах рассказывает Михаил Соловьев.
Сразу отметим: оптимизировать производительность нужно под конкретное приложение, с его компонентами и их взаимосвязью.
– Процессор
Если у вас многопоточное приложение — вам нужно много ядер, если однопоточное — то большое количество ядер не понадобится, но будет критична их частота.
Для 1С нужны ядра от 3ГГц. На физических процессорах сервера должны быть выключены опции снижения производительности при простое процессоров, а также зафиксирован буст.
Помните о том, что при увеличении количества ядер добавление каждого последующего не дает вам на 100% больше производительности. Конечно, все зависит от приложения. Например, добавление второго ядра часто удваивает производительность. Третье и четвертое добавляют по 50%. А добавление, условно, 33-го ядра вообще может привести к снижению производительности.
– Память
Памяти нужно много. Она дорогая, но она дает дополнительную скорость.
Запустите и потестируйте приложение, посмотрите на дисковые операции и на то, сколько занято памяти. Если она занята полностью, а дисковых операций, на ваш взгляд, много — удваивайте объем оперативки, перезапускайте машину и еще раз смотрите на дисковые операции. Делайте так до тех пор, пока производительность приложения повышается и вся память утилизируется. Вероятно, вы придете к примерному соотношению 24Гб - 32Гб на один процессор ВМ.
И еще. Как только мы говорим про многоядерную ВМ, нам нужно вспоминать о существовании NUMA узлов (pNuma). Каждый сокет процессора имеет быстрый доступ только к определенным слотам памяти. То есть, при 4 сокетах и 256Гб памяти на сервере у вас будет 4 NUMA узла каждый с 64Гб памяти. А не 256Гб разом :)
Важная деталь. Для ВМ существует также vNuma — аппаратная архитектура машины, ее расположение по pNuma. Она определяется при первом создании ВМ (!) и потом ее можно изменить только специальным воздействием.
– Диски
Мы все понимаем, что SSD быстрее SATA, так что зайдем с другой стороны. Сделайте больше дисков. Как правило, все ВМ делаются с одним диском. Но попробуйте сделать ее с двумя и больше. Попробуйте сделать 10 дисков!
Разложите в машине данные по этим дисками, посмотрите, как увеличится производительность. Вы сможете класть нужные данные на быстрые слои, ненужные — на медленные. Появится возможность гранулярного резервного копирования, вы получите более короткое время восстановления данных.
– Сеть
Проверьте нагрузку процессора — при занятом на 100% CPU могут возникать потери пакетов. Но если проработать предыдущие пункты, то почти наверняка все будет в порядке :)
Этот список — немного капитанские советы. Но просто не забывайте это все применять :)
И бонусом — ролик с VMworld о работе с действительно крупными виртуальными машинами:
https://youtu.be/sXbOoRo_Wn4