SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Jesper Dangaard Brouer
Kernel Developer
Red Hat
Kernel Recipes Conf
Paris, Sep 2019
XDP closer integration with
network stack
XDP closer integration with network stack
1
Overview: What will you learn?
Audience at Kernel Recipes: Other kernel developers
But for different kernel sub-systems
Learn about: kernel network data structures
Hopefully you already heard about XDP (eXpress Data Path) ? ? ?
I’ll explain why network sub-system created this…
Future crazy ideas to extend XDP
(hopefully) in a way that cooperate more with kernel netstack
Give you an easy way to try out XDP and BPF on your laptop
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
2
Why was XDP needed?
This was about the kernel networking stack staying relevant
For emerging use-cases and areas
Linux networking stack assumes layer L4-L7 delivery
Obviously slow when compared to L2-L3 kernel-bypass solutions
XDP operate at layers L2-L3
Shows same performance as these L2-L3 kernel-bypass solutions
The networking OSI layer model:
L2=Ethernet
L3=IPv4/IPv6
L4=TCP/UDP
L7=Applications
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
3
What is XDP?
What kind of monster did we create with XDP?!?
XDP (eXpress Data Path) is a Linux in-kernel fast-path
New programmable layer in-front of traditional network stack
Read, modify, drop, redirect or pass
For L2-L3 use-cases: seeing x10 performance improvements!
Can accelerate in-kernel L2-L3 use-cases (e.g. forwarding)
What is AF_XDP? (the Address Family XDP socket)
Hybrid kernel-bypass facility
Delivers raw L2 frames into userspace (in SPSC queue)
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
4
AF_XDP: Used for kernel-bypass?!?
Did you really say, this can be used for bypassing the Linux kernel netstack ?
Sure, build in freedom for kernel-bypass via AF_XDP
DPDK already have a Poll-Mode driver for AF_XDP
Why is this better, than other (bypass) solutions?
Flexible sharing of NIC resources, NIC still avail to netstack
XDP/eBPF prog filters packets using XDP_REDIRECT into AF_XDP socket
Move selective frames out of kernel, no need to reinject
Leverages existing kernel infrastructure, eco-system and market position
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
5
How can XDP be (ab)used?
Used or abused?
Freedom re-implement everything (when bypassing the kernel)
Or freedom to shoot yourself in the foot?
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
6
Simple view on how XDP gains speed
XDP speed gains comes from
Avoiding memory allocations
no SKB allocations and no-init (memset zero 4 cache-lines)
Bulk processing of frames
Very early access to frame (in driver code after DMA sync)
Ability to skip (large parts) of kernel code
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
7
Skipping code: Efficient optimization
Skipping code: Imply skipping features provided by network stack
Gave users freedom to e.g. skip netfilter or route-lookup
But users have to re-implement features they actually needed
Sometimes cumbersome via BPF-maps
Avoid re-implement features:
Evolve XDP via BPF-helpers
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
8
Evolving XDP via BPF-helpers
We should encourage adding helpers instead of duplicating data in BPF maps
Think of XDP as a software offload layer for the kernel netstack
Simply setup and use the Linux netstack, but accelerate parts of it with XDP
IP routing good example: Access routing table from XDP via BPF helpers (v4.18)
Let Linux handle routing (daemons) and neighbour/ARP lookups
Talk at LPC-2018 (David Ahern):
Obvious next target: Bridge lookup helper
Like IP routing: transparent XDP acceleration of bridge forwarding
Fallback for ARP lookups, flooding etc.
Huge potential performance boost for Linux bridge use cases!
Leveraging Kernel Tables with XDP
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
9
Understand networking packet data
structures
To understand next slides and (XDP) kernel networking
Need to know difference between some struct’s
Used for describing and pointing to actual packet data
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
10
Fundamental struct’s
The struct’s describing data-frame at different levels
sk_buff : Good old SKB, allocated from SLAB/kmem_cache (4 cachelines)
xdp_buff : Used by BPF XDP-prog, allocated on call stack
xdp_frame: xdp_buff info state compressed, used by XDP-redirect
No allocation, placed in top of data-frame (currently 32 bytes)
HW specific “descriptor” with info and pointer to (DMA) data buffer
contains HW-offloads (see later) that driver transfers to SKB
Exotic details
skb_shared_info : placed inside data-frame (at end), e.g. GRO multi-frame
xdp_rxq_info : Static per RX queue info
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
11
Evolving XDP: Future ideas
Warning: Next slides about crazy future ideas
This stuff might never get implemented!
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
12
Move SKB allocations out of NIC drivers
Goal: Simplify driver, via creating SKB inside network-core code
Happens today via xdp_frame in both veth and cpumap
(Slight hickup: Max frame size unknown, thus lie about skb->truesize)
Issue: SKB’s created this way are lacking HW-offloads like:
HW checksum info (for skb->ip_summed + skb->csum)
HW RX hash (skb_set_hash(hash, type))
(these are almost always needed… tempted to extend xdp_frame)
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
13
Other HW-offloads
Other existing offloads, used by SKBs, but not always enabled
VLAN (__vlan_hwaccel_put_tag())
RX timestamp
HW skb_hwtstamps() (stored in skb_shared_info)
Earlier XDP software timestamp (for skb->tstamp)
RX mark (skb->mark supported by mlx5)
Other potential offloads, which hardware can do (but not used by SKB):
Unique u64 flow identifier key (mlx5 HW)
Higher-level protocol header offsets
RSS-hash can deduce e.g. IPv4/TCP (as frag not marked as TCP)
But NIC HW have full parse info avail
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
14
Blocked by missing HW-offloads
SKB alloc outside NIC driver, blocked by missing HW-offloads.
The GOAL is to come-up with a Generic Offload Abstraction Layer…
Generic and dynamic way to transfer HW-offload info
Only enable info when needed
Both made available for SKB creation and XDP programs
The big questions are:
Where to store this information?
How to make it dynamic?
What else are we missing?
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
15
Storing generic offload-info
Where to store generic offload-info?
To avoid allocation use packet/frame data area
(1) Extend xdp_frame: imply top of frame head-room
(2) Use XDP meta-data area: located in-front of payload start
(3) Use tail-room (frame-end): Already used for skb_shared_info GRO
No choice done yet…
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
16
Dynamic generic offload-info
Next challenge: How to make this dynamic?
Each driver have own format for HW descriptor
Hopefully BTF can help here?
Drivers could export BTF description of offload-info area
BPF prog wanting to use area, must have matching BTF
But how can kernel-code use BTF desc and transfer to SKB fields?
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
17
Dependency: Handling multi-frame packets
SKB alloc outside NIC driver, ALSO need XDP multi-frame handling
Multi-frame packets have several use-cases
Jumbo-frames
TSO (TCP Segmentation Offload)
Header split, (L4) headers in first segment, (L7) payload in next
XDP need answer/solution for multi-frame packets
To fully move SKB alloc+setup out of NIC drivers
(SKB use skb_shared_info area to store info on multi-frames)
Design idea/proposal in XDP-project: xdp-multi-buffer01-design.org
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
18
Fun with xdp_frame before SKB alloc
After SKB alloc gets moved out of drivers
What can we now create of crazy stuff?!?
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
19
General idea for xdp_frame handling
Idea: Use xdp_frame for some fast-paths
E.g. forwarding could be accelerated (non localhost deliver)
Fall-back: Create SKB for slow(er) path
Lots of work: adjust functions to work without SKBs
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
20
New (L2) layer with xdp_frame?
Could update netstack (L2) RX-handler to handle xdp_frame packets?
Bridging
Macvlan, ipvlan, macvtap
Bond + Team
OpenVSwitch (OVS)
Likely: Need new L2 RX-handler layer (?)
To support kernels evolutionary development model
(cannot update every user at once, plus out-of-tree users)
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
21
Transport layer XDP
XDP operate at L2 (Eth) or L3 (IP)
Tom Herbert (coined XDP) proposed = L4 (TCP/UDP)
To gain performance it need to operate on xdp_frame’s
For many fast-path TCP/UDP use-cases, SKB is pure overhead
Much simpler xdp_frame will be sufficient
Let special cases fall-through, alloc+init full SKB
Transport-layer XDP
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
22
More practical
People complain XDP and eBPF is hard to use!?
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
23
XDP-tutorial
Ready to use: XDP Hands-On Tutorial
Basically a full build and testlab environment
Simply git clone and run make:
Testlab works on your (Linux) laptop
via creating veth device and network namespace
https://github.com/xdp-project/xdp-tutorial
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
24
The missing transmit side
XDP is currently only an RX-hook
We want to change that! - but it’s (also) a big task
Tell people to use TC-BPF egress hook, we can do better…
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
25
The missing XDP transmit hook
A real XDP TX hook is needed, for several reasons
Creates symmetry (RX and TX hooks)
XDP-redirect need push-back/flow-control mechanism
Too easily overflow (HW) TX-queues (as qdisc-layer bypassed)
Be careful: don’t re-implement full qdisc layer
Should also run after normal qdisc layer TX-queues
Reason: Like BQL, can choose when qdisc is activated
Allows to implement BQL (Byte-Queue-Limit) as eBPF
Driver TX-q based on xdp_frame, allow SKB to be released earlier
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
26
End: Summary
Kernel now have eBPF programmable network fast-path
that can now compete with kernel-bypass speeds
Not finished: Still lots of development work ahead
Need to cooperate more with kernel netstack
Create BPF-helpers to access kernel tables
How far can we take this: SKBs outside drivers? realistic goal?
XDP-project coordination:
https://github.com/xdp-project/xdp-project
XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org
27

