Your SlideShare is downloading. ×
0
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

TMPA-2013 Sartakov: Genode

199

Published on

Sartakov, V., Tarasikov, Aksys labs …

Sartakov, V., Tarasikov, Aksys labs
The Analysis of Performance of Genode Micro-core Environment Network Subsystem

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
199
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Анализ  производительности   сетевой  подсистемы   микроядерного  окружения   Genode       Сартаков  Василий,  Александр  Тарасиков     {sartakov,tarasikov}@ksyslabs.org   Tools  &  Methods  of  Program  Analysis,  2013  
  • 2. Agenda   •  Intro   •  Микроядра  и  их  окружения   •  Пример  использования  –  Шлюз   •  Анализ  производительности   •  Заключение  
  • 3. Операционные  Систем   •  Управляют  ресурсами   – Hardware     – Somware   •  Предоставляет  интерфейс  к  ресурсам   •  Обеспечивает  изоляцию  и  совместное   использование  ресурсов  
  • 4. Монолитно-­‐модульный  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  
  • 5. Микроядро   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  
  • 6. История   •  Первое  поколение:  Mach  (CMU  1985-­‐1994,   GNU/Mach,  OS  X)   •  Второе  поколение:  Minix3  (VU  Amsterdam)   •  Третье  поколение:  Семейство  L4   – L4Ka::Pistachio   – L4/Fiasco   – Fiasco.OC   – SeL4   ….    
  • 7. Fiasco.OC   •  C++   •  Object-­‐capability  uKernel   – Everything  is  an  object   – Capabili•es  (контролируемые  ссылки  на   объекты)   •  Fiasco.OC  это  не  операционная  система,  она   требует  окружения:   – L4Re   – Genode  
  • 8. 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  
  • 9. Genode  
  • 10. Компоненты  Окружений   •  «Стандартные»  библиотеки  (uCLibc,  stdc++)   •  Драйвера:  iPXE_kit,  dde_kit   •  Паравиртуализированный  L4Linux     •  Компоненты  системы  (Ned,  IO,  Moe,  Sigma,   init)   •  Портированные  приложения  –  Qt,  LwIP  
  • 11. Gateway   Безопасная сеть Шлюз Интернет
  • 12. Gateway::Монолит   •  Уязвимость  в  драйвере:  Специально   сформированный  пакет  -­‐>  срыв  -­‐>  доступ  к   памяти  ядра   •  «Умное»  устройство:  специально   сформированный  пакет  -­‐>  активация   закладки  в  сетевом  устройств  -­‐>  кража   данных  из  памяти   •  И  это  все  не  смешно  
  • 13. Gateway   Eth1   Fiasco.OC   DRV   DRV   Eth0   vEth   vEth   Firewall   Tcp/IP   App   Безопасная  среда  Внешняя  среда  
  • 14. Gateway   Eth1   Fiasco.OC   DRV  DRV   Eth0   vEth   vEth   Firewall   Tcp/IP   App   Безопасная  среда   App   Tcp/IP   L4Linux   L4Linux   DRV   DRV   Внешняя  среда  
  • 15. Упрощенная  схема   L4Linux   DRV  DRV   L4Linux  
  • 16. L4Linux   vEth  DRV   TCP/IP   APP1   netperf   APP2   L4Linux  kernel  
  • 17. Netperf:  PC  <-­‐>  SRV   PC1   SRV   Подключение  –  1gbps   704/703  
  • 18. Netperf:  PC  <-­‐>  Linux  PC  <-­‐>SRV   PC1   SRV   Linux   700/700   DRV  DRV   TCP/IP  ip  route  
  • 19. PC  <-­‐>  DRV<-­‐>  L4LInux  <-­‐>  L4Linux  <-­‐>  DRV  <-­‐>  SRV   L4Linux   DRV  DRV   L4Linux   PC1   SRV   64   Nic  Bridge   185   ~320  
  • 20. Первый  Анализ   •  Отказ  от  Nic  Bridge.  Вместо  него  кольцевой   буффер  с  передачей  сигналов  напрямую   между  L4Linux.   •  Одна  и  та  же  память  используется  в   DDE_iPXE  для  приема  и  отправки  данных.  
  • 21. PC  <-­‐>  DRV<-­‐>  L4LInux  <-­‐>  L4Linux  <-­‐>  DRV  <-­‐>  SRV   L4Linux   DRV  DRV   L4Linux   PC1   SRV   402/89   ~700  
  • 22. Профилирование   •  Два  подхода  к  профилированию:   – Oprofile,  Профилирование  на  уровне  ядра.     (kernel  +  userspace)     – Gprof,  профилирование  программ  (gcc  +  lib)   •  Первый  затратный  по  реализации,   бесполезен  (как  оказалось  в  будущем)   •  Требует  POSIX  совместимости  
  • 23. Профилирование   •  Профилировщик  как  внутрисистемный   (внутриядерный)  отладчик  –  измерение  частоты   (количества)  и  продолжительности     •  Констатировал  частое  нахождения  в  функциях   связанных  с  системными  вызовами   •  Использование  памяти  ядра,  поскольку   «микроядерный»  дизайн  профилировщика   негативно  сказывался  на  производительности   системы  –  вносил  большую  погрешность     •  Разработали  профилировщик  для  окружения:   –  Линкуется  на  старте   –  Сохраняет  данные  в  памяти,  выгружает  по  h£p,   поскольку  в  системе  отсутствует  носитель  
  • 24. Результаты  (в  тиках  процессора)   Процедура   Тики  процессора   модуль   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]  
  • 25. Анализ   •  submit_packet  -­‐  помещает  пакет  в   циклический  буфер  и  делает  IPC  запрос  к   другому  процессу.   •  Спародически  может  увеличить  время   выполнения  до  190K   •  Возможные  причины  –  реализация   драйвера,  управления  памятью,   управление  процессами.    
  • 26. Причины::Драйвера   •  Драйвера:   – Не  поддерживает  MSI-­‐X,  как  следствие   приходится  использовать  прерывание  PCIe,   возникает  конкуренция  с  другими   устройствами     – Не  объясняет  задержки  в  выполнении  
  • 27. Причины::Память   •  Netperf  последовательно  увеличивает   размер  пакетов.  Чем  дольше  работает  тест,   тем  больший  разброс  значений  в   submit_packet.     •  Гипотеза:   – Медленная  аллокация  памяти,  зависящая  от   размеров  региона.    
  • 28. Genode::allocator   •  SLAB  Allocator.     –  Список  регионов  по  1KB,  2KB,16KB   •  Кольцевой  буфер  между  сервисами:     –  При  освобождении  памяти  одним  регионом   происходит  добавление  его  в  список  свободных   регионов,  в  частности  доступный  второму  сервису.       •  При  передаче  данных  от  одного  сервиса   другому  происходит  unmap   •  И  в  этот  момент  показалось  что  проблема   найдена  
  • 29. Но  нет     •  Причиной  всему  оказались  блокировки.  
  • 30. Genode::mutex   •  SMP  реализация  отличается  от  реализации   для  однопроцессорной  системы   •  mutex  +  messaging  =  slow     •   idle  30%  (?!?!)  
  • 31. Решения   •  Хорошие  решения:   – Уменьшить  количество  threads  в  драйверах     – Lockless  environment  (WIP)   •  Вместо  блокировок  –  использование  задержек  по   времени  на  подобии  Read-­‐Copy-­‐Update     •  Плохие  решения:   •  Dataspace  (shared  memory)   •  Прямой  доступ  L4Linux  к  устройству  
  • 32. Lockless  L4Re   L4Linux   DRV  DRV   L4Linux   PC1   SRV   880   ~2Gb   910  
  • 33. Выводы   •  Сами  по-­‐себе  переключения  контекста,   количество  которых  значительно  в  сравнении  с   монолитно-­‐модульными  ядрами,  не  всегда   приводят  к  деградации  производительности.     •  L4  окружения  требуют  адаптацию  прикладного   ПО,  не  смотря  на  наличие  DDE  китов     •  Нет  предела  совершенству    
  • 34. Future  work     •  Lockless  окружение   •  Custom  userspace  tcp/ip  stack,  virtual  switch,   driver  kit  
  • 35. Спасибо.  

×