Upload
leonid-yuriev
View
192
Download
4
Embed Size (px)
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
Леонид Юрьев[email protected]Петер-Сервис R&D