Петер-Сервис: TopGun - погружение

Preview:

DESCRIPTION

Часть слайдов с семинара Петер-Сервис "Deep Packet Inspection: архитектура и опыт", 3 декабря 2014, Петербург Better the devil you know than the devil you don't - будьте готовы к знакомству ;-) Наша повестка: https://www.youtube.com/watch?v=CH-GUvwp7OY Наши технологии: http://www.slideshare.net/leoyuriev/peter-service-topgunhl2013 Наши мероприятия: http://www.billing.ru/events/572 - 2014-02-06

Citation preview

TopGunПогружение в технические аспекты

Леонид ЮрьевПетер-Сервис R&D

Петербург 2013-Q4

Концепты TopGun

Рой• оцениваем здоровье и связанность• виртуальные микро-машины

Балансировка• распределяем коммутаторами• управляется роем

Табло• контексты как наборы key-value• контролируем объем трафика

и размер реплик

Транспорт• обмен событиями• zerocopy, lockfree & DMA

= 3 + 1

Неочевидные возможности

1. Внешний «решатель»2. Инжекция управления3. Инжекция справочников

и не забываем:• Расширение на ходу• Мониторинг• Легкая интеграция• Загрузка дополнительных

данных• Получение

дополнительных результатов

BLADE

BLADE

BLADE

BLADE

BLADE

РАСПРЕДЕЛЕНИЕ

DATA PLANE

CONTROL PLANE

BLADE

BLADE

BLADE

BLADE

BLADE

РАСПРЕДЕЛЕНИЕ

DATA PLANE

CONTROL PLANE

SUPERVISOR

ПЕРЕКЛЮЧАТЕЛЬ

ГОРЯЧИЙ РЕЗЕРВВКЛЮЧЕНО

1

2

3

4

5

6

7

Неочевидные области применения

Искусственный интеллект• Распределенное подобие нейросети• Распределенный вывод фактов (reasoning)• (возможно) Дешевле и круче Blue Gene

Виртуальные миры• Моделирование• Игры

Биржевая торговля

0) Lockfree и Priority Inheritance– включая разбор проблем DPDK

1) Некоторые детали транспорта сообщений– буфера, lace, провайдеры

2) Среда приложения– схема взаимодействия, 8 элементов

3) Разбор Failover– что происходит, последовательность событий

4) Классификация трафика– наши подходы

5) Окружение обработчика– схема взаимодействия, 6 элементов

6) Пример приложения– схема из 10 элементов, без кода

7) Перепись роя для балансировки– чуть больше деталей

8) Использование ядер CPU– пример распределения потоков

9) Карта компонентов– 13 квадратиков и их взаимодействие

Меню

10 × 29 минут

Неблокирующая синхронизация

ODT = операция за N-тактов процессора

• Без препятствий (obstruction-free) ОDT для одного потока,пока нет препятствий со стороны других.

• Без блокировок (lock-free)ОDT хотя-бы для одного потока,даже при толкотне.

• Без ожиданий (wait-free)ОDT для каждого потока,вне зависимости от других.

- Зачем?- Сложность/Стоимость?- А нужно ли?- …

Когда же нужен «LockFree» ?

1. Нельзя приостанавливать выполнение• жесткий realtime – просто нельзя• обработчик NMI-прерывания – cli не действует• обработчика сигнала – может быть deadlock,

а управлять сигналами накладно

2. Требуется «экономить на спичках»• всяческий highload с потерей денег по тактам• kernel, аллокаторы, сборщики мусора,

профилировщики…• GameDev и ваши исключения из кейса 3

3. Если очень хочется• действительно хочется научиться

и/или попробовать• мимикрия под кейсы 1 или 2

wait-freeдля главного,

как-получитсядля остального

годятся все варианты,включая мьютексы

busy loop (и TSX тоже)+ priority inversion= ЯД

много ядер+ одна память (W)= ЯД

Проблемы DPDK – гвозди вставлены в розеткуRing library, lockless FIFO• Multi or single consumer and producer• Head и Tail – это две пары указателей

CASЧИСТО UPDATEГРЯЗНО FINALIZEГРЯЗНО ENDЧИСТО

• Другой поток будет ждать «чистого» состояния в busyloop• Владеющий ресурсом может быть вытеснен с процессора• Получаем залипание всех конкурентов в цикле

до следующего кванта времени текущему владельцу• Это хуже обычной инверсии приоритетов из-за busyloop!

Реализация FIFO позаимствована из ядра FreeBSD 8,где на время этих операций вытеснение отключается.

Гвозди подальше от розеток

Настоящий wait-free• кольцевой буфер• atomic без циклов повтора• RCU для читателей

Правильный lock-free• без «грязного состояния»• один-два CAS и мало коллизий• seqlock для читателей

Адекватный obstruction-free• Один CAS с выходом на PI-futex• Контролируемый busy loop• RCU и seqlock для писателей

wait-freeдля главного,

как-получитьсядля остального

векторизация по потокам (TLS) или ядрам

свой mytex с наследованием приоритетов,в одну CACHE LINE,c опциональным busy-входом на TSC,в разделяемой памяти

80%

20%

Петербург 2013-Q4

Спасибо за внимание!

…кроме этого, было доступноеще 9 заявленных тем,в следующий раз приходите…http://www.billing.ru/events/560

Леонид Юрьевleonid.yuriev@billing.ruПетер-Сервис R&D

Recommended