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

10
TopGun Погружение в технические аспекты Леонид Юрьев Петер-Сервис R&D Петербург 2013-Q4

Upload: leonid-yuriev

Post on 26-Jun-2015

186 views

Category:

Technology


4 download

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

TRANSCRIPT

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

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

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

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

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

Концепты TopGun

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

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

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

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

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

= 3 + 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Меню

10 × 29 минут

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Настоящий 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%

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

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

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

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

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