SlideShare a Scribd company logo
1 of 31
Download to read offline
Intel Confidential – Internal Use Only
Improving Network
Application performance
using Load Aware
Libeventdev
Sundar Vedantham - June 13, 2017
2
Agenda
•  Multicore Applications
•  Why do we need Eventdev?
•  Eventdev Theory
•  Eventdev API & Application
•  Code Availability – Take Away
3
Multicore Applications
•  Networking applications use one of
two models:
•  Run-to-completion
•  Packet ordering for pinned flows
•  Flow atomicity is supported
•  Cache locality advantage
•  Load imbalance could be a con.
4
Multicore Applications
•  Pipeline processing
•  Ensures packet ordering always
•  Flow atomicity is supported
•  Cache locality advantage
•  Core under utilization is a con
•  May not be flexible to handle different
traffic types
5
Why Eventdev?
•  Event Scheduler addresses the shortcomings of both models.
•  Improves core utilization and better handles dynamic traffic mixes
by scheduling packets to cores according to their load.
•  Simultaneously provides both atomicity and packet ordering
•  Hardware-based event schedulers can provide low-latency inter-
core communication.
Why Eventdev?
Eventdev Scheduler
Rx
Queue
Tx
Queue
Core i
Packet
Rx
Core m
Packet
Tx
Core j Core k
Firewall/Flow
Classifier/Metering/
Routing
Firewall/Flow
Classifier/Metering/
Routing
7
Current Status
•  It is a DPDK Library for scheduling events
•  Initially proposed by Jerin Jacob (Cavium)
•  Worked with Intel + NXP to evolve API to current state
•  Easy setup of pipeline processing
•  Eventdev SQM PMDs does scheduling work
•  Development ongoing since Nov 2016
•  http://dpdk.org/browse/next/dpdk-next-eventdev/
•  Community feedback / patches included in the DPDK 17.05 release
8
Eventdev Theory
•  Pipelines
•  Components
•  Device
•  Ports
•  Queues
•  Concepts
•  Scheduling types
•  Linking queues and ports
9
Eventdev Theory - Pipelines
•  Pipeline made up of “stages”
•  Each “stage” is a stepping-stone to the next
•  One action performed at each stage
•  Eg: Flow Classification, Firewall, ACL
•  Load balancing
•  Worker logical cores (lcore) perform all stages of work
•  Ensures all lcores have equal load
•  No bottleneck due to single worker-lcore
10
Eventdev Theory - Pipelines
RX
W1
TXAtomic #1 W..
WN
W1
W..
WN
Atomic #2 Single Link
Wi - Worker core i
11
Eventdev Theory - Components
•  Device
•  Instance of an eventdev PMD
•  Can be SW or HW
•  SW PMD is available
•  Ports and Queues are part of the device
12
Eventdev Theory - Components
NIC
13
Eventdev Theory – Components – Event Port
•  Port
•  Event ports are logical ports associated with cores
•  Where CPU core and eventdev interact
•  Enqueue / Dequeue of events
•  1 port used by 1 lcore
•  Events dequeued from port must be returned to it again
•  Eventdev tracks inflight events per port
14
Eventdev Theory – Components – Event Port
NIC
15
Eventdev Theory – Components - Queue
•  Queue
•  Each queue is a stage of a pipeline
•  Destination for events
•  Has a Scheduling type
•  Atomic, Ordered, Parallel
•  Holds events until space available in linked port
16
Eventdev Theory – Components - Queue
NIC
17
Eventdev Theory - Concepts
•  Scheduling Modes
•  Atomic - Flow ID used to ensure flow is not on > 1 lcore
•  Ordered - Events reordered into ingress order
•  Parallel - Events allowed to continue out-of-order
18
Eventdev Theory - Concepts
•  Linking queues and ports
•  Ports need to be mapped to queues
•  Linking port to queue results in events from queue arriving at the port
•  Ports can be linked to multiple queues
•  Load balancing use-case
19
Eventdev Theory – Concepts - Linking
Link:
-  From Port #2
-  To Queue #1
NIC
20
Eventdev Theory - Concepts
•  Workers
•  Dequeue burst of events from port
•  For ( events )
•  Read QUEUE_ID to get last stage
•  Process()
•  Write QUEUE_ID to set next stage
•  Enqueue burst back to port
21
Eventdev API – rte_event
•  The rte_event struct
•  The struct that is used in eventdev
•  DPDK packets are struct	rte_mbuf	*	
•  Eventdev events are struct	rte_event	 	 	 	(note	no	*)	
•  Size is 16 bytes
•  8 bytes metadata
•  8 bytes payload
Event Metadata Event Pointer
22
Eventdev API – rte_event
•  The rte_event struct Metadata
•  Enough info for PMD to schedule event to Queue ID
•  Uses Flow ID, Operation type, Priority
Flow ID
Sub event
type
Even
t type
Sched
type
Queue ID Priority
OP
type
23
Eventdev API - Configuration
•  API calling order to setup a Device
•  Device Configuration
•  Queue Setup
•  Port Setup
•  Port Link
•  Device Start
24
Eventdev API – Runtime usage
•  RX lcore
•  NEW event ingress
•  Worker lcores
•  FORWARD existing event
•  TX lcore
•  RELEASE event on egress
•  Eventdev Pipeline Sample App Demonstrates usage
25
Eventdev SW PMD - Overview
•  Software PMD for doing scheduling work
•  Implements the eventdev API
•  Merged into eventdev tree
•  Included in the DPDK 17.05 release
26
Eventdev SW PMD
27
Eventdev SW PMD - Performance
•  Best Known Configuration (BKC) depends on
•  Number of stages
•  Cycles needed for work per stage
•  Number of workers
•  Adding cores is NOT always going to go faster!
Performance comes from balance!
28
Eventdev SW PMD – Performance - Prototyping
•  Use the eventdev_pipeline sample app
•  Configure to requirements
•  Number of stages
•  Cycles needed for work per stage
•  Number of Flows as expected
•  Choose realistic lcore count
•  Leave defaults for remaining values
•  Measure baseline
•  Use Monitoring tools
•  Cycles/pkt per port
•  Port burst distribution
•  “What % of bursts were 1-4 pkts?”
29
Eventdev API – Resources
•  DPDK Eventdev Docs + Sample App
•  http://dpdk.org/doc/api/
•  Download DPDK-master
•  Run make doc-guides-html
•  View Eventdev docs at
•  build/doc/html/guides/prog_guide/eventdev.html
•  Eventdev header file: lib/librte_eventdev/rte_eventdev.h
•  http://dpdk.org/doc/api/rte__eventdev_8h.html
30
Eventdev Pipeline Documentation
•  Two docs patches
•  Sample App User Guide
wget -O docs_sample_app.patch http://dpdk.org/dev/patchwork/patch/23800/raw/
•  Eventdev Programmer Guide
wget -O docs_eventdev_prog_guide.patch http://dpdk.org/dev/patchwork/patch/23801/raw/
•  Build documentation
•  make doc-guides-html
•  Output files in .html format <dpdk>/build/doc/html/guides/
•  http://dpdk.org/doc/guides/contributing/documentation.html#building-the-documentation
Improving Network Application Performance using Load Aware Libeventdev

