SlideShare a Scribd company logo
1 of 34
Download to read offline
Jak stworzyć wysokowydajny i skalowalny stos
sieciowy dla 72 rdzeni CPU ?
Trzeci Wieczór Technologii Sieciowych
15 października 2014
1. Wstęp
2. Opis referencyjnej platformy
3. Budowa stosu TCP/IP w kontekście użytej platformy
4. Wyniki
5. Pytania
Wstęp
● Wysoka przepustowość
● Niskie opóźnienia
● Liczba połączeń/s
(nawiązywanie i
kończenie)
1.Wstęp
2.Opis referencyjnej platformy
3.Budowa stosu TCP/IP w kontekście użytej
platformy
4.Wyniki
5.Pytania
•
•
•
•
● Lokalny cache L1 i L2
● “Wspólny” cache L3
○ Możliwy dostęp do L2 innego tile’a
● Memory homing
○ Local homing
○ Remote homing
○ Hash for homing
Programowalny, inteligentny silnik dla pakietów
● Parsowanie nagłówków
● Dystrybucja pakietów
● Zarządzanie buforami
● Load balancing
● Obliczanie sumy kontr. L4 podczas odbierania i
wysyłania pakietów (offload)
● Scatter/gather pakietów będących łańcuchem
buforów
1. ę
2.
3. Budowa stosu TCP/IP w kontekście użytej
platformy
4.
5.
ł ł ń
Ważne biblioteki Netliba
● Zero Overhead Linux (ZOL)
○ jeden wątek 'przypięty' do jednego Tile'a
○ żadnych przerwań, przełączania kontekstu i
syscall'i
● Nieznaczna modyfikacja biblioteki pthreads
○ Podanie numeru Tile'a na którym uruchamiamy
wątek
Różne ścieżki dla pakietu
● Jeden proces składa się z wielu wątków
● Każdy wątek działa na osobnym Tile'u
● Każdy Tile zajmuje się przetwarzaniem przychodzących i wychodzących
pakietów dla danego połączenia TCP/IP (run-to-completion)
● Dane połączenie TCP/IP jest zawsze przetwarzane przez ten sam Tile
(static flow affinity) dzięki algorytmowi hashowania połączeń (konfiguracja
dla mPIPE)
Takie założenia pozwalają na:
● eliminację locków dla struktur specyficznych dla danego połączenia TCP
● zmniejszenie ilości lokalnych PCB dla Tile'a a przez to zmniejszenie czasu
spędzonego na ich wyszukiwaniu, tworzeniu itp.
● optymalizację dostępu do pamięci cache
Jak zapewnić flow affinity
● Ingress
○ mPIPE oblicza hash na podstawie czwórki (adresu IP źródła,
przeznaczenia oraz portów) dla każdego przychodzącego
pakietu
○ Algorytm zwraca numer tile'a gdzie pakiet ma być przekazany
● Egress
○ Ten sam scenariusz obowiązuje podczas nawiązywania
połączenia TCP na tile'u gdzie działa aplikacja
○ Aplikacja dostaje zestaw kolejek za pomocą których zawsze
wysyła pakiety do tego samego CPU
ł
…
•Przetwarzanie połączenia TCP (kod z FreeBSD)
•Przetwarzanie wiadomości w kolejce kontrolnej
•Przetwarzanie pakietów w kolejkach Rx/Tx
•Zarządzanie kolejką z buforami -
alokacja/de-alokacja
Kolejki między 'Network stack tile' a
'Application tile'
● Kolejka danych - Data Communication
○ Jedna dla każdego połączenia TCP
○ Zawierają pakiety z danymi
○ Żadnych locków po stronie 'Network stack tile'
○ Służy jako ‘socketbuf’ ekwiwalent dla stosu FreeBSD
● Kolejka z wiadomościami kontrolnymi
○ Jedna na każdego 'Network stack tile'
○ Zawiera wiadomości specyficzne dla połączenia TCP takie jak
connect, listen, etc.
● Kolejki z buforami
○ Jedna na każdego 'Network stack tile'
○ Opisana w dalszej części prezentacji
Alokacja/dealokacja
Dodaj nowy bufor
albo re-użyj
Kolejka z pustymi buforami
Kolejka z buforami do dealokacji
Zdjęcie bufora
Zwrócenie buforaDealokacja bufora
Jak uniknąć kopiowania pakietów - zero-copy
● Ten sam pakiet musi być widziany przez hardware (mPIPE), CPU na
którym działa stos i aplikacja
● Zastosowane rozwiązanie
○ Dedykowane strony pamięci dostępne bezpośrednio przez mPIPE
○ Zestaw buforów (prealokowanych z tych samych stron pamięci) dla
każdego CPU gdzie działa stos (Network stack tile)
○ Każdy bufor musi być zwrócony do tego samego CPU z którego był
wzięty (kolejka z buforami)
○ Tylko mPIPE oraz CPU gdzie działa stos może alokować/dealokować
bufory
● Podobne do funkcji socket'owych:
○ listen(), bind(), connect(), send(), receive(), etc.
● Zawsze tryb non-blocking
● Sposób pracy bazuje na pollingu
● Dostarcza funkcje, które pozwalają manipulować
buforami
○ Konieczne dla podejścia 'zero-copy’
○ Pozwala na alokacje, rozszerzenie, zmniejszenie
buforów itp.
● Inspirowane LwIP
● Implementacja w oparciu o raw/native API
● Kompatybilność z Unix socekt API
● API łatwiejsze do użycia dla piszącego aplikację
● Niższa wydajność w porównaniu z raw/native API
○ Konieczność kopiowania
Jak pozbyć się locków
● Każdy tile ma przypisany tylko jeden wątek
● Każde połączenie TCP jest obsługiwane tylko przez
jeden tile
● Tylko jeden otwarty socket na tile'u gdzie działa
aplikacja
○ Kolejka z buforami
○ Kolejka z pakietami Rx/Tx
○ Kolejka z kontrolnymi wiadomościami
1. Wstęp
2.
3. Budowa stosu TCP/IP w kontekście użytej
platformy
4.
5.
Środowisko testowe
● ‘ab’ - liczba połączeń/s (nawiązywanie i kończenie)
● Infinicore – TCP/IP tester
● Iperf oraz prosta aplikacja ‘echo’ mierząca
przepustowość
● Liczniki hardwarowe mierzące opóźnienia
wprowadzone przez stos
Przepustowość
Przepustowość
Przepustowość
Przepustowość
Przepustowość vs skalowalność
Opóźnienie
Liczba połączeń/s
● Najtrudniejsze do osiągnięcia
● Około 700k/s z 16 rdzeniami
○ Wynik ograniczony przez środowisko testowe
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?

