TMPA-2013 Sartakov: Genode
-
Upload
iosif-itkin -
Category
Documents
-
view
509 -
download
2
description
Transcript of TMPA-2013 Sartakov: Genode
![Page 1: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/1.jpg)
Анализ производительности сетевои подсистемы
микроядерного окружения Genode
Сартаков Василий, Александр Тарасиков
{sartakov,tarasikov}@ksyslabs.org Tools & Methods of Program Analysis, 2013
![Page 2: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/2.jpg)
Agenda
• Intro • Микроядра и их окружения • Пример использования – Шлюз • Анализ производительности • Заключение
![Page 3: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/3.jpg)
Операционные Систем
• Управляют ресурсами – Hardware – Somware
• Предоставляет интерфейс к ресурсам • Обеспечивает изоляцию и совместное использование ресурсов
![Page 4: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/4.jpg)
Монолитно-‐модульный Linux
CPU main memory
I/O devices
MC bash WM apache
FLV PIDN PID6 PID10
HAL
System-‐Call interface
FS IPC NET Drivers Scheduler Mem Swap
![Page 5: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/5.jpg)
Микроядро
CPU main memory
I/O devices
MC bash WM apache
Hardware access System-‐Call interface
FS
IPC
NET Drivers
Scheduler
Mem Swap
AS Isola�on
![Page 6: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/6.jpg)
История
• Первое поколение: Mach (CMU 1985-‐1994, GNU/Mach, OS X)
• Второе поколение: Minix3 (VU Amsterdam) • Третье поколение: Семейство L4 – L4Ka::Pistachio – L4/Fiasco – Fiasco.OC – SeL4 ….
![Page 7: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/7.jpg)
Fiasco.OC
• C++ • Object-‐capability uKernel – Everything is an object – Capabili�es (контролируемые ссылки на объекты)
• Fiasco.OC это не операционная система, она требует окружения: – L4Re – Genode
![Page 8: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/8.jpg)
L4Re
CPU main memory
I/O devices
uCLibc
Sigma0 Moe
Ned
Hardware access System-‐Call interface
Hello world
IPC
IPC FW
Scheduler
Libstdc++
AS Isola�on
![Page 9: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/9.jpg)
Genode
![Page 10: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/10.jpg)
Компоненты Окружений
• «Стандартные» библиотеки (uCLibc, stdc++) • Драйвера: iPXE_kit, dde_kit • Паравиртуализированный L4Linux • Компоненты системы (Ned, IO, Moe, Sigma, init)
• Портированные приложения – Qt, LwIP
![Page 11: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/11.jpg)
Gateway
Безопасная сеть
Шлюз Интернет
![Page 12: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/12.jpg)
Gateway::Монолит
• Уязвимость в драйвере: Специально сформированный пакет -‐> срыв -‐> доступ к памяти ядра
• «Умное» устройство: специально сформированный пакет -‐> активация закладки в сетевом устройств -‐> кража данных из памяти
• И это все не смешно
![Page 13: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/13.jpg)
Gateway
Eth1
Fiasco.OC
DRV
DRV
Eth0
vEth vEth
Firewall
Tcp/IP App
Безопасная среда Внешняя среда
![Page 14: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/14.jpg)
Gateway
Eth1
Fiasco.OC
DRV DRV
Eth0
vEth vEth
Firewall
Tcp/IP
App
Безопасная среда
App
Tcp/IP
L4Linux L4Linux
DRV DRV
Внешняя среда
![Page 15: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/15.jpg)
Упрощенная схема
L4Linux DRV DRV
L4Linux
![Page 16: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/16.jpg)
L4Linux
vEth DRV TCP/IP
APP1 netperf APP2
L4Linux kernel
![Page 17: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/17.jpg)
Netperf: PC <-‐> SRV
PC1 SRV Подключение – 1gbps
704/703
![Page 18: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/18.jpg)
Netperf: PC <-‐> Linux PC <-‐>SRV
PC1 SRV
Linux
700/700
DRV DRV TCP/IP ip route
![Page 19: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/19.jpg)
PC <-‐> DRV<-‐> L4LInux <-‐> L4Linux <-‐> DRV <-‐> SRV
L4Linux DRV DRV
L4Linux PC1 SRV
64
Nic Bridge
185
~320
![Page 20: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/20.jpg)
Первый Анализ
• Отказ от Nic Bridge. Вместо него кольцевой буффер с передачей сигналов напрямую между L4Linux.
• Одна и та же память используется в DDE_iPXE для приема и отправки данных.
![Page 21: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/21.jpg)
PC <-‐> DRV<-‐> L4LInux <-‐> L4Linux <-‐> DRV <-‐> SRV
L4Linux DRV DRV
L4Linux PC1 SRV
402/89
~700
![Page 22: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/22.jpg)
Профилирование
• Два подхода к профилированию: – Oprofile, Профилирование на уровне ядра. (kernel + userspace)
– Gprof, профилирование программ (gcc + lib)
• Первый затратный по реализации, бесполезен (как оказалось в будущем)
• Требует POSIX совместимости
![Page 23: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/23.jpg)
Профилирование
• Профилировщик как внутрисистемный (внутриядерный) отладчик – измерение частоты (количества) и продолжительности
• Констатировал частое нахождения в функциях связанных с системными вызовами
• Использование памяти ядра, поскольку «микроядерный» дизайн профилировщика негативно сказывался на производительности системы – вносил большую погрешность
• Разработали профилировщик для окружения: – Линкуется на старте – Сохраняет данные в памяти, выгружает по h£p, поскольку в системе отсутствует носитель
![Page 24: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/24.jpg)
Результаты (в тиках процессора) Процедура Тики процессора модуль
dde_kit_sem_up 13 lib/nic.c [dde_ipxe]
dde_kit_sem_down 59 lib/nic.c [dde_ipxe]
memcpy 23 lib/nic.c [dde_ipxe]
get_acked 46 nic/component.h [Nic]
submit_packet 190-‐160k nic/component.h [Nic]
packed_descriptor 10 nic/component.h [Nic]
get_packet 8 lib/l4lx/genode_net.cc [L4Linux]
acknowledge_packet 254 lib/l4lx/genode_net.cc [L4Linux]
submit_packet 65 lib/l4lx/genode_net.cc [L4Linux]
memcpy 25 lib/l4lx/genode_net.cc [L4Linux]
![Page 25: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/25.jpg)
Анализ
• submit_packet -‐ помещает пакет в циклический буфер и делает IPC запрос к другому процессу.
• Спародически может увеличить время выполнения до 190K
• Возможные причины – реализация драйвера, управления памятью, управление процессами.
![Page 26: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/26.jpg)
Причины::Драйвера
• Драйвера: – Не поддерживает MSI-‐X, как следствие приходится использовать прерывание PCIe, возникает конкуренция с другими устройствами
– Не объясняет задержки в выполнении
![Page 27: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/27.jpg)
Причины::Память
• Netperf последовательно увеличивает размер пакетов. Чем дольше работает тест, тем больший разброс значений в submit_packet.
• Гипотеза: – Медленная аллокация памяти, зависящая от размеров региона.
![Page 28: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/28.jpg)
Genode::allocator
• SLAB Allocator. – Список регионов по 1KB, 2KB,16KB
• Кольцевой буфер между сервисами: – При освобождении памяти одним регионом происходит добавление его в список свободных регионов, в частности доступный второму сервису.
• При передаче данных от одного сервиса другому происходит unmap
• И в этот момент показалось что проблема найдена
![Page 29: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/29.jpg)
Но нет
• Причиной всему оказались блокировки.
![Page 30: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/30.jpg)
Genode::mutex
• SMP реализация отличается от реализации для однопроцессорной системы
• mutex + messaging = slow • idle 30% (?!?!)
![Page 31: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/31.jpg)
Решения
• Хорошие решения: – Уменьшить количество threads в драйверах – Lockless environment (WIP)
• Вместо блокировок – использование задержек по времени на подобии Read-‐Copy-‐Update
• Плохие решения:
• Dataspace (shared memory) • Прямой доступ L4Linux к устройству
![Page 32: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/32.jpg)
Lockless L4Re
L4Linux DRV DRV
L4Linux PC1 SRV
880
~2Gb
910
![Page 33: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/33.jpg)
Выводы
• Сами по-‐себе переключения контекста, количество которых значительно в сравнении с монолитно-‐модульными ядрами, не всегда приводят к деградации производительности.
• L4 окружения требуют адаптацию прикладного ПО, не смотря на наличие DDE китов
• Нет предела совершенству
![Page 34: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/34.jpg)
Future work
• Lockless окружение • Custom userspace tcp/ip stack, virtual switch, driver kit
![Page 35: TMPA-2013 Sartakov: Genode](https://reader031.fdocuments.net/reader031/viewer/2022020115/5486c73bb4af9f7d0d8b526c/html5/thumbnails/35.jpg)
Спасибо.