SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Wieloprocesorowa platforma x86 a wydajny routing sieciowy
Jakub Słociński
Agenda
• O mnie
• O serwerach
• Podłączenie do sieci
• vRouter made in OVH
• Tuning
• Podsumowanie
O mnie
R&D network engineer
vRouter tech leader
Architektura, technologie
Platformy serwerowe
src: www.intel.com
NUMA
• NUMA (Non-Uniform Memory Access)
– Pojedyncza przestrzeń adresowa widoczna dla wszystkich CPU
– Szybki dostęp do lokalnej pamięci
– Wolniejszy dostęp do zdalnej pamięci lub zdalnych portów I/O
– Lepsza skalowalność ze względu na ilość CPU
• Dlaczego architektura jest istotna w kontekście sieci?
src: www.supermicro.com
Konfiguracje NUMA
src: www.intel.com
Wydajność
- PCIe 3.0
– 8 GT/s = 7,877 Gbps (na każdej linii sygnałowej)
– 40 PCIe linii: 315,08 Gbps na każdy CPU
- Pamięć [1]
– 90 GB/s = 720 Gbps (DDR4, Haswell E5-2670v3)
– Nowe CPU: do ~2.7 Tbps (EPYC) lub ~3.3 Tbps (MCDRAM, Knights Landing) !
- QPI/UPI oraz HT3 [2]
– QPI: 9,6 GT/s * 16 bit = 153,6 Gbps (19,2 GB/s w każdym kier.)
• 2 linki QPI w Skylake E5 oraz 3 linki dla E7
– UPI: 10,4 GT/s (3 linki w Skylake-SP Platinum oraz części Gold)
– HT3.1: 6,4 GT/s * 16 bit = 102,4 Gbps (12,8 Gbps w każdym kier.)
[1] src: https://www.karlrupp.net/2016/07/knights-landing-vs-knights-corner-haswell-ivy-bridge-and-sandy-bridge-stream-
benchmark-results/ , www.amd.com
[2] src: www.hardwaresecrets.com, www.intel.com
Interfejsy sieciowe
src: www.wikipedia.org
Interfejsy sieciowe
Porty:
- 1x, 2x, 4x (uwaga na ilość linii PCIe)
- 1, 10, 25, 40, 50, 100, 200 GbE
Typy interfejsów:
- NIC: nawet do 200 Mpps! [1]
- FPGA
- SmartNIC (FPGA lub SoC) [2]
- 50 Gbps @1000Bpp
- 100 Gbps @500Bpp
[1] src: www.mellanox.com, Mellanox Connect-X6 dual 200GbE
[2] src: www.netronome.com, Agilio LX dual 40GbE oraz single 100GbE
Router – architektura
Data Plane
Linux kernel *
- Tx: 14,8 Mpps
- Rx: 12 Mpps (łatki eksperymentalne) (eBPF drop: 9 Mpps w labie)
- IPv4 fw: 1 - 2 Mpps (na pojedynczym core) 
Ominięcie stosu sieciowego (kernel bypass)
- Intel DPDK, netmap, PF_RING ZC, snabb, PFQ, …
Delegowanie funkcji sieciowych – SmartNIC
- Offload:
tx, rx, checksum, lso, tso, QinQ, vxlan, …
- Dodatkowo:
OpenVSwitch, eBPF, tunelowanie, LB, …
* src: Jesper Brouer @netdev1.1
wire-speed
84 B 1500 B
10 Gbps 14,88 Mpps 0,83 Mpps
40 Gbps 59,5 Mpps 3,33 Mpps
200 Gbps 297,6 Mpps 16,66 Mpps
OVH vRouter
Funkcje, oprogramowanie
Definicja funkcji routera
- BGP, VRF, DHCP relay, VRF
- Symetryczny ruch (inbound/outbound)
- Globalny system tarczy AntiDDoS
- Redundancja: VRRP, BGP
- Opcjonalnie: IPSec z VRF
Wybór software
- CP: Bird (multi-NUMA!), keepalived, ISC DHCP relay (własne patche), strongswan
- DP: DPDK z 6Wind (ponad 2 lata wspólnej pracy)
Inne zagadnienia: dostarczanie, monitoring, zarządzanie, …
Sprzęt
- Intel Server Board S2600 (dualsocket, 4x PCIe x16, 2133 MHz ECC
DDR4)
- CPU (Xeon E5)
– 2667v3 (8c @3,6GHz)
– 2687Wv4 (12c @3,5GHz)
– 2650v4 (12c @2,9GHz)
– …
- Mellanox Connect-X4 (40/100GbE)
- Intel X520 (10GbE)
- Dysk SSD (konfiguracja, OS, część logów)
CPU, pamięć, NUMA, …
Tunning wydajności
src: www.carztune.com
Pamiętajmy o podstawach
System / DPDK [1]
– Każdy slot DRAM – min. 4GB, maksymalna szybkość obsługiwana przez
płytę/CPU
– Ilość pamięci zależna od protokołów, interfejsów, tablic routingu czy L2
– Wybór wspieranej karty sieciowej, najlepiej Intel lub Mellanox
– Wyłącz oszczędzanie energii procesora oraz TurboBoost w BIOS (aby zapewnić
skalowanie wydajności relatywnie do użytych rdzeni)
– Sztywne określenie częstotliwości taktowania pamięci (max) zamiast auto
– Jeżeli nie potrzebujesz to wyłącz wirtualizację w BIOS
– Aktualizuj firmware BIOS/NIC!
[1] src: http://dpdk.org
CPU
- Alokacja rdzeni na potrzeby Interfejsów sieciowych w DPDK
: ${FP_MASK:=1-5,17-21}
: ${FP_PORTS:='0000:03:00.0 0000:03:00.1 0000:05:00.0 0000:05:00.1'}
: ${CORE_PORT_MAPPING:=c1=0/c2=0/c3=2/c4=2/c17=0/c18=0/c19=2/c20=2}
- Alokacja rdzeni na potrzeby aplikacji (Control Plane per numa)
# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 size: 64340 MB
node 0 free: 42428 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 size: 64495 MB
node 1 free: 61449 MB
node distances:
node 0 1
0: 10 21
1: 21 10
NUMA: narzędzia
lstopo
dmidecode
lspci –tv
lscpu
hwloc-info –v
numactl
/proc/cpuinfo
/sys/bus/pci/devices/*/numa_node
/sys/devices/system/node/node*
mlc (intel memory latency checker)
Więcej:
https://www.open-mpi.org/projects/hwloc/tutorials/20140422-ComPAS-hwloc-tutorial.pdf
https://www.dcl.hpi.uni-potsdam.de/teaching/numasem/slides/NUMASem_Topology_discovery.pdf
lstopo
NUMA
PBR w służbie NUMA
• BIRD routing daemon
• Tablice routingu: main / numa0 / numa1
• Funkcje: if_numa0() / if_numa1()
• Protokoły sterowania
- direct_numa0/1: trasy do linków połączonych bezpośrednio (per-numa)
- kernel_numa0/1/main: synchronizacha tablic Bird <> kernel
- pipe_numa0/1: kopiowanie z main => numaX jeżeli if_numaX()
- pipe_xnuma0/1: kopiowanie main => numa1/0 (cross numa) + tag (brak BGP)
- bgp_numa0/1_peer1/2: sesja BGP z numa0/1 do peer’a 1 oraz 2
NUMA: CP – DP
Numa0: Control Plane
Numa1: Data Plane
Zalety:
- Osobny CPU na potrzeby CP
- Wszystkie rdzenie CPU przypisane do Data Plane
- Unequal-CPU?
Wady:
- Cały ruch kontrolny (również ICMP!) przechodzi przez granicę NUMA
- Unequal-CPU nie (zawsze) działa (testowane na S2600CW) 
NUMA: inne
- Interfejsy typu multi-host
- NumaSCALE i podobne
- Multi-CPU w ramach
jednego węzła NUMA:
AMD EPYC i Infinite Fabric
AMD Epyc 7601:
32c/64t @2.2-3.2 GHz,
64MB L3 cache, 2666MHz RAM
~4*300Gbps Infinite fabric
128x linii PCIe
src: www.amd.com
src: www.mellanox.com
LAB tests: 8500 bpp 685bpp 85bpp
ports Gbps Mpps Gbps Mpps Gbps Mpps
2x 2x10GbE Intel 82599 30,0 0,4 28,0 5,0 10,0 15,0
2x 40GbE MCX4 80,0 1,3 78,0 14,0 14,5 22,0
2x 100GbE MCX4 172,0 2,5 138,0 25,0 30,0 40,0
Podsumowanie
- Świadomie wybierz sprzęt do potrzeb
- Pamiętaj że nie zawsze 2x40 = 80 [Gbps]
- Wybór i konfiguracja oprogramowania ma duże znaczenie
- NUMA pomaga skalować, ale nie licz na auto-konfigurację
- Brak standardu numeracji CPU/core/ht nie pomaga
- Pytaj producenta o techniczne szczegóły
- Miej dystans do narzędzi
- Bądź panem swojego sprzętu ☺
Dziękuję za uwagę
Pytania?
@KubaAtOvh
meetup.com/Wroclaw-Net-IP-Meetup (Net::IP #6: 16.11.2017)
ovh.pl/praca

Contenu connexe

Tendances

Tendances (19)

Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Zaliczenie Sem 2
Zaliczenie Sem 2Zaliczenie Sem 2
Zaliczenie Sem 2
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
Wprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbeddedWprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbedded
 
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
 
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
 
Usługi sieci internet cz iiii 2012
Usługi sieci internet cz iiii   2012Usługi sieci internet cz iiii   2012
Usługi sieci internet cz iiii 2012
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
PLNOG 6: Łukasz Jagiełło - Wdrożenie skalowalnego systemu plików GlusterFS w ...
 
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...
 
PLNOG15: BGP Route Reflector from practical point of view
PLNOG15: BGP Route Reflector from practical point of viewPLNOG15: BGP Route Reflector from practical point of view
PLNOG15: BGP Route Reflector from practical point of view
 
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
PLNOG 6: Łukasz Bromirski, Rafał Szarecki - Przełączniki i Routery - co jest ...
 

Similaire à PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing sieciowy

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
 
Bios, isa, pci, chipset
Bios, isa, pci, chipsetBios, isa, pci, chipset
Bios, isa, pci, chipset
Borek12345
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
arkulik
 

Similaire à PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing sieciowy (20)

Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.
 
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.
 
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.
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Magistrale
MagistraleMagistrale
Magistrale
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
DTrace
DTraceDTrace
DTrace
 
Procesory
ProcesoryProcesory
Procesory
 
Budowa Komputera
Budowa KomputeraBudowa Komputera
Budowa Komputera
 
Magistrale 3TIR
Magistrale 3TIRMagistrale 3TIR
Magistrale 3TIR
 
Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014Skalowanie PostgreSQL @ DBConf.PL 2014
Skalowanie PostgreSQL @ DBConf.PL 2014
 
Bios, isa, pci, chipset
Bios, isa, pci, chipsetBios, isa, pci, chipset
Bios, isa, pci, chipset
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
Prezentacja
PrezentacjaPrezentacja
Prezentacja
 
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
PLNOG 9: Łukasz Bromirski, Rafał Szarecki - MPLS VPN - Architektura i przeglą...
 
His
His His
His
 
Projekcik Routery2
Projekcik Routery2Projekcik Routery2
Projekcik Routery2
 
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
PLNOG 13: Piotr Okupski: Implementation of Wanguard software as a protection ...
 
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiejŁukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
Łukasz Bromirski - Najlepsze praktyki zabezpieczania sieci klasy operatorskiej
 

PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing sieciowy

  • 1. Wieloprocesorowa platforma x86 a wydajny routing sieciowy Jakub Słociński
  • 2. Agenda • O mnie • O serwerach • Podłączenie do sieci • vRouter made in OVH • Tuning • Podsumowanie
  • 3. O mnie R&D network engineer vRouter tech leader
  • 4.
  • 6.
  • 8. NUMA • NUMA (Non-Uniform Memory Access) – Pojedyncza przestrzeń adresowa widoczna dla wszystkich CPU – Szybki dostęp do lokalnej pamięci – Wolniejszy dostęp do zdalnej pamięci lub zdalnych portów I/O – Lepsza skalowalność ze względu na ilość CPU • Dlaczego architektura jest istotna w kontekście sieci?
  • 11. Wydajność - PCIe 3.0 – 8 GT/s = 7,877 Gbps (na każdej linii sygnałowej) – 40 PCIe linii: 315,08 Gbps na każdy CPU - Pamięć [1] – 90 GB/s = 720 Gbps (DDR4, Haswell E5-2670v3) – Nowe CPU: do ~2.7 Tbps (EPYC) lub ~3.3 Tbps (MCDRAM, Knights Landing) ! - QPI/UPI oraz HT3 [2] – QPI: 9,6 GT/s * 16 bit = 153,6 Gbps (19,2 GB/s w każdym kier.) • 2 linki QPI w Skylake E5 oraz 3 linki dla E7 – UPI: 10,4 GT/s (3 linki w Skylake-SP Platinum oraz części Gold) – HT3.1: 6,4 GT/s * 16 bit = 102,4 Gbps (12,8 Gbps w każdym kier.) [1] src: https://www.karlrupp.net/2016/07/knights-landing-vs-knights-corner-haswell-ivy-bridge-and-sandy-bridge-stream- benchmark-results/ , www.amd.com [2] src: www.hardwaresecrets.com, www.intel.com
  • 13. Interfejsy sieciowe Porty: - 1x, 2x, 4x (uwaga na ilość linii PCIe) - 1, 10, 25, 40, 50, 100, 200 GbE Typy interfejsów: - NIC: nawet do 200 Mpps! [1] - FPGA - SmartNIC (FPGA lub SoC) [2] - 50 Gbps @1000Bpp - 100 Gbps @500Bpp [1] src: www.mellanox.com, Mellanox Connect-X6 dual 200GbE [2] src: www.netronome.com, Agilio LX dual 40GbE oraz single 100GbE
  • 15. Data Plane Linux kernel * - Tx: 14,8 Mpps - Rx: 12 Mpps (łatki eksperymentalne) (eBPF drop: 9 Mpps w labie) - IPv4 fw: 1 - 2 Mpps (na pojedynczym core)  Ominięcie stosu sieciowego (kernel bypass) - Intel DPDK, netmap, PF_RING ZC, snabb, PFQ, … Delegowanie funkcji sieciowych – SmartNIC - Offload: tx, rx, checksum, lso, tso, QinQ, vxlan, … - Dodatkowo: OpenVSwitch, eBPF, tunelowanie, LB, … * src: Jesper Brouer @netdev1.1 wire-speed 84 B 1500 B 10 Gbps 14,88 Mpps 0,83 Mpps 40 Gbps 59,5 Mpps 3,33 Mpps 200 Gbps 297,6 Mpps 16,66 Mpps
  • 16.
  • 18. Funkcje, oprogramowanie Definicja funkcji routera - BGP, VRF, DHCP relay, VRF - Symetryczny ruch (inbound/outbound) - Globalny system tarczy AntiDDoS - Redundancja: VRRP, BGP - Opcjonalnie: IPSec z VRF Wybór software - CP: Bird (multi-NUMA!), keepalived, ISC DHCP relay (własne patche), strongswan - DP: DPDK z 6Wind (ponad 2 lata wspólnej pracy) Inne zagadnienia: dostarczanie, monitoring, zarządzanie, …
  • 19. Sprzęt - Intel Server Board S2600 (dualsocket, 4x PCIe x16, 2133 MHz ECC DDR4) - CPU (Xeon E5) – 2667v3 (8c @3,6GHz) – 2687Wv4 (12c @3,5GHz) – 2650v4 (12c @2,9GHz) – … - Mellanox Connect-X4 (40/100GbE) - Intel X520 (10GbE) - Dysk SSD (konfiguracja, OS, część logów)
  • 20. CPU, pamięć, NUMA, … Tunning wydajności src: www.carztune.com
  • 21. Pamiętajmy o podstawach System / DPDK [1] – Każdy slot DRAM – min. 4GB, maksymalna szybkość obsługiwana przez płytę/CPU – Ilość pamięci zależna od protokołów, interfejsów, tablic routingu czy L2 – Wybór wspieranej karty sieciowej, najlepiej Intel lub Mellanox – Wyłącz oszczędzanie energii procesora oraz TurboBoost w BIOS (aby zapewnić skalowanie wydajności relatywnie do użytych rdzeni) – Sztywne określenie częstotliwości taktowania pamięci (max) zamiast auto – Jeżeli nie potrzebujesz to wyłącz wirtualizację w BIOS – Aktualizuj firmware BIOS/NIC! [1] src: http://dpdk.org
  • 22. CPU - Alokacja rdzeni na potrzeby Interfejsów sieciowych w DPDK : ${FP_MASK:=1-5,17-21} : ${FP_PORTS:='0000:03:00.0 0000:03:00.1 0000:05:00.0 0000:05:00.1'} : ${CORE_PORT_MAPPING:=c1=0/c2=0/c3=2/c4=2/c17=0/c18=0/c19=2/c20=2} - Alokacja rdzeni na potrzeby aplikacji (Control Plane per numa) # numactl --hardware available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23 node 0 size: 64340 MB node 0 free: 42428 MB node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 node 1 size: 64495 MB node 1 free: 61449 MB node distances: node 0 1 0: 10 21 1: 21 10
  • 23. NUMA: narzędzia lstopo dmidecode lspci –tv lscpu hwloc-info –v numactl /proc/cpuinfo /sys/bus/pci/devices/*/numa_node /sys/devices/system/node/node* mlc (intel memory latency checker) Więcej: https://www.open-mpi.org/projects/hwloc/tutorials/20140422-ComPAS-hwloc-tutorial.pdf https://www.dcl.hpi.uni-potsdam.de/teaching/numasem/slides/NUMASem_Topology_discovery.pdf lstopo
  • 24. NUMA
  • 25. PBR w służbie NUMA • BIRD routing daemon • Tablice routingu: main / numa0 / numa1 • Funkcje: if_numa0() / if_numa1() • Protokoły sterowania - direct_numa0/1: trasy do linków połączonych bezpośrednio (per-numa) - kernel_numa0/1/main: synchronizacha tablic Bird <> kernel - pipe_numa0/1: kopiowanie z main => numaX jeżeli if_numaX() - pipe_xnuma0/1: kopiowanie main => numa1/0 (cross numa) + tag (brak BGP) - bgp_numa0/1_peer1/2: sesja BGP z numa0/1 do peer’a 1 oraz 2
  • 26.
  • 27. NUMA: CP – DP Numa0: Control Plane Numa1: Data Plane Zalety: - Osobny CPU na potrzeby CP - Wszystkie rdzenie CPU przypisane do Data Plane - Unequal-CPU? Wady: - Cały ruch kontrolny (również ICMP!) przechodzi przez granicę NUMA - Unequal-CPU nie (zawsze) działa (testowane na S2600CW) 
  • 28. NUMA: inne - Interfejsy typu multi-host - NumaSCALE i podobne - Multi-CPU w ramach jednego węzła NUMA: AMD EPYC i Infinite Fabric AMD Epyc 7601: 32c/64t @2.2-3.2 GHz, 64MB L3 cache, 2666MHz RAM ~4*300Gbps Infinite fabric 128x linii PCIe src: www.amd.com src: www.mellanox.com
  • 29. LAB tests: 8500 bpp 685bpp 85bpp ports Gbps Mpps Gbps Mpps Gbps Mpps 2x 2x10GbE Intel 82599 30,0 0,4 28,0 5,0 10,0 15,0 2x 40GbE MCX4 80,0 1,3 78,0 14,0 14,5 22,0 2x 100GbE MCX4 172,0 2,5 138,0 25,0 30,0 40,0
  • 30. Podsumowanie - Świadomie wybierz sprzęt do potrzeb - Pamiętaj że nie zawsze 2x40 = 80 [Gbps] - Wybór i konfiguracja oprogramowania ma duże znaczenie - NUMA pomaga skalować, ale nie licz na auto-konfigurację - Brak standardu numeracji CPU/core/ht nie pomaga - Pytaj producenta o techniczne szczegóły - Miej dystans do narzędzi - Bądź panem swojego sprzętu ☺