More Related Content

What's hot

Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Semihalf
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEA
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Semihalf
 
OpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z WodotryskiemOpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z Wodotryskiemlinuxcamp
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronikariklaunim
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
 
Bezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPressBezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPressMichał Smereczyński
 
PLNOG 18 - Marcin Kuczera- ONT idealny
PLNOG 18 - Marcin Kuczera- ONT idealny PLNOG 18 - Marcin Kuczera- ONT idealny
PLNOG 18 - Marcin Kuczera- ONT idealny PROIDEA
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud StorageOnetIT
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 

What's hot (19)

Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Es jak FTPS SFTP
Es jak FTPS SFTPEs jak FTPS SFTP
Es jak FTPS SFTP
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
 
OpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z WodotryskiemOpenSSH Kombajn z Wodotryskiem
OpenSSH Kombajn z Wodotryskiem
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronika
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
 
Python io
Python ioPython io
Python io
 
Bezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPressBezpieczna infrastruktura serwisu www w chmurze - WordPress
Bezpieczna infrastruktura serwisu www w chmurze - WordPress
 
Wprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbeddedWprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbedded
 
PLNOG 18 - Marcin Kuczera- ONT idealny
PLNOG 18 - Marcin Kuczera- ONT idealny PLNOG 18 - Marcin Kuczera- ONT idealny
PLNOG 18 - Marcin Kuczera- ONT idealny
 
Onet barcamp 4 - Cloud Storage
Onet barcamp 4  - Cloud StorageOnet barcamp 4  - Cloud Storage
Onet barcamp 4 - Cloud Storage
 
DTrace
DTraceDTrace
DTrace
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Zaliczenie Sem 2
Zaliczenie Sem 2Zaliczenie Sem 2
Zaliczenie Sem 2
 

Similar to Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?

PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
Space Wars Hack - Class #1
Space Wars Hack - Class #1Space Wars Hack - Class #1
Space Wars Hack - Class #1Piotr Pawlak
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2arkulik
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies
 
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PROIDEA
 
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...Paweł Małachowski
 
Współczesne komputery
Współczesne komputeryWspółczesne komputery
Współczesne komputerymdqx
 
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PROIDEA
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...PROIDEA
 
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.MarioPL
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitchmichalpodoski
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEA
 
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...PROIDEA
 
PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...
PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...
PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...PROIDEA
 
Gluster FS
Gluster FSGluster FS
Gluster FS3camp
 

Similar to Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU? (20)

PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
Space Wars Hack - Class #1
Space Wars Hack - Class #1Space Wars Hack - Class #1
Space Wars Hack - Class #1
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
 
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
 
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
[GURU Lublin][2004][PL] Kształtowanie ruchu w systemie FreeBSD z wykorzystani...
 
Współczesne komputery
Współczesne komputeryWspółczesne komputery
Współczesne komputery
 
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
PLNOG 21: Alek Cesarz, Piotr Misiak - Petabajty_z_kosmosu_(serio)
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
 
Usługi sieci internet cz i 2014
Usługi sieci internet cz i   2014Usługi sieci internet cz i   2014
Usługi sieci internet cz i 2014
 
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
 
Pamięć operacyjna
Pamięć operacyjnaPamięć operacyjna
Pamięć operacyjna
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
 
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
PLNOG 18 - Bartek Raszczyk - London calling! Wnioski z wdrażania architektury...
 
PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...
PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...
PLNOG 9: Ryszard Czernecki - Bezpieczeństwo usług a zasoby sprzętowe platform...
 
Gluster FS
Gluster FSGluster FS
Gluster FS
 

More from Semihalf

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Semihalf
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Semihalf
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!Semihalf
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Semihalf
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.Semihalf
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipSemihalf
 

