профилированиеЭрливидео

Содержание

Слайд 2

Эрливидео

Потоковое видео
Разные протоколы: MPEG-TS, RTMP, …
Высокая эффективность

Эрливидео Потоковое видео Разные протоколы: MPEG-TS, RTMP, … Высокая эффективность

Слайд 3

Разные нагрузки

Тысячи пар: один источник, один клиент
Один источник, тысячи клиентов

Разные нагрузки Тысячи пар: один источник, один клиент Один источник, тысячи клиентов

Слайд 4

Видео

Один поток: 50 кадров/сек, 500 КБит/с
2000 клиентов — 100 000 кадров/сек.
Суммарно 1 ГБит/с

Видео Один поток: 50 кадров/сек, 500 КБит/с 2000 клиентов — 100 000 кадров/сек. Суммарно 1 ГБит/с

Слайд 5

RTMP

У каждого клиента своё
Каждому клиенту своя копия потока
Данные общие, заголовки разные

RTMP У каждого клиента своё Каждому клиенту своя копия потока Данные общие, заголовки разные

Слайд 6

RTMP

Скорости не хватает — клиент залипает
Ошибка в тайстемпе — клиент залипает
Клиент залипает — надо что-то

RTMP Скорости не хватает — клиент залипает Ошибка в тайстемпе — клиент
делать

Слайд 7

Рост эрливидео

Начались проблемы на 800 клиентах
Неверная архитектура
Пришлось профилировать

Рост эрливидео Начались проблемы на 800 клиентах Неверная архитектура Пришлось профилировать

Слайд 8

Профилирование

Девелопмент одно — продакшн другое
Разные версии клиентов
Разные скорости каналов
Разные задержки на каналах

Профилирование Девелопмент одно — продакшн другое Разные версии клиентов Разные скорости каналов Разные задержки на каналах

Слайд 9

Профилирование

Профилирование на продакшне
Не отключая пользователей
Без деградации системы

Профилирование Профилирование на продакшне Не отключая пользователей Без деградации системы

Слайд 10

Инструменты

Valgrind и профилировщики тормозят систему
gdb вносит искажения в код

Инструменты Valgrind и профилировщики тормозят систему gdb вносит искажения в код

Слайд 11

Инструменты

Erlang предлагает другие подходы к профилированию

Инструменты Erlang предлагает другие подходы к профилированию

Слайд 12

Erlang

Данные и потоки выполнения объединены, как процессы ОС
Обмен асинхронными сообщениями
Message box у

Erlang Данные и потоки выполнения объединены, как процессы ОС Обмен асинхронными сообщениями
каждого процесса

Слайд 13

Erlang

Все данные немутабельные
Процесс — рекурсивная функция, вызывающая себя с новым значением

Erlang Все данные немутабельные Процесс — рекурсивная функция, вызывающая себя с новым значением

Слайд 14

Erlang

Один процесс под каждого клиента
Один процесс под каждый «объект»
Вызовы методов строго последовательны

Erlang Один процесс под каждого клиента Один процесс под каждый «объект» Вызовы методов строго последовательны

Слайд 15

Lowload

Процесс-«поток» шлет сообщения процессам-«клиентам»
Клиенты упаковывают RTMP сами
в системе FPS*N сообщений

Lowload Процесс-«поток» шлет сообщения процессам-«клиентам» Клиенты упаковывают RTMP сами в системе FPS*N сообщений

Слайд 16

Тормоза

Начинаются «лаги» и «залипание»
Куда смотреть? Что мерять?

Тормоза Начинаются «лаги» и «залипание» Куда смотреть? Что мерять?

Слайд 17

Мониторинг

Меряем очереди сообщений
erlang:process_info(Pid,message_queue_len)

Мониторинг Меряем очереди сообщений erlang:process_info(Pid,message_queue_len)

Слайд 18

Мониторинг

Меряем загрузку CPU
etop:start()
мониторим общую память процессов

Мониторинг Меряем загрузку CPU etop:start() мониторим общую память процессов

Слайд 19

Узкие места

В узких местах накапливаются сообщения
Растет CPU, потребляемый процессом
Накапливается память

Узкие места В узких местах накапливаются сообщения Растет CPU, потребляемый процессом Накапливается память

Слайд 20

Узкие места

Процессу не хватает одного ядра
Недообрабатывает сообщения
Накапливается память
Встают в ожидании клиентские процессы

Узкие места Процессу не хватает одного ядра Недообрабатывает сообщения Накапливается память Встают в ожидании клиентские процессы

Слайд 21

Как боролись?

Уменьшили количество сообщений
Прямая запись в сокет
Распараллелили запись в сокеты по ядрам

Как боролись? Уменьшили количество сообщений Прямая запись в сокет Распараллелили запись в сокеты по ядрам

Слайд 22

Результат

Во много раз увеличили количество одновременных клиентов

Результат Во много раз увеличили количество одновременных клиентов

Слайд 23

Рекомендации

Планировать количество проходящих сообщений
Уменьшать работу внутри вызываемого процесса
Раскладывать работу по процессам — расползутся

Рекомендации Планировать количество проходящих сообщений Уменьшать работу внутри вызываемого процесса Раскладывать работу
по ядрам

Слайд 24

Выводы

Профилировка приложений на erlang возможен без деградации качества обслуживания
Методы поиска проблем несложны

Выводы Профилировка приложений на erlang возможен без деградации качества обслуживания Методы поиска проблем несложны и эффективны
и эффективны
Имя файла: профилированиеЭрливидео.pptx
Количество просмотров: 126
Количество скачиваний: 0