Weitere ähnliche Inhalte

Was ist angesagt?

BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)shimosawa
 
Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Ray Jenkins
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...Adrian Huang
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
 
ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!Affan Syed
 
Decompressed vmlinux: linux kernel initialization from page table configurati...
Decompressed vmlinux: linux kernel initialization from page table configurati...Decompressed vmlinux: linux kernel initialization from page table configurati...
Decompressed vmlinux: linux kernel initialization from page table configurati...Adrian Huang
 
semaphore & mutex.pdf
semaphore & mutex.pdfsemaphore & mutex.pdf
semaphore & mutex.pdfAdrian Huang
 
Reverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux KernelReverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux KernelAdrian Huang
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabMichelle Holley
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux NetworkingPLUMgrid
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux KernelAdrian Huang
 
Debug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpointsDebug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpointsVipin Varghese
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPThomas Graf
 
UM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareUM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareBrendan Gregg
 

Was ist angesagt? (20)

BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!
 
Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Decompressed vmlinux: linux kernel initialization from page table configurati...
Decompressed vmlinux: linux kernel initialization from page table configurati...Decompressed vmlinux: linux kernel initialization from page table configurati...
Decompressed vmlinux: linux kernel initialization from page table configurati...
 
semaphore & mutex.pdf
semaphore & mutex.pdfsemaphore & mutex.pdf
semaphore & mutex.pdf
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
Reverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux KernelReverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux Kernel
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux Kernel
 