More Related Content

What's hot

OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
mestery
 

What's hot (20)

The Open vSwitch and OVN Projects
The Open vSwitch and OVN ProjectsThe Open vSwitch and OVN Projects
The Open vSwitch and OVN Projects
 
OpenStack & OpenContrail in Production
OpenStack & OpenContrail in ProductionOpenStack & OpenContrail in Production
OpenStack & OpenContrail in Production
 
See what happened with real time kvm when building real time cloud pezhang@re...
See what happened with real time kvm when building real time cloud pezhang@re...See what happened with real time kvm when building real time cloud pezhang@re...
See what happened with real time kvm when building real time cloud pezhang@re...
 
Status of Embedded Linux
Status of Embedded LinuxStatus of Embedded Linux
Status of Embedded Linux
 
Ovn vancouver
Ovn vancouverOvn vancouver
Ovn vancouver
 
OpenContrail deployment experience
OpenContrail deployment experienceOpenContrail deployment experience
OpenContrail deployment experience
 
OpenStack High Availability
OpenStack High AvailabilityOpenStack High Availability
OpenStack High Availability
 
Network Monitoring and Analytics
Network Monitoring and AnalyticsNetwork Monitoring and Analytics
Network Monitoring and Analytics
 
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs...
Orchestration tool roundup   kubernetes vs. docker vs. heat vs. terra form vs...Orchestration tool roundup   kubernetes vs. docker vs. heat vs. terra form vs...
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs...
 