More from Semihalf (15)

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
 

Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?

  • 1. Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU ? Trzeci Wieczór Technologii Sieciowych 15 października 2014
  • 2. 1. Wstęp 2. Opis referencyjnej platformy 3. Budowa stosu TCP/IP w kontekście użytej platformy 4. Wyniki 5. Pytania
  • 3. Wstęp ● Wysoka przepustowość ● Niskie opóźnienia ● Liczba połączeń/s (nawiązywanie i kończenie)
  • 4. 1.Wstęp 2.Opis referencyjnej platformy 3.Budowa stosu TCP/IP w kontekście użytej platformy 4.Wyniki 5.Pytania
  • 6.
  • 7. ● Lokalny cache L1 i L2 ● “Wspólny” cache L3 ○ Możliwy dostęp do L2 innego tile’a ● Memory homing ○ Local homing ○ Remote homing ○ Hash for homing
  • 8.
  • 9. Programowalny, inteligentny silnik dla pakietów ● Parsowanie nagłówków ● Dystrybucja pakietów ● Zarządzanie buforami ● Load balancing ● Obliczanie sumy kontr. L4 podczas odbierania i wysyłania pakietów (offload) ● Scatter/gather pakietów będących łańcuchem buforów
  • 10. 1. ę 2. 3. Budowa stosu TCP/IP w kontekście użytej platformy 4. 5.
  • 11.
  • 13. Ważne biblioteki Netliba ● Zero Overhead Linux (ZOL) ○ jeden wątek 'przypięty' do jednego Tile'a ○ żadnych przerwań, przełączania kontekstu i syscall'i ● Nieznaczna modyfikacja biblioteki pthreads ○ Podanie numeru Tile'a na którym uruchamiamy wątek
  • 15. ● Jeden proces składa się z wielu wątków ● Każdy wątek działa na osobnym Tile'u ● Każdy Tile zajmuje się przetwarzaniem przychodzących i wychodzących pakietów dla danego połączenia TCP/IP (run-to-completion) ● Dane połączenie TCP/IP jest zawsze przetwarzane przez ten sam Tile (static flow affinity) dzięki algorytmowi hashowania połączeń (konfiguracja dla mPIPE) Takie założenia pozwalają na: ● eliminację locków dla struktur specyficznych dla danego połączenia TCP ● zmniejszenie ilości lokalnych PCB dla Tile'a a przez to zmniejszenie czasu spędzonego na ich wyszukiwaniu, tworzeniu itp. ● optymalizację dostępu do pamięci cache
  • 16. Jak zapewnić flow affinity ● Ingress ○ mPIPE oblicza hash na podstawie czwórki (adresu IP źródła, przeznaczenia oraz portów) dla każdego przychodzącego pakietu ○ Algorytm zwraca numer tile'a gdzie pakiet ma być przekazany ● Egress ○ Ten sam scenariusz obowiązuje podczas nawiązywania połączenia TCP na tile'u gdzie działa aplikacja ○ Aplikacja dostaje zestaw kolejek za pomocą których zawsze wysyła pakiety do tego samego CPU
  • 18. •Przetwarzanie połączenia TCP (kod z FreeBSD) •Przetwarzanie wiadomości w kolejce kontrolnej •Przetwarzanie pakietów w kolejkach Rx/Tx •Zarządzanie kolejką z buforami - alokacja/de-alokacja
  • 19. Kolejki między 'Network stack tile' a 'Application tile' ● Kolejka danych - Data Communication ○ Jedna dla każdego połączenia TCP ○ Zawierają pakiety z danymi ○ Żadnych locków po stronie 'Network stack tile' ○ Służy jako ‘socketbuf’ ekwiwalent dla stosu FreeBSD ● Kolejka z wiadomościami kontrolnymi ○ Jedna na każdego 'Network stack tile' ○ Zawiera wiadomości specyficzne dla połączenia TCP takie jak connect, listen, etc. ● Kolejki z buforami ○ Jedna na każdego 'Network stack tile' ○ Opisana w dalszej części prezentacji
  • 20. Alokacja/dealokacja Dodaj nowy bufor albo re-użyj Kolejka z pustymi buforami Kolejka z buforami do dealokacji Zdjęcie bufora Zwrócenie buforaDealokacja bufora
  • 21. Jak uniknąć kopiowania pakietów - zero-copy ● Ten sam pakiet musi być widziany przez hardware (mPIPE), CPU na którym działa stos i aplikacja ● Zastosowane rozwiązanie ○ Dedykowane strony pamięci dostępne bezpośrednio przez mPIPE ○ Zestaw buforów (prealokowanych z tych samych stron pamięci) dla każdego CPU gdzie działa stos (Network stack tile) ○ Każdy bufor musi być zwrócony do tego samego CPU z którego był wzięty (kolejka z buforami) ○ Tylko mPIPE oraz CPU gdzie działa stos może alokować/dealokować bufory
  • 22. ● Podobne do funkcji socket'owych: ○ listen(), bind(), connect(), send(), receive(), etc. ● Zawsze tryb non-blocking ● Sposób pracy bazuje na pollingu ● Dostarcza funkcje, które pozwalają manipulować buforami ○ Konieczne dla podejścia 'zero-copy’ ○ Pozwala na alokacje, rozszerzenie, zmniejszenie buforów itp.
  • 23. ● Inspirowane LwIP ● Implementacja w oparciu o raw/native API ● Kompatybilność z Unix socekt API ● API łatwiejsze do użycia dla piszącego aplikację ● Niższa wydajność w porównaniu z raw/native API ○ Konieczność kopiowania
  • 24. Jak pozbyć się locków ● Każdy tile ma przypisany tylko jeden wątek ● Każde połączenie TCP jest obsługiwane tylko przez jeden tile ● Tylko jeden otwarty socket na tile'u gdzie działa aplikacja ○ Kolejka z buforami ○ Kolejka z pakietami Rx/Tx ○ Kolejka z kontrolnymi wiadomościami
  • 25. 1. Wstęp 2. 3. Budowa stosu TCP/IP w kontekście użytej platformy 4. 5.
  • 26. Środowisko testowe ● ‘ab’ - liczba połączeń/s (nawiązywanie i kończenie) ● Infinicore – TCP/IP tester ● Iperf oraz prosta aplikacja ‘echo’ mierząca przepustowość ● Liczniki hardwarowe mierzące opóźnienia wprowadzone przez stos
  • 33. Liczba połączeń/s ● Najtrudniejsze do osiągnięcia ● Około 700k/s z 16 rdzeniami ○ Wynik ograniczony przez środowisko testowe