Tools & Methods of Program Analysis (TMPA-2013)
Guriev, D., Gai, M., Itkin, I., Terentiev, A., Innovative Trading Systems, LLC
High Performance Load Generator for Automated Trading Systems Testing
1. Высокопроизводительный генератор нагрузки
для тестирования систем автоматизированной
торговли
Дмитрий Гурьев, Мария Гай, Иосиф Иткин, Александр Терентьев
Exactpro Systems, Саратовский гос. тех. университет имени Гагарина
2. 2
Сотни миллионов заявок в день
Десятки тысяч заявок в секунду
Двузначное количество серверов в ЦОД
Миллисекундные всплески
Ограничения масштабируемости
Выделенные подключения
Фазовые переходы
Времена отклика в 3000 раз быстрее
мгновения ока
Системы автоматизированной торговли
10. 10
Нельзя просто взять и
проиграть записанные данные
Нельзя просто взять и
использовать заготовленные
тестовые сценарии
Нельзя просто вести стрельбу и
не обрабатывать обратный поток
данных
Ограничения трейдинговых систем
Нельзя просто взять и поставить много серверов
11. 11
Конфигурационный файл
#Конфигурационный файл с настройками сессий:
CONNECTIONS_CONFIG = fixConnections.cfg
#Указание используемых сессий из файла с сессиями:
CONNECTIONS_RANGE = 1-3, 5, 7-
#Файл с заготовками сообщений:
MESSAGE_TEMPLATES = fixMessageTemplates.dat
#Файл с распределением по сообщениям:
MESSAGE_RATES = messageRates.cfg
#Последовательность действий до начала теста:
INIT_CONFIG = connect(100ms), logon(3s)
#Конфигурация нагрузки:
LOAD_CONFIG = const(1000,5m), const(100000,10ms), const(1000,5m)
#Задается постоянная нагрузка 1000 сообщений в секунду
#на протяжении 5-и минут.
#Количество повторений нагрузочного сценария, заданного
#параметром LOAD_CONFIG:
NUMBER_REPETITIONS = 10
#Последовательность действий после окончания теста:
SHUTDOWN_CONFIG = logout(1s), disconnect(10ms)
#Последовательность действий при внезапном обрыве
#соединения
ON_RECONNECT_CONFIG = connect(10ms), logon(3s)
#Флаг на выполнение действий, указанных в
#ON_RECONNECT_CONFIG при обрыве соединения:
HOLD_CONNECTION = 1
#Если значение = 0, действия в ON_RECONNECT_CONFIG не
#выполняются, и соединение не восстанавливается.
#Время задержки между авторизацией сессий в миллисекундах
LOGON_INTERVAL = 1000
12. 12
Поток выполнения генератора открытого цикла посылает
сообщения со скоростью 75к сообщений в секунду с
одного ядра
Цикл обратной связи требует еще одного ядра
Этот уровень нагрузки достаточен для любой системы по
электронной торговле акциями
Центральный контроллер также маштабируется по ядрам
на одной машине
Характеристики производительности