Debug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpointsDebug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpoints
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
 
UM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareUM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of Software
 

Ähnlich wie Kernel Recipes 2019 - XDP closer integration with network stack

Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...
Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...
Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...Anne Nicolas
 
Improving Apache Spark by Taking Advantage of Disaggregated Architecture
 Improving Apache Spark by Taking Advantage of Disaggregated Architecture Improving Apache Spark by Taking Advantage of Disaggregated Architecture
Improving Apache Spark by Taking Advantage of Disaggregated ArchitectureDatabricks
 
Accelerating apache spark with rdma
Accelerating apache spark with rdmaAccelerating apache spark with rdma
Accelerating apache spark with rdmainside-BigData.com
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersDatabricks
 
What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014
What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014
What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014Philippe Fierens
 
Apache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community UpdateApache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community UpdateDataWorks Summit
 
Spark Study Notes
Spark Study NotesSpark Study Notes
Spark Study NotesRichard Kuo
 
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...Igalia
 
Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Uwe Printz
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDKKernel TLV
 
RAPIDS: GPU-Accelerated ETL and Feature Engineering
RAPIDS: GPU-Accelerated ETL and Feature EngineeringRAPIDS: GPU-Accelerated ETL and Feature Engineering
RAPIDS: GPU-Accelerated ETL and Feature EngineeringKeith Kraus
 
Hug syncsort etl hadoop big data
Hug syncsort etl hadoop big dataHug syncsort etl hadoop big data
Hug syncsort etl hadoop big dataStéphane Heckel
 
Design installation-commissioning-red raider-cluster-ttu
Design installation-commissioning-red raider-cluster-ttuDesign installation-commissioning-red raider-cluster-ttu
Design installation-commissioning-red raider-cluster-ttuAlan Sill
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Igalia
 
The Apache Spark config behind the indsutry's first 100TB Spark SQL benchmark
The Apache Spark config behind the indsutry's first 100TB Spark SQL benchmarkThe Apache Spark config behind the indsutry's first 100TB Spark SQL benchmark
The Apache Spark config behind the indsutry's first 100TB Spark SQL benchmarkLenovo Data Center
 
Fast Data Analytics with Spark and Python
Fast Data Analytics with Spark and PythonFast Data Analytics with Spark and Python
Fast Data Analytics with Spark and PythonBenjamin Bengfort
 
Apache spark sneha challa- google pittsburgh-aug 25th
Apache spark  sneha challa- google pittsburgh-aug 25thApache spark  sneha challa- google pittsburgh-aug 25th
Apache spark sneha challa- google pittsburgh-aug 25thSneha Challa
 
Ceph Day Melbourne - Walk Through a Software Defined Everything PoC
Ceph Day Melbourne - Walk Through a Software Defined Everything PoCCeph Day Melbourne - Walk Through a Software Defined Everything PoC
Ceph Day Melbourne - Walk Through a Software Defined Everything PoCCeph Community
 
Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...
Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...
Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...Databricks
 

Ähnlich wie Kernel Recipes 2019 - XDP closer integration with network stack (20)

Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...
Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...
Kernel Recipes 2018 - XDP: a new fast and programmable network layer - Jesper...
 
Improving Apache Spark by Taking Advantage of Disaggregated Architecture
 Improving Apache Spark by Taking Advantage of Disaggregated Architecture Improving Apache Spark by Taking Advantage of Disaggregated Architecture
Improving Apache Spark by Taking Advantage of Disaggregated Architecture
 
Accelerating apache spark with rdma
Accelerating apache spark with rdmaAccelerating apache spark with rdma
Accelerating apache spark with rdma
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production users
 
What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014
What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014
What we unlearned_and_learned_by_moving_from_m9000_to_ssc_ukoug2014
 
Apache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community UpdateApache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community Update
 
Spark Study Notes
Spark Study NotesSpark Study Notes
Spark Study Notes
 
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
 
Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
 
RAPIDS: GPU-Accelerated ETL and Feature Engineering
RAPIDS: GPU-Accelerated ETL and Feature EngineeringRAPIDS: GPU-Accelerated ETL and Feature Engineering
RAPIDS: GPU-Accelerated ETL and Feature Engineering
 
Hug syncsort etl hadoop big data
Hug syncsort etl hadoop big dataHug syncsort etl hadoop big data
Hug syncsort etl hadoop big data
 
Design installation-commissioning-red raider-cluster-ttu
Design installation-commissioning-red raider-cluster-ttuDesign installation-commissioning-red raider-cluster-ttu
Design installation-commissioning-red raider-cluster-ttu
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
 
The Apache Spark config behind the indsutry's first 100TB Spark SQL benchmark
The Apache Spark config behind the indsutry's first 100TB Spark SQL benchmarkThe Apache Spark config behind the indsutry's first 100TB Spark SQL benchmark
The Apache Spark config behind the indsutry's first 100TB Spark SQL benchmark
 
optimizing_ceph_flash
optimizing_ceph_flashoptimizing_ceph_flash
optimizing_ceph_flash
 
Fast Data Analytics with Spark and Python
Fast Data Analytics with Spark and PythonFast Data Analytics with Spark and Python
Fast Data Analytics with Spark and Python
 
Apache spark sneha challa- google pittsburgh-aug 25th
Apache spark  sneha challa- google pittsburgh-aug 25thApache spark  sneha challa- google pittsburgh-aug 25th
Apache spark sneha challa- google pittsburgh-aug 25th
 
Ceph Day Melbourne - Walk Through a Software Defined Everything PoC
Ceph Day Melbourne - Walk Through a Software Defined Everything PoCCeph Day Melbourne - Walk Through a Software Defined Everything PoC
Ceph Day Melbourne - Walk Through a Software Defined Everything PoC
 
Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...
Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...
Running Apache Spark on a High-Performance Cluster Using RDMA and NVMe Flash ...
 

Mehr von Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 

Mehr von Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Kürzlich hochgeladen

WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Kürzlich hochgeladen (20)

WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Kernel Recipes 2019 - XDP closer integration with network stack

  • 1. Jesper Dangaard Brouer Kernel Developer Red Hat Kernel Recipes Conf Paris, Sep 2019 XDP closer integration with network stack XDP closer integration with network stack 1
  • 2. Overview: What will you learn? Audience at Kernel Recipes: Other kernel developers But for different kernel sub-systems Learn about: kernel network data structures Hopefully you already heard about XDP (eXpress Data Path) ? ? ? I’ll explain why network sub-system created this… Future crazy ideas to extend XDP (hopefully) in a way that cooperate more with kernel netstack Give you an easy way to try out XDP and BPF on your laptop XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 2
  • 3. Why was XDP needed? This was about the kernel networking stack staying relevant For emerging use-cases and areas Linux networking stack assumes layer L4-L7 delivery Obviously slow when compared to L2-L3 kernel-bypass solutions XDP operate at layers L2-L3 Shows same performance as these L2-L3 kernel-bypass solutions The networking OSI layer model: L2=Ethernet L3=IPv4/IPv6 L4=TCP/UDP L7=Applications XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 3
  • 4. What is XDP? What kind of monster did we create with XDP?!? XDP (eXpress Data Path) is a Linux in-kernel fast-path New programmable layer in-front of traditional network stack Read, modify, drop, redirect or pass For L2-L3 use-cases: seeing x10 performance improvements! Can accelerate in-kernel L2-L3 use-cases (e.g. forwarding) What is AF_XDP? (the Address Family XDP socket) Hybrid kernel-bypass facility Delivers raw L2 frames into userspace (in SPSC queue) XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 4
  • 5. AF_XDP: Used for kernel-bypass?!? Did you really say, this can be used for bypassing the Linux kernel netstack ? Sure, build in freedom for kernel-bypass via AF_XDP DPDK already have a Poll-Mode driver for AF_XDP Why is this better, than other (bypass) solutions? Flexible sharing of NIC resources, NIC still avail to netstack XDP/eBPF prog filters packets using XDP_REDIRECT into AF_XDP socket Move selective frames out of kernel, no need to reinject Leverages existing kernel infrastructure, eco-system and market position XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 5
  • 6. How can XDP be (ab)used? Used or abused? Freedom re-implement everything (when bypassing the kernel) Or freedom to shoot yourself in the foot? XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 6
  • 7. Simple view on how XDP gains speed XDP speed gains comes from Avoiding memory allocations no SKB allocations and no-init (memset zero 4 cache-lines) Bulk processing of frames Very early access to frame (in driver code after DMA sync) Ability to skip (large parts) of kernel code XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 7
  • 8. Skipping code: Efficient optimization Skipping code: Imply skipping features provided by network stack Gave users freedom to e.g. skip netfilter or route-lookup But users have to re-implement features they actually needed Sometimes cumbersome via BPF-maps Avoid re-implement features: Evolve XDP via BPF-helpers XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 8
  • 9. Evolving XDP via BPF-helpers We should encourage adding helpers instead of duplicating data in BPF maps Think of XDP as a software offload layer for the kernel netstack Simply setup and use the Linux netstack, but accelerate parts of it with XDP IP routing good example: Access routing table from XDP via BPF helpers (v4.18) Let Linux handle routing (daemons) and neighbour/ARP lookups Talk at LPC-2018 (David Ahern): Obvious next target: Bridge lookup helper Like IP routing: transparent XDP acceleration of bridge forwarding Fallback for ARP lookups, flooding etc. Huge potential performance boost for Linux bridge use cases! Leveraging Kernel Tables with XDP XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 9
  • 10. Understand networking packet data structures To understand next slides and (XDP) kernel networking Need to know difference between some struct’s Used for describing and pointing to actual packet data XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 10
  • 11. Fundamental struct’s The struct’s describing data-frame at different levels sk_buff : Good old SKB, allocated from SLAB/kmem_cache (4 cachelines) xdp_buff : Used by BPF XDP-prog, allocated on call stack xdp_frame: xdp_buff info state compressed, used by XDP-redirect No allocation, placed in top of data-frame (currently 32 bytes) HW specific “descriptor” with info and pointer to (DMA) data buffer contains HW-offloads (see later) that driver transfers to SKB Exotic details skb_shared_info : placed inside data-frame (at end), e.g. GRO multi-frame xdp_rxq_info : Static per RX queue info XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 11
  • 12. Evolving XDP: Future ideas Warning: Next slides about crazy future ideas This stuff might never get implemented! XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 12
  • 13. Move SKB allocations out of NIC drivers Goal: Simplify driver, via creating SKB inside network-core code Happens today via xdp_frame in both veth and cpumap (Slight hickup: Max frame size unknown, thus lie about skb->truesize) Issue: SKB’s created this way are lacking HW-offloads like: HW checksum info (for skb->ip_summed + skb->csum) HW RX hash (skb_set_hash(hash, type)) (these are almost always needed… tempted to extend xdp_frame) XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 13
  • 14. Other HW-offloads Other existing offloads, used by SKBs, but not always enabled VLAN (__vlan_hwaccel_put_tag()) RX timestamp HW skb_hwtstamps() (stored in skb_shared_info) Earlier XDP software timestamp (for skb->tstamp) RX mark (skb->mark supported by mlx5) Other potential offloads, which hardware can do (but not used by SKB): Unique u64 flow identifier key (mlx5 HW) Higher-level protocol header offsets RSS-hash can deduce e.g. IPv4/TCP (as frag not marked as TCP) But NIC HW have full parse info avail XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 14
  • 15. Blocked by missing HW-offloads SKB alloc outside NIC driver, blocked by missing HW-offloads. The GOAL is to come-up with a Generic Offload Abstraction Layer… Generic and dynamic way to transfer HW-offload info Only enable info when needed Both made available for SKB creation and XDP programs The big questions are: Where to store this information? How to make it dynamic? What else are we missing? XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 15
  • 16. Storing generic offload-info Where to store generic offload-info? To avoid allocation use packet/frame data area (1) Extend xdp_frame: imply top of frame head-room (2) Use XDP meta-data area: located in-front of payload start (3) Use tail-room (frame-end): Already used for skb_shared_info GRO No choice done yet… XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 16
  • 17. Dynamic generic offload-info Next challenge: How to make this dynamic? Each driver have own format for HW descriptor Hopefully BTF can help here? Drivers could export BTF description of offload-info area BPF prog wanting to use area, must have matching BTF But how can kernel-code use BTF desc and transfer to SKB fields? XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 17
  • 18. Dependency: Handling multi-frame packets SKB alloc outside NIC driver, ALSO need XDP multi-frame handling Multi-frame packets have several use-cases Jumbo-frames TSO (TCP Segmentation Offload) Header split, (L4) headers in first segment, (L7) payload in next XDP need answer/solution for multi-frame packets To fully move SKB alloc+setup out of NIC drivers (SKB use skb_shared_info area to store info on multi-frames) Design idea/proposal in XDP-project: xdp-multi-buffer01-design.org XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 18
  • 19. Fun with xdp_frame before SKB alloc After SKB alloc gets moved out of drivers What can we now create of crazy stuff?!? XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 19
  • 20. General idea for xdp_frame handling Idea: Use xdp_frame for some fast-paths E.g. forwarding could be accelerated (non localhost deliver) Fall-back: Create SKB for slow(er) path Lots of work: adjust functions to work without SKBs XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 20
  • 21. New (L2) layer with xdp_frame? Could update netstack (L2) RX-handler to handle xdp_frame packets? Bridging Macvlan, ipvlan, macvtap Bond + Team OpenVSwitch (OVS) Likely: Need new L2 RX-handler layer (?) To support kernels evolutionary development model (cannot update every user at once, plus out-of-tree users) XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 21
  • 22. Transport layer XDP XDP operate at L2 (Eth) or L3 (IP) Tom Herbert (coined XDP) proposed = L4 (TCP/UDP) To gain performance it need to operate on xdp_frame’s For many fast-path TCP/UDP use-cases, SKB is pure overhead Much simpler xdp_frame will be sufficient Let special cases fall-through, alloc+init full SKB Transport-layer XDP XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 22
  • 23. More practical People complain XDP and eBPF is hard to use!? XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 23
  • 24. XDP-tutorial Ready to use: XDP Hands-On Tutorial Basically a full build and testlab environment Simply git clone and run make: Testlab works on your (Linux) laptop via creating veth device and network namespace https://github.com/xdp-project/xdp-tutorial XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 24
  • 25. The missing transmit side XDP is currently only an RX-hook We want to change that! - but it’s (also) a big task Tell people to use TC-BPF egress hook, we can do better… XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 25
  • 26. The missing XDP transmit hook A real XDP TX hook is needed, for several reasons Creates symmetry (RX and TX hooks) XDP-redirect need push-back/flow-control mechanism Too easily overflow (HW) TX-queues (as qdisc-layer bypassed) Be careful: don’t re-implement full qdisc layer Should also run after normal qdisc layer TX-queues Reason: Like BQL, can choose when qdisc is activated Allows to implement BQL (Byte-Queue-Limit) as eBPF Driver TX-q based on xdp_frame, allow SKB to be released earlier XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 26
  • 27. End: Summary Kernel now have eBPF programmable network fast-path that can now compete with kernel-bypass speeds Not finished: Still lots of development work ahead Need to cooperate more with kernel netstack Create BPF-helpers to access kernel tables How far can we take this: SKBs outside drivers? realistic goal? XDP-project coordination: https://github.com/xdp-project/xdp-project XDP closer integration with network stack - Jesper Dangaard Brouer < >hawk@kernel.org 27