MidoNet deep dive
MidoNet deep diveMidoNet deep dive
MidoNet deep dive
 
Neutron DVR
Neutron DVRNeutron DVR
Neutron DVR
 
Intro to OpenStack Astara (Spring '16)
Intro to OpenStack Astara (Spring '16)Intro to OpenStack Astara (Spring '16)
Intro to OpenStack Astara (Spring '16)
 
OpenStack Neutron Liberty Updates
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
 
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu...
 
Introduction to MidoNet
Introduction to MidoNetIntroduction to MidoNet
Introduction to MidoNet
 
Tech Talk by Gal Sagie: Kuryr - Connecting containers networking to OpenStack...
Tech Talk by Gal Sagie: Kuryr - Connecting containers networking to OpenStack...Tech Talk by Gal Sagie: Kuryr - Connecting containers networking to OpenStack...
Tech Talk by Gal Sagie: Kuryr - Connecting containers networking to OpenStack...
 
How OpenStack is Built - Anton Weiss - OpenStack Day Israel 2016
How OpenStack is Built - Anton Weiss - OpenStack Day Israel 2016How OpenStack is Built - Anton Weiss - OpenStack Day Israel 2016
How OpenStack is Built - Anton Weiss - OpenStack Day Israel 2016
 
Running Legacy Applications with Containers
Running Legacy Applications with ContainersRunning Legacy Applications with Containers
Running Legacy Applications with Containers
 
Get a Taste of 1 k+ Nodes by a Handful of Servers
Get a Taste of 1 k+ Nodes by a Handful of Servers Get a Taste of 1 k+ Nodes by a Handful of Servers
Get a Taste of 1 k+ Nodes by a Handful of Servers
 
"One network to rule them all" - OpenStack Summit Austin 2016
"One network to rule them all" - OpenStack Summit Austin 2016"One network to rule them all" - OpenStack Summit Austin 2016
"One network to rule them all" - OpenStack Summit Austin 2016
 

Similar to Improving Network Application Performance using Load Aware Libeventdev

Openstack meetup-pune-aug22-overview
Openstack meetup-pune-aug22-overviewOpenstack meetup-pune-aug22-overview
Openstack meetup-pune-aug22-overview
rajdeep
 

Similar to Improving Network Application Performance using Load Aware Libeventdev (20)

Dpdk 2019-ipsec-eventdev
Dpdk 2019-ipsec-eventdevDpdk 2019-ipsec-eventdev
Dpdk 2019-ipsec-eventdev
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
RINA overview and ongoing research in EC-funded projects, ISO SC6 WG7
RINA overview and ongoing research in EC-funded projects, ISO SC6 WG7RINA overview and ongoing research in EC-funded projects, ISO SC6 WG7
RINA overview and ongoing research in EC-funded projects, ISO SC6 WG7
 
Optimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource ConfigurationOptimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource Configuration
 
Data Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache Flink
 
Openstack meetup-pune-aug22-overview
Openstack meetup-pune-aug22-overviewOpenstack meetup-pune-aug22-overview
Openstack meetup-pune-aug22-overview
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
 
Day in the life event-driven workshop
Day in the life  event-driven workshopDay in the life  event-driven workshop
Day in the life event-driven workshop
 
DockerCon SF 2015 : Reliably shipping containers in a resource rich world usi...
DockerCon SF 2015 : Reliably shipping containers in a resource rich world usi...DockerCon SF 2015 : Reliably shipping containers in a resource rich world usi...
DockerCon SF 2015 : Reliably shipping containers in a resource rich world usi...
 
Openstack Overview
Openstack OverviewOpenstack Overview
Openstack Overview
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
 
Seattle Spark Meetup Mobius CSharp API
Seattle Spark Meetup Mobius CSharp APISeattle Spark Meetup Mobius CSharp API
Seattle Spark Meetup Mobius CSharp API
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
Barista: Event-centric NOS Composition Framework for SDN
Barista: Event-centric NOS Composition Framework for SDNBarista: Event-centric NOS Composition Framework for SDN
Barista: Event-centric NOS Composition Framework for SDN
 
c-quilibrium R forecasting integration
c-quilibrium R forecasting integrationc-quilibrium R forecasting integration
c-quilibrium R forecasting integration
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21
 
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...
 
BKK16-106 ODP Project Update
BKK16-106 ODP Project UpdateBKK16-106 ODP Project Update
BKK16-106 ODP Project Update
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 

More from Michelle Holley

Service Mesh on Kubernetes with Istio
Service Mesh on Kubernetes with IstioService Mesh on Kubernetes with Istio
Service Mesh on Kubernetes with Istio
Michelle Holley
 

More from Michelle Holley (20)

NFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function Framework
 
Edge and 5G: What is in it for the developers?
Edge and 5G: What is in it for the developers?Edge and 5G: What is in it for the developers?
Edge and 5G: What is in it for the developers?
 
5G and Open Reference Platforms
5G and Open Reference Platforms5G and Open Reference Platforms
5G and Open Reference Platforms
 
De-fogging Edge Computing: Ecosystem, Use-cases, and Opportunities
De-fogging Edge Computing: Ecosystem, Use-cases, and OpportunitiesDe-fogging Edge Computing: Ecosystem, Use-cases, and Opportunities
De-fogging Edge Computing: Ecosystem, Use-cases, and Opportunities
 
Building the SD-Branch using uCPE
Building the SD-Branch using uCPEBuilding the SD-Branch using uCPE
Building the SD-Branch using uCPE
 
Enabling Multi-access Edge Computing (MEC) Platform-as-a-Service for Enterprises
Enabling Multi-access Edge Computing (MEC) Platform-as-a-Service for EnterprisesEnabling Multi-access Edge Computing (MEC) Platform-as-a-Service for Enterprises
Enabling Multi-access Edge Computing (MEC) Platform-as-a-Service for Enterprises
 
Accelerating Edge Computing Adoption
Accelerating Edge Computing Adoption Accelerating Edge Computing Adoption
Accelerating Edge Computing Adoption
 
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
Install FD.IO VPP On Intel(r) Architecture & Test with Trex*
 
DPDK & Cloud Native
DPDK & Cloud NativeDPDK & Cloud Native
DPDK & Cloud Native
 
OpenDaylight Update (June 2018)
OpenDaylight Update (June 2018)OpenDaylight Update (June 2018)
OpenDaylight Update (June 2018)
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
 
Orchestrating NFV Workloads in Multiple Clouds
Orchestrating NFV Workloads in Multiple CloudsOrchestrating NFV Workloads in Multiple Clouds
Orchestrating NFV Workloads in Multiple Clouds
 
Convergence of device and data at the Edge Cloud
Convergence of device and data at the Edge CloudConvergence of device and data at the Edge Cloud
Convergence of device and data at the Edge Cloud
 
Intel® Network Builders - Network Edge Ecosystem Program
Intel® Network Builders - Network Edge Ecosystem ProgramIntel® Network Builders - Network Edge Ecosystem Program
Intel® Network Builders - Network Edge Ecosystem Program
 
Design Implications, Challenges and Principles of Zero-Touch Management Envir...
Design Implications, Challenges and Principles of Zero-Touch Management Envir...Design Implications, Challenges and Principles of Zero-Touch Management Envir...
Design Implications, Challenges and Principles of Zero-Touch Management Envir...
 
Using Microservices Architecture and Patterns to Address Applications Require...
Using Microservices Architecture and Patterns to Address Applications Require...Using Microservices Architecture and Patterns to Address Applications Require...
Using Microservices Architecture and Patterns to Address Applications Require...
 
Intel Powered AI Applications for Telco
Intel Powered AI Applications for TelcoIntel Powered AI Applications for Telco
Intel Powered AI Applications for Telco
 
Artificial Intelligence in the Network
Artificial Intelligence in the Network Artificial Intelligence in the Network
Artificial Intelligence in the Network
 
Service Mesh on Kubernetes with Istio
Service Mesh on Kubernetes with IstioService Mesh on Kubernetes with Istio
Service Mesh on Kubernetes with Istio
 
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
 

Recently uploaded

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+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
 
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...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+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
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
+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
 

Recently uploaded (20)

WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%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
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
%+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...
 
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 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
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%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
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%+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...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
+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...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 

Improving Network Application Performance using Load Aware Libeventdev

  • 1. Intel Confidential – Internal Use Only Improving Network Application performance using Load Aware Libeventdev Sundar Vedantham - June 13, 2017
  • 2. 2 Agenda •  Multicore Applications •  Why do we need Eventdev? •  Eventdev Theory •  Eventdev API & Application •  Code Availability – Take Away
  • 3. 3 Multicore Applications •  Networking applications use one of two models: •  Run-to-completion •  Packet ordering for pinned flows •  Flow atomicity is supported •  Cache locality advantage •  Load imbalance could be a con.
  • 4. 4 Multicore Applications •  Pipeline processing •  Ensures packet ordering always •  Flow atomicity is supported •  Cache locality advantage •  Core under utilization is a con •  May not be flexible to handle different traffic types
  • 5. 5 Why Eventdev? •  Event Scheduler addresses the shortcomings of both models. •  Improves core utilization and better handles dynamic traffic mixes by scheduling packets to cores according to their load. •  Simultaneously provides both atomicity and packet ordering •  Hardware-based event schedulers can provide low-latency inter- core communication.
  • 6. Why Eventdev? Eventdev Scheduler Rx Queue Tx Queue Core i Packet Rx Core m Packet Tx Core j Core k Firewall/Flow Classifier/Metering/ Routing Firewall/Flow Classifier/Metering/ Routing
  • 7. 7 Current Status •  It is a DPDK Library for scheduling events •  Initially proposed by Jerin Jacob (Cavium) •  Worked with Intel + NXP to evolve API to current state •  Easy setup of pipeline processing •  Eventdev SQM PMDs does scheduling work •  Development ongoing since Nov 2016 •  http://dpdk.org/browse/next/dpdk-next-eventdev/ •  Community feedback / patches included in the DPDK 17.05 release
  • 8. 8 Eventdev Theory •  Pipelines •  Components •  Device •  Ports •  Queues •  Concepts •  Scheduling types •  Linking queues and ports
  • 9. 9 Eventdev Theory - Pipelines •  Pipeline made up of “stages” •  Each “stage” is a stepping-stone to the next •  One action performed at each stage •  Eg: Flow Classification, Firewall, ACL •  Load balancing •  Worker logical cores (lcore) perform all stages of work •  Ensures all lcores have equal load •  No bottleneck due to single worker-lcore
  • 10. 10 Eventdev Theory - Pipelines RX W1 TXAtomic #1 W.. WN W1 W.. WN Atomic #2 Single Link Wi - Worker core i
  • 11. 11 Eventdev Theory - Components •  Device •  Instance of an eventdev PMD •  Can be SW or HW •  SW PMD is available •  Ports and Queues are part of the device
  • 12. 12 Eventdev Theory - Components NIC
  • 13. 13 Eventdev Theory – Components – Event Port •  Port •  Event ports are logical ports associated with cores •  Where CPU core and eventdev interact •  Enqueue / Dequeue of events •  1 port used by 1 lcore •  Events dequeued from port must be returned to it again •  Eventdev tracks inflight events per port
  • 14. 14 Eventdev Theory – Components – Event Port NIC
  • 15. 15 Eventdev Theory – Components - Queue •  Queue •  Each queue is a stage of a pipeline •  Destination for events •  Has a Scheduling type •  Atomic, Ordered, Parallel •  Holds events until space available in linked port
  • 16. 16 Eventdev Theory – Components - Queue NIC
  • 17. 17 Eventdev Theory - Concepts •  Scheduling Modes •  Atomic - Flow ID used to ensure flow is not on > 1 lcore •  Ordered - Events reordered into ingress order •  Parallel - Events allowed to continue out-of-order
  • 18. 18 Eventdev Theory - Concepts •  Linking queues and ports •  Ports need to be mapped to queues •  Linking port to queue results in events from queue arriving at the port •  Ports can be linked to multiple queues •  Load balancing use-case
  • 19. 19 Eventdev Theory – Concepts - Linking Link: -  From Port #2 -  To Queue #1 NIC
  • 20. 20 Eventdev Theory - Concepts •  Workers •  Dequeue burst of events from port •  For ( events ) •  Read QUEUE_ID to get last stage •  Process() •  Write QUEUE_ID to set next stage •  Enqueue burst back to port
  • 21. 21 Eventdev API – rte_event •  The rte_event struct •  The struct that is used in eventdev •  DPDK packets are struct rte_mbuf * •  Eventdev events are struct rte_event (note no *) •  Size is 16 bytes •  8 bytes metadata •  8 bytes payload Event Metadata Event Pointer
  • 22. 22 Eventdev API – rte_event •  The rte_event struct Metadata •  Enough info for PMD to schedule event to Queue ID •  Uses Flow ID, Operation type, Priority Flow ID Sub event type Even t type Sched type Queue ID Priority OP type
  • 23. 23 Eventdev API - Configuration •  API calling order to setup a Device •  Device Configuration •  Queue Setup •  Port Setup •  Port Link •  Device Start
  • 24. 24 Eventdev API – Runtime usage •  RX lcore •  NEW event ingress •  Worker lcores •  FORWARD existing event •  TX lcore •  RELEASE event on egress •  Eventdev Pipeline Sample App Demonstrates usage
  • 25. 25 Eventdev SW PMD - Overview •  Software PMD for doing scheduling work •  Implements the eventdev API •  Merged into eventdev tree •  Included in the DPDK 17.05 release
  • 27. 27 Eventdev SW PMD - Performance •  Best Known Configuration (BKC) depends on •  Number of stages •  Cycles needed for work per stage •  Number of workers •  Adding cores is NOT always going to go faster! Performance comes from balance!
  • 28. 28 Eventdev SW PMD – Performance - Prototyping •  Use the eventdev_pipeline sample app •  Configure to requirements •  Number of stages •  Cycles needed for work per stage •  Number of Flows as expected •  Choose realistic lcore count •  Leave defaults for remaining values •  Measure baseline •  Use Monitoring tools •  Cycles/pkt per port •  Port burst distribution •  “What % of bursts were 1-4 pkts?”
  • 29. 29 Eventdev API – Resources •  DPDK Eventdev Docs + Sample App •  http://dpdk.org/doc/api/ •  Download DPDK-master •  Run make doc-guides-html •  View Eventdev docs at •  build/doc/html/guides/prog_guide/eventdev.html •  Eventdev header file: lib/librte_eventdev/rte_eventdev.h •  http://dpdk.org/doc/api/rte__eventdev_8h.html
  • 30. 30 Eventdev Pipeline Documentation •  Two docs patches •  Sample App User Guide wget -O docs_sample_app.patch http://dpdk.org/dev/patchwork/patch/23800/raw/ •  Eventdev Programmer Guide wget -O docs_eventdev_prog_guide.patch http://dpdk.org/dev/patchwork/patch/23801/raw/ •  Build documentation •  make doc-guides-html •  Output files in .html format <dpdk>/build/doc/html/guides/ •  http://dpdk.org/doc/guides/contributing/documentation.html#building-the-documentation