Категория: Linux, Хостинг Автор: Hottab :: Среда 27 мая 2009 в 13:25

Довольно часто на одном VE сервере должны работать несколько нод, с разным приоритетом (в зависимости от выполняемых задач, тарифных планов и т.п.).

Было опробовано два метода разделения ресурсов.

Первый - жестко задавался CPULIMIT.

Этот метод выделяет ноде как бы виртуальный процессор (в процентах CPULIMIT от реального процессора), то есть нода работает, к примеру, на процессоре 200Mzh .

Второй - CPULIMIT устанавливается в ноль, то есть не ограничевается, но для каждой ноды прописывается ее “удельный вес“, параметр CPUUNITS. Объясню данный метод на примере.

Есть две ноды, одна с критичными задачами, другая - техническая, к примеру, для бэкапов. Первой ноде присваиваем CPUUNITS=200, второй CPUUNITS=100.

В результате получаем следующую ситуацию. При загрузке обоих нод на 100 процентов, первой ноде (CPUUNITS=200) будет выделено 66% процессорных ресурсов, а второй (CPUUNITS=100) - 33% .

Резюме:
Теперь о том что получилось на практике.

При балансировке первым методом каждой ноде выделялось определенное количество процессорных ресурсов, которых с трудом хватало на выполнение задач (apache, mysql). В результате высокий LA на самой ноде, ошибки TCP на VE, и более высокий LA, как следствие, на всем VE.

При использовании второго метода ресурсы CPU для каждой ноды не имеют жестких ограничений. Это значит что каждая нода может использовать процессор на максимальную мощность, в каждый момент времени (в соотвествии с “удельным весом“). Так как в реальности idle процессора достаточно большой, то это позволяет каждой ноде использовать весь объем процессорной мощности, и ограничения вступают в силу только в момент одновременной высокой нагрузке нескольких нод.

Для разных задач можно использовать как каждый метод по отдельности, так и комплексно.


Copyright © 2009 Горячий [TAB].