SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingKernel TLV
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux NetworkingPLUMgrid
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDPDaniel T. Lee
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKMarian Marinov
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netYan Vugenfirer
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking ExplainedThomas Graf
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutronvivekkonnect
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelSUSE Labs Taipei
 
introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack monad bobo
 
Ceph Performance and Sizing Guide
Ceph Performance and Sizing GuideCeph Performance and Sizing Guide
Ceph Performance and Sizing GuideJose De La Rosa
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionGene Chang
 
Reverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux KernelReverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux KernelAdrian Huang
 
VXLAN and FRRouting
VXLAN and FRRoutingVXLAN and FRRouting
VXLAN and FRRoutingFaisal Reza
 
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)Linaro
 
Understanding Open vSwitch
Understanding Open vSwitch Understanding Open vSwitch
Understanding Open vSwitch YongKi Kim
 
Fast Userspace OVS with AF_XDP, OVS CONF 2018
Fast Userspace OVS with AF_XDP, OVS CONF 2018Fast Userspace OVS with AF_XDP, OVS CONF 2018
Fast Userspace OVS with AF_XDP, OVS CONF 2018Cheng-Chun William Tu
 

Tendances (20)

FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDK
 
Deploying IPv6 on OpenStack
Deploying IPv6 on OpenStackDeploying IPv6 on OpenStack
Deploying IPv6 on OpenStack
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack
 
CephFS Update
CephFS UpdateCephFS Update
CephFS Update
 
Ceph Performance and Sizing Guide
Ceph Performance and Sizing GuideCeph Performance and Sizing Guide
Ceph Performance and Sizing Guide
 
Linux MMAP & Ioremap introduction
Linux MMAP & Ioremap introductionLinux MMAP & Ioremap introduction
Linux MMAP & Ioremap introduction
 
Dpdk performance
Dpdk performanceDpdk performance
Dpdk performance
 
Reverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux KernelReverse Mapping (rmap) in Linux Kernel
Reverse Mapping (rmap) in Linux Kernel
 
VXLAN and FRRouting
VXLAN and FRRoutingVXLAN and FRRouting
VXLAN and FRRouting
 
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)HKG15-107: ACPI Power Management on ARM64 Servers (v2)
HKG15-107: ACPI Power Management on ARM64 Servers (v2)
 
Understanding Open vSwitch
Understanding Open vSwitch Understanding Open vSwitch
Understanding Open vSwitch
 
Fast Userspace OVS with AF_XDP, OVS CONF 2018
Fast Userspace OVS with AF_XDP, OVS CONF 2018Fast Userspace OVS with AF_XDP, OVS CONF 2018
Fast Userspace OVS with AF_XDP, OVS CONF 2018
 

Similaire à 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
 

Similaire à 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 ...
 

Plus de 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
 

Plus de 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)
 

Dernier

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%+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
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
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
 
%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
 
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
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...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
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
%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
 
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
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 

Dernier (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%+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...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
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
 
%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
 
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...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
+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...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%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
 
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 🔝✔️✔️
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 

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