Improving Network Application Performance using Load Aware Libeventdev

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
1 of 31

Recommended

Deploying OpenDaylight and OpenStack at Ease by
Deploying OpenDaylight and OpenStack at EaseDeploying OpenDaylight and OpenStack at Ease
Deploying OpenDaylight and OpenStack at EaseMichelle Holley
422 views26 slides
Opensource approach to design and deployment of Microservices based VNF by
Opensource approach to design and deployment of Microservices based VNFOpensource approach to design and deployment of Microservices based VNF
Opensource approach to design and deployment of Microservices based VNFMichelle Holley
1K views19 slides
Overview of OpenDaylight Container Orchestration Engine Integration by
Overview of OpenDaylight Container Orchestration Engine IntegrationOverview of OpenDaylight Container Orchestration Engine Integration
Overview of OpenDaylight Container Orchestration Engine IntegrationMichelle Holley
679 views13 slides
Meetup 23 - 02 - OVN - The future of networking in OpenStack by
Meetup 23 - 02 - OVN - The future of networking in OpenStackMeetup 23 - 02 - OVN - The future of networking in OpenStack
Meetup 23 - 02 - OVN - The future of networking in OpenStackVietnam Open Infrastructure User Group
1.8K views29 slides
OVN: Scaleable Virtual Networking for Open vSwitch by
OVN: Scaleable Virtual Networking for Open vSwitchOVN: Scaleable Virtual Networking for Open vSwitch
OVN: Scaleable Virtual Networking for Open vSwitchmestery
1.9K views37 slides
OpenStack Astara by
OpenStack AstaraOpenStack Astara
OpenStack AstaraKiran Murari
1.1K views20 slides

More Related Content

What's hot

The Open vSwitch and OVN Projects by
The Open vSwitch and OVN ProjectsThe Open vSwitch and OVN Projects
The Open vSwitch and OVN ProjectsLinuxCon ContainerCon CloudOpen China
768 views23 slides
OpenStack & OpenContrail in Production by
OpenStack & OpenContrail in ProductionOpenStack & OpenContrail in Production
OpenStack & OpenContrail in ProductionEdgar Magana
1.3K views38 slides
See what happened with real time kvm when building real time cloud pezhang@re... by
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...LinuxCon ContainerCon CloudOpen China
1.4K views26 slides
Status of Embedded Linux by
Status of Embedded LinuxStatus of Embedded Linux
Status of Embedded LinuxLinuxCon ContainerCon CloudOpen China
929 views46 slides
Ovn vancouver by
Ovn vancouverOvn vancouver
Ovn vancouverMason Mei
520 views33 slides
OpenContrail deployment experience by
OpenContrail deployment experienceOpenContrail deployment experience
OpenContrail deployment experienceJakub Pavlik
3.4K views16 slides

What's hot(20)

OpenStack & OpenContrail in Production by Edgar Magana
OpenStack & OpenContrail in ProductionOpenStack & OpenContrail in Production
OpenStack & OpenContrail in Production
Edgar Magana1.3K views
Ovn vancouver by Mason Mei
Ovn vancouverOvn vancouver
Ovn vancouver
Mason Mei520 views
OpenContrail deployment experience by Jakub Pavlik
OpenContrail deployment experienceOpenContrail deployment experience
OpenContrail deployment experience
Jakub Pavlik3.4K views
OpenStack High Availability by Jakub Pavlik
OpenStack High AvailabilityOpenStack High Availability
OpenStack High Availability
Jakub Pavlik7.4K views
Network Monitoring and Analytics by PLUMgrid
Network Monitoring and AnalyticsNetwork Monitoring and Analytics
Network Monitoring and Analytics
PLUMgrid999 views
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs... by Nati Shalom
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...
Nati Shalom85.2K views
Intro to OpenStack Astara (Spring '16) by markmcclain
Intro to OpenStack Astara (Spring '16)Intro to OpenStack Astara (Spring '16)
Intro to OpenStack Astara (Spring '16)
markmcclain526 views
OpenStack Neutron Liberty Updates by mestery
OpenStack Neutron Liberty UpdatesOpenStack Neutron Liberty Updates
OpenStack Neutron Liberty Updates
mestery2.9K views
OpenStack Israel Meetup - Project Kuryr: Bringing Container Networking to Neu... by Cloud Native Day Tel Aviv
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...
Tech Talk by Gal Sagie: Kuryr - Connecting containers networking to OpenStack... by nvirters
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...
nvirters890 views
"One network to rule them all" - OpenStack Summit Austin 2016 by Phil Estes
"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
Phil Estes955 views

Similar to Improving Network Application Performance using Load Aware Libeventdev

Dpdk 2019-ipsec-eventdev by
Dpdk 2019-ipsec-eventdevDpdk 2019-ipsec-eventdev
Dpdk 2019-ipsec-eventdevHemant Agrawal
60 views15 slides
Introduction to Kubernetes by
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetesrajdeep
46.8K views39 slides
RINA overview and ongoing research in EC-funded projects, ISO SC6 WG7 by
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 WG7Eleni Trouva
1.7K views51 slides
Optimising Service Deployment and Infrastructure Resource Configuration by
Optimising Service Deployment and Infrastructure Resource ConfigurationOptimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource ConfigurationRECAP Project
548 views27 slides
Data Stream Processing with Apache Flink by
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkFabian Hueske
4.3K views43 slides
Openstack meetup-pune-aug22-overview by
Openstack meetup-pune-aug22-overviewOpenstack meetup-pune-aug22-overview
Openstack meetup-pune-aug22-overviewrajdeep
1.5K views49 slides

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

Introduction to Kubernetes by rajdeep
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
rajdeep46.8K views
RINA overview and ongoing research in EC-funded projects, ISO SC6 WG7 by Eleni Trouva
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
Eleni Trouva1.7K views
Optimising Service Deployment and Infrastructure Resource Configuration by RECAP Project
Optimising Service Deployment and Infrastructure Resource ConfigurationOptimising Service Deployment and Infrastructure Resource Configuration
Optimising Service Deployment and Infrastructure Resource Configuration
RECAP Project548 views
Data Stream Processing with Apache Flink by Fabian Hueske
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache Flink
Fabian Hueske4.3K views
Openstack meetup-pune-aug22-overview by rajdeep
Openstack meetup-pune-aug22-overviewOpenstack meetup-pune-aug22-overview
Openstack meetup-pune-aug22-overview
rajdeep1.5K views
Kubernetes @ Squarespace: Kubernetes in the Datacenter by Kevin Lynch
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kevin Lynch1.2K views
Day in the life event-driven workshop by Christina Lin
Day in the life  event-driven workshopDay in the life  event-driven workshop
Day in the life event-driven workshop
Christina Lin217 views
DockerCon SF 2015 : Reliably shipping containers in a resource rich world usi... by Docker, Inc.
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...
Docker, Inc.6.6K views
Openstack Overview by rajdeep
Openstack OverviewOpenstack Overview
Openstack Overview
rajdeep2.6K views
Kubernetes @ Squarespace (SRE Portland Meetup October 2017) by Kevin Lynch
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kevin Lynch237 views
Seattle Spark Meetup Mobius CSharp API by shareddatamsft
Seattle Spark Meetup Mobius CSharp APISeattle Spark Meetup Mobius CSharp API
Seattle Spark Meetup Mobius CSharp API
shareddatamsft866 views
Server-side JS with NodeJS by Lilia Sfaxi
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
Lilia Sfaxi3.8K views
Barista: Event-centric NOS Composition Framework for SDN by BoanLabDKU
Barista: Event-centric NOS Composition Framework for SDNBarista: Event-centric NOS Composition Framework for SDN
Barista: Event-centric NOS Composition Framework for SDN
BoanLabDKU1 view
Replace your Docker based Containers with Cri-o Kata Containers for better se... by NETWAYS
Replace your Docker based Containers with Cri-o Kata Containers for better se...Replace your Docker based Containers with Cri-o Kata Containers for better se...
Replace your Docker based Containers with Cri-o Kata Containers for better se...
NETWAYS222 views
BKK16-106 ODP Project Update by Linaro
BKK16-106 ODP Project UpdateBKK16-106 ODP Project Update
BKK16-106 ODP Project Update
Linaro709 views
FD.IO Vector Packet Processing by Kernel TLV
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
Kernel TLV4.4K views
FD.io Vector Packet Processing (VPP) by Kirill Tsym
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
Kirill Tsym8.2K views

More from Michelle Holley

NFF-GO (YANFF) - Yet Another Network Function Framework by
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkMichelle Holley
4.8K views31 slides
Edge and 5G: What is in it for the developers? by
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?Michelle Holley
1.5K views17 slides
5G and Open Reference Platforms by
5G and Open Reference Platforms5G and Open Reference Platforms
5G and Open Reference PlatformsMichelle Holley
2.2K views18 slides
De-fogging Edge Computing: Ecosystem, Use-cases, and Opportunities by
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 OpportunitiesMichelle Holley
656 views8 slides
Building the SD-Branch using uCPE by
Building the SD-Branch using uCPEBuilding the SD-Branch using uCPE
Building the SD-Branch using uCPEMichelle Holley
2.4K views21 slides
Enabling Multi-access Edge Computing (MEC) Platform-as-a-Service for Enterprises by
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 EnterprisesMichelle Holley
3.2K views20 slides

More from Michelle Holley(20)

NFF-GO (YANFF) - Yet Another Network Function Framework by Michelle Holley
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function Framework
Michelle Holley4.8K views
Edge and 5G: What is in it for the developers? by Michelle Holley
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?
Michelle Holley1.5K views
5G and Open Reference Platforms by Michelle Holley
5G and Open Reference Platforms5G and Open Reference Platforms
5G and Open Reference Platforms
Michelle Holley2.2K views
De-fogging Edge Computing: Ecosystem, Use-cases, and Opportunities by Michelle Holley
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
Michelle Holley656 views
Building the SD-Branch using uCPE by Michelle Holley
Building the SD-Branch using uCPEBuilding the SD-Branch using uCPE
Building the SD-Branch using uCPE
Michelle Holley2.4K views
Enabling Multi-access Edge Computing (MEC) Platform-as-a-Service for Enterprises by Michelle Holley
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
Michelle Holley3.2K views
Accelerating Edge Computing Adoption by Michelle Holley
Accelerating Edge Computing Adoption Accelerating Edge Computing Adoption
Accelerating Edge Computing Adoption
Michelle Holley2.3K views
Install FD.IO VPP On Intel(r) Architecture & Test with Trex* by Michelle Holley
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*
Michelle Holley1.4K views
Orchestrating NFV Workloads in Multiple Clouds by Michelle Holley
Orchestrating NFV Workloads in Multiple CloudsOrchestrating NFV Workloads in Multiple Clouds
Orchestrating NFV Workloads in Multiple Clouds
Michelle Holley195 views
Convergence of device and data at the Edge Cloud by Michelle Holley
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
Michelle Holley425 views
Intel® Network Builders - Network Edge Ecosystem Program by Michelle Holley
Intel® Network Builders - Network Edge Ecosystem ProgramIntel® Network Builders - Network Edge Ecosystem Program
Intel® Network Builders - Network Edge Ecosystem Program
Michelle Holley375 views
Design Implications, Challenges and Principles of Zero-Touch Management Envir... by Michelle Holley
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...
Michelle Holley301 views
Using Microservices Architecture and Patterns to Address Applications Require... by Michelle Holley
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...
Michelle Holley435 views
Intel Powered AI Applications for Telco by Michelle Holley
Intel Powered AI Applications for TelcoIntel Powered AI Applications for Telco
Intel Powered AI Applications for Telco
Michelle Holley802 views
Artificial Intelligence in the Network by Michelle Holley
Artificial Intelligence in the Network Artificial Intelligence in the Network
Artificial Intelligence in the Network
Michelle Holley1.4K views
Service Mesh on Kubernetes with Istio by Michelle Holley
Service Mesh on Kubernetes with IstioService Mesh on Kubernetes with Istio
Service Mesh on Kubernetes with Istio
Michelle Holley3.5K views
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ... by Michelle Holley
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
Michelle Holley1.8K views

Recently uploaded

Dapr Unleashed: Accelerating Microservice Development by
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice DevelopmentMiroslav Janeski
12 views29 slides
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsRa'Fat Al-Msie'deen
8 views49 slides
Introduction to Gradle by
Introduction to GradleIntroduction to Gradle
Introduction to GradleJohn Valentino
5 views7 slides
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... by
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...TomHalpin9
6 views29 slides
Generic or specific? Making sensible software design decisions by
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
6 views60 slides
360 graden fabriek by
360 graden fabriek360 graden fabriek
360 graden fabriekinfo33492
138 views25 slides

Recently uploaded(20)

Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski12 views
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... by TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin96 views
Generic or specific? Making sensible software design decisions by Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
360 graden fabriek by info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info33492138 views
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra... by Marc Müller
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra....NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
.NET Developer Conference 2023 - .NET Microservices mit Dapr – zu viel Abstra...
Marc Müller41 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok11 views
Navigating container technology for enhanced security by Niklas Saari by Metosin Oy
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy14 views
DRYiCE™ iAutomate: AI-enhanced Intelligent Runbook Automation by HCLSoftware
DRYiCE™ iAutomate: AI-enhanced Intelligent Runbook AutomationDRYiCE™ iAutomate: AI-enhanced Intelligent Runbook Automation
DRYiCE™ iAutomate: AI-enhanced Intelligent Runbook Automation
HCLSoftware6 views
Airline Booking Software by SharmiMehta
Airline Booking SoftwareAirline Booking Software
Airline Booking Software
SharmiMehta6 views
Top-5-production-devconMunich-2023.pptx by Tier1 app
Top-5-production-devconMunich-2023.pptxTop-5-production-devconMunich-2023.pptx
Top-5-production-devconMunich-2023.pptx
Tier1 app8 views
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino6 views
FIMA 2023 Neo4j & FS - Entity Resolution.pptx by Neo4j
FIMA 2023 Neo4j & FS - Entity Resolution.pptxFIMA 2023 Neo4j & FS - Entity Resolution.pptx
FIMA 2023 Neo4j & FS - Entity Resolution.pptx
Neo4j12 views
Sprint 226 by ManageIQ
Sprint 226Sprint 226
Sprint 226
ManageIQ8 views
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30
Shane Coughlan5 views
Bootstrapping vs Venture Capital.pptx by Zeljko Svedic
Bootstrapping vs Venture Capital.pptxBootstrapping vs Venture Capital.pptx
Bootstrapping vs Venture Capital.pptx
Zeljko Svedic12 views

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