Оценка ресурсов сервера промышленной базы - Петер

advertisement
IT-ПАРК
Оценка ресурсов сервера промышленной
базы данных биллинговой системы
А.Е. КИСЕЛЕВ, главный специалист ЗАО “ПЕТЕР-СЕРВИС”
R t = St + Q t .
На рисунке показано, что с некоторого уровня интенсивности
поступления запросов начинается
резкий рост времени отклика за
счет увеличения времени ожидания. Будем считать, что система
справляется с нагрузкой, если способна обеспечить требуемое время отклика. При этом используют
три подхода:
“Вестник связи” № 6 '2011
тестовые нагрузочные модели;
сайзинги поставщика системы
(расчет требуемого оборудования
на основе данных нагрузочного тестирования);
математические модели, использующие накопленную статистику работы существующей системы.
Для тестовой нагрузочной
модели создается стенд, являющийся копией предполагаемого
оборудования и ИС, на который
подают тестовую нагрузку. Такая
модель обладает достаточной
точностью, но требует больших
затрат на покупку или аренду
оборудования, причем в разных
конфигурациях. Сайзинговые модели — дешевле, но базируются
на среднестатистических характеристиках используемых систем
и могут не достаточно корректно
отображать их работу.
Рассмотрим математическую
модель прогноза производительности системы, которая не требует существенных затрат, позво-
Время отклика
10
9
8
7
6
5
4
3
2
1
0
0,0
0,2
0,5
0,7
1,0
Интенсивность поступления заявок
ляет легко менять параметры и
рассматривать разные целевые
конфигурации.
Моделирование подсистем
CPU и IO
Основными дефицитными ресурсами сервера баз данных являются
обычно подсистемы CPU и вводавывода (IO), которые можно представить в виде модели из набора
обслуживающих серверов и очередей заявок к ним.
В наиболее распространенных
компьютерных системах с массовым параллельным обслуживанием (SMP) одна подсистема CPU может обслуживать любое задание,
поэтому ее можно рассматривать
как набор серверов, разделяющих
одну общую очередь заданий.
В подсистеме IO каждое задание (операция чтения или записи) выполняется на конкретном
устройстве (физическом или логическом), которое должно иметь
свою очередь заданий. То есть
ms/trx
ри эксплуатации информационных систем (ИС), в том числе
биллинговых, часто возникают вопросы:
ожидается ли рост бизнеса на х %;
справится ли существующая
система с увеличением нагрузки;
хватит ли ее мощности для обслуживания абонентской базы, которая увеличится в два раза в результате присоединения филиала,
а если нет, то сколько и каких ресурсов потребуется добавить?
Для получения ответа следует
перейти от терминологии управления бизнесом к техническим
параметрам, которые можно использовать в расчетах, и прежде
всего определиться, что несет в
себе фраза “система справляется с нагрузкой”. Для IT-систем —
это поддержание уровня сервиса
(Service Level), оговоренного в соглашении об уровне обслуживания (SLA, Service Level Agreement).
Например, способность системы
обслужить определенный объем
запросов со временем отклика при
этом — не хуже некоторой установленной границы.
Ключевым понятием здесь является время отклика (R t), которое
состоит из времени ожидания в
очереди на обслуживание (Qt) и
времени обслуживания (St) запроса (задания):
П
Ожидание
Время
обслуживания
1,2
1,5
(trx/ms)
1,7
1,9
Время
отклика
2,2
2,4
Классическая зависимость времени отклика от интенсивности заявок
47
IT-ПАРК
Таблица 1
Статистические показатели ошибки для разных метрик
Статистика, используемая
в качестве метрики
Среднеквадратичное Стандартная
отклонение ошибки, % ошибка, %
Logical Reads Per Sec
±9,7
0,52
Executions Per Sec
±7,9
0,43
User Calls Per Sec
±7,8
0,42
IO можно рассматривать как набор систем из пар устройство —
очередь. Подобного рода модели
описывает теория массового обслуживания, в частности M/M/m,
которая подходит для рассматриваемых компьютерных систем.
В нашей модели среднее время обслуживания запроса S t будем считать постоянным. Когда
интенсивность запросов мала,
время
отклика
практически
равно времени обслуживания.
Если в систему начинает поступать больше запросов, образуется очередь на обслуживание,
и время отклика возрастает. С
определенного уровня интенсивности поступления запросов
время ожидания в очереди, а с
ним и время отклика, начинают
стремительно расти, а производительность системы — падать.
Для современных компьютерных
систем с процессорной SMPархитектурой такой точкой считается уровень утилизации их
ресурса в 70 — 80 %. Для подсистемы IO он будет примерно 60
— 65 %, а для старых IO-систем
— вдвое меньше (35 %). Разница между подсистемами вызвана тем, что у IO задание (или его
часть) должно обрабатываться
конкретным устройством, очередь к которому может стать
узким местом при неравномерном распределении запросов.
Пример расчета ресурсов CPU
При планировании необходимых
аппаратных ресурсов не обязательно рассчитывать время отклика, достаточно обеспечить
48
нужный уровень утилизации (загрузки) системы.
Пусть биллинговая система
функционирует на СУБД Oracle и
32-ядерном сервере. В ней ожидается запуск дополнительного,
постоянно работающего процесса, например, расчет скидочных
и бонусных баллов. Требуется
определить: способна ли система
справиться с увеличением нагрузки с учетом ожидаемого роста абонентской базы (на 200 тыс.), а если
нет, то сколько CPU (ядер) надо
установить дополнительно.
Для применения теории массового обслуживания, прежде
всего, следует выбрать единицу работы (ранее — “заявка” или “запрос” в систему).
Для простых случаев это может
быть
бизнес-транзакция,
например “оформление заказа”
для Интернет-магазина или “обращение
пользователя”
для
CRM-системы. Для сложной системы выделить одну “бизнестранзакцию” трудно. Например,
в биллинговой системе одновременно функционирует много
подсистем, которые выполняют
бизнес-транзакции
абсолютно
разного объема и затратности
по ресурсам (тарификация вызовов, расчет абонентской платы, бонусов, прием платежей и
т. п.). Если выделить определенный
проблемный промежуток времени и конкретный процесс, то для
расчетов можно взять его основную бизнес-транзакцию.
В случае сложных систем для
определения единицы нагрузки
можно опуститься на уровень сервера баз данных и использовать
его статистику (например, для
Oracle это могут быть user calls,
user transactions). К. Миллсап в
работе “Оптимизация производительности” рекомендует, как весьма подходящую, статистику logical
reads.
Использование в качестве метрики рабочей нагрузки подобных
статистик потребует собрать множество отсчетов статистик базы
данных и соответствующих им
величин утилизации CPU со стороны операционной системы за
некоторый промежуток времени
(такие СУБД, как Oracle, c версии
10g собирают и хранят нужную
информацию в Automatic Worklod
Repositary).
Чтобы выбрать наиболее подходящую статистику, характеризующую нагрузку и точность
прогноза, требуется провести
валидацию модели. Для этого
оценим статистические показатели величины ошибки (разность
между предсказанным и фактическим значением утилизации
CPU) при использовании разных
метрик базы данных Oracle 10g
(табл. 1). Прогноз выглядит грубоватым, хотя для оценки необходимых аппаратных ресурсов
точности в 8 — 10 % вполне достаточно. Для уточнения расчета в качестве метрики рабочей
нагрузки (число условных транзакций в секунду, trx/sec) можно
построить комплексную метрику,
включив в нее все три типа метрик: Trx/sес = k1 х (Logical Reads
Per Sес) + k2 х (User Calls Per Sес) +
+ k3 х (Executions Per Sес).
Лучшая точность прогноза (±6 %)
была получена при коэффициентах: k1=1; k2=250; k3=20.
Для выполнения расчетов нам
надо получить опорную точку для
модели, в данном случае пару
Trx/sес и Host CPU Utilization (%).
При этом важно правильно выбрать период усреднения, обычно это время ЧНН, поскольку мы
прогнозируем ресурсы, которые
должны обеспечить эффективную работу при максимальной
нагрузке. В исследуемом случае
период наибольшей нагрузки —
с 10:00 до 20:00.
“Вестник связи” № 6 '2011
IT-ПАРК
Таблица 2
Прогноз на основе средней нагрузки в дневное время
Абонентская база,
создающая среднюю нагрузку
Прогнозируемая утилизация CPU, %
Средняя нагрузка
в дневное время,
условных trx/sес
32 ядра
40 ядер
48 ядер
При текущей
При увеличении
интенсивности 514 trx/sес
интенсивности на 5 %
на 1 тыс. абонентов
2268688
62,2
49,7
41,4
4416000
4205000
2495556,8
68,4
54,7
45,6
4857000
4626000
2722425,6
74,6
59,7
49,7
5299000
5046000
2949294,4
80,8
64,6
53,9
5740000
5467000
3176163,2
87
69,6
58
6182000
5887000
3403032
93,2
74,6
62,2
6623000
6308000
3629900,8
99,4
79,6
66,3
7065000
6728000
3856769,6
105,7
84,5
70,4
7506000
7149000
Используя агрегирование в отношении имеющегося у нас набора
статистик, характеризующих нагрузку применительно к исследуемому периоду, получим следующую опорную точку:
среднее число условных транзакций — λq= 2268868;
средневзвешенная утилизация
CPU — U= 62,2 %;
среднеквадратичное отклонение для утилизации CPU — R 2=7,8.
Исходя из этих данных, утилизация CPU составляет 61±13 % в
течение 90 % дневного времени
(принято, что утилизация имеет
нормальное распределение, тогда
90 % отсчетов находятся в интервале ±R 2×1,645).
Время
обслуживания
(St)
определим, используя формулу
St = U×m/λq, где число CPU — m=32.
St = 0,622×32/2268868=0,000008766 с
на одну условную транзакцию.
Теперь можно рассчитать утилизацию (U) для разного количества CPU и различных величин рабочей нагрузки (λq) или, например,
число CPU при использовании более быстрых процессоров и соответствующем сокращении времени обслуживания (St).
После расчета прогноза CPU на
основании искусственной метри-
“Вестник связи” № 6 '2011
ки рабочей нагрузки (табл. 2) можем оценить область комфортной
зоны (выделена зеленым), некомфортной зоны, где загрузка CPU
в течение 90 % дневного времени
составляет 75 — 90 % (желтая), розовую зону (перегрузки CPU выше
90 %) и красную зону.
Согласно условиям задачи в
связи с введением новой функциональности и увеличением числа
абонентов на 200 тыс. появится
дополнительная нагрузка. Предположим, что при тестировании
новой функциональности было
выявлено, что при текущей абонентской базе она создает дополнительную нагрузку в 154560
условных транзакций в секунду
(примерно 35 trx/sес на одну тысячу активных абонентов). Считая,
что соотношение числа условных
транзакций к величине абонентской базы сохранится, рассчитаем уровень нагрузки после увеличения абонентской базы:
λq ожид. = (4416+200 тыс.)
х(514+35 trx/sес) = 2534184 trx/sес.
Как видим, чтобы остаться в зеленой зоне, при увеличении абонентской базы на 200 тыс. пользователей и нагрузки на 5 %, нам
придется перейти на систему с
40 ядрами, и утилизация CPU не
будет превышать 75 % (в течение
90 % дневного времени).
Заключение
В данной статье мы рассмотрели
метод оценки ресурсов сервера
базы данных на основе математической модели теории массового
обслуживания. При наличии готовых наработок он позволяет очень
быстро и с небольшими затратами
сделать прогноз о необходимых
ресурсах оборудования. Следует
иметь в виду, что модель M/M/m
является оптимистической, в том
смысле, что не учитывает ограничения на масштабируемость, за
исключением эффекта очередей.
Но никакие реальные многопроцессорные системы не являются
линейно масштабируемыми. Для
учета этого и повышения качества
прогноза можно перейти в расчетах от “физических” к “эффективным CPU”, принимая во внимание
коэффициент масштабирования
реальной системы.
Надеюсь, приведенный материал поможет снизить риски, возникающие при эксплуатации и развитии сложных систем на базе СУБД
Oracle.
49
Download