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

More Related Content

PDF
Сергей Еланцев - Troubleshooting
PDF
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
PDF
linux and freebsd monitoring
PDF
Другая виртуализация
PDF
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
PDF
Платформа для видео сроком в квартал. Александр Тоболь.
PDF
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
PDF
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Сергей Еланцев - Troubleshooting
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
linux and freebsd monitoring
Другая виртуализация
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
Платформа для видео сроком в квартал. Александр Тоболь.
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...

What's hot (20)

PPTX
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
PPT
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
PDF
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
PPTX
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
PPTX
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
PDF
Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)
PPTX
Инкапсуляция сетевой топологии при помощи ПКС
PPTX
Серверы стандартной архитектуры
PDF
Тестирование QoS на экспериментальном стенде
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
PDF
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
PPTX
Операционные системы 2015, лекция № 3
PPTX
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
PPTX
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
PDF
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
PDF
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
PPTX
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
PPTX
High performance computing принципы проектирования сети
PPTX
Операционные системы 2015, лекция № 4
PDF
Максим Дунин, Nginx, Inc.
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Реклама со скоростью света (DMP-платформа), Сергей Жемжицкий (Clever Data)
Инкапсуляция сетевой топологии при помощи ПКС
Серверы стандартной архитектуры
Тестирование QoS на экспериментальном стенде
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Операционные системы 2015, лекция № 3
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
Алексей Котов. "Разделяй и властвуй". IT-пятница, октябрь 2018
High performance computing принципы проектирования сети
Операционные системы 2015, лекция № 4
Максим Дунин, Nginx, Inc.
Ad

Viewers also liked (20)

PDF
TMPA-2013 Conference Proceedings
PDF
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
PDF
TMPA-2015: Lexical analysis of dynamically formed string expressions
PDF
TMPA-2015: Software Engineering Education: The Messir Approach
PPT
TMPA-2015: ClearTH: a Tool for Automated Testing of Post Trade Systems
PDF
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
PPT
TMPA-2015: Information Support System for Autonomous Spacecraft Control Macro...
PPTX
TMPA-2015: Generation of Test Scenarios for Non Deterministic and Concurrent ...
PDF
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
PDF
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
PDF
TMPA-2015: Towards a Usable Defect Prediction Tool: Crossbreeding Machine Lea...
PPTX
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
PDF
TMPA-2015: Implementing the MetaVCG Approach in the C-light System
PDF
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
PDF
TMPA-2015: The Verification of Functional Programs by Applying Statechart Dia...
PDF
TMPA-2015: A Need To Specify and Verify Standard Functions
PDF
TMPA-2015: Formal Methods in Robotics
PPTX
TMPA-2015: Automated process of creating test scenarios for financial protoco...
PPTX
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
PPT
TMPA-2015: FPGA-Based Low Latency Sponsored Access
TMPA-2013 Conference Proceedings
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Software Engineering Education: The Messir Approach
TMPA-2015: ClearTH: a Tool for Automated Testing of Post Trade Systems
TMPA-2015: Multi-Module Application Tracing in z/OS Environment
TMPA-2015: Information Support System for Autonomous Spacecraft Control Macro...
TMPA-2015: Generation of Test Scenarios for Non Deterministic and Concurrent ...
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Towards a Usable Defect Prediction Tool: Crossbreeding Machine Lea...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Implementing the MetaVCG Approach in the C-light System
TMPA-2015: The Application of Parameterized Hierarchy Templates for Automated...
TMPA-2015: The Verification of Functional Programs by Applying Statechart Dia...
TMPA-2015: A Need To Specify and Verify Standard Functions
TMPA-2015: Formal Methods in Robotics
TMPA-2015: Automated process of creating test scenarios for financial protoco...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: FPGA-Based Low Latency Sponsored Access
Ad

Similar to TMPA-2013 Sartakov: Genode (20)

PDF
1. Sartakov. Virtualization. June 01, 2013
PPTX
Опыт внедрения OpenStack
PDF
Вячеслав Бирюков - Linux инструменты системного администратора
PPTX
RUNOS OpenFlow controller (ru)
PPTX
Создание и развитие отечественной платформы с открытым программным кодом для ...
PDF
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
PPTX
Net core and linux in production
PDF
Java Platform Performance BoF
PDF
Итак, оно тормозит
PDF
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
PPTX
Hosting for forbes.ru_
ODP
Работа высоконагруженного DNS-сервера
PPTX
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
PDF
Операционные системы
PPTX
антон веснин Rails Application Servers
PPTX
развертывание среды Rails (антон веснин, Locum Ru)
PPTX
GRANIT — Global Russian Advanced Network Initiative
PPSX
Qlogic: Технологии Ethernet
PDF
Solaris OS
PPTX
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...
1. Sartakov. Virtualization. June 01, 2013
Опыт внедрения OpenStack
Вячеслав Бирюков - Linux инструменты системного администратора
RUNOS OpenFlow controller (ru)
Создание и развитие отечественной платформы с открытым программным кодом для ...
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Net core and linux in production
Java Platform Performance BoF
Итак, оно тормозит
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Hosting for forbes.ru_
Работа высоконагруженного DNS-сервера
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
Операционные системы
антон веснин Rails Application Servers
развертывание среды Rails (антон веснин, Locum Ru)
GRANIT — Global Russian Advanced Network Initiative
Qlogic: Технологии Ethernet
Solaris OS
Суперкомпьютеры сегодня и завтра архитектура, проблемы, перспективы (Андрей С...

More from Iosif Itkin (20)

PDF
Foundations of Software Testing Lecture 4
PPTX
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
PDF
Exactpro FinTech Webinar - Global Exchanges Test Oracles
PDF
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
PDF
Operational Resilience in Financial Market Infrastructures
PDF
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
PDF
Testing the Intelligence of your AI
PDF
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
PDF
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
PPTX
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
PDF
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
PDF
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
PPTX
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
PDF
QA Community Saratov: Past, Present, Future (2019-02-08)
PDF
Machine Learning and RoboCop Testing
PDF
Behaviour Driven Development: Oltre i limiti del possibile
PDF
2018 - Exactpro Year in Review
PPTX
Exactpro Discussion about Joy and Strategy
PPTX
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
PDF
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
Foundations of Software Testing Lecture 4
QA Financial Forum London 2021 - Automation in Software Testing. Humans and C...
Exactpro FinTech Webinar - Global Exchanges Test Oracles
Exactpro FinTech Webinar - Global Exchanges FIX Protocol
Operational Resilience in Financial Market Infrastructures
20 Simple Questions from Exactpro for Your Enjoyment This Holiday Season
Testing the Intelligence of your AI
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QA Community Saratov: Past, Present, Future (2019-02-08)
Machine Learning and RoboCop Testing
Behaviour Driven Development: Oltre i limiti del possibile
2018 - Exactpro Year in Review
Exactpro Discussion about Joy and Strategy
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)

TMPA-2013 Sartakov: Genode

  • 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  
  • 10. Компоненты  Окружений   •  «Стандартные»  библиотеки  (uCLibc,  stdc++)   •  Драйвера:  iPXE_kit,  dde_kit   •  Паравиртуализированный  L4Linux     •  Компоненты  системы  (Ned,  IO,  Moe,  Sigma,   init)   •  Портированные  приложения  –  Qt,  LwIP  
  • 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