ODP-VPP Integration updates

Slides:



Advertisements
Similar presentations
Part IV: Memory Management
Advertisements

Operating Systems: Internals and Design Principles
Memory Management Unit
INFSO-RI An On-Demand Dynamic Virtualization Manager Øyvind Valen-Sendstad CERN – IT/GD, ETICS Virtual Node bootstrapper.
Shangri-La: Achieving High Performance from Compiled Network Applications while Enabling Ease of Programming Michael K. Chen, Xiao Feng Li, Ruiqi Lian,
3.5 Interprocess Communication
MEMORY MANAGEMENT By KUNAL KADAKIA RISHIT SHAH. Memory Memory is a large array of words or bytes, each with its own address. It is a repository of quickly.
1 I/O Management in Representative Operating Systems.
SQL Server memory architecture and debugging memory Issues
UPC Runtime Layer Jason Duell. The Big Picture The Runtime layer handles everything that is both: 1) Platform/Environment specific —So compiler can output.
Rensselaer Polytechnic Institute CSC 432 – Operating Systems David Goldschmidt, Ph.D.
Chapter Oracle Server An Oracle Server consists of an Oracle database (stored data, control and log files.) The Server will support SQL to define.
Michael Wilson Block Design Review: ONL Header Format.
SIMULATED UNIX FILE SYSTEM Implementation in C Tarek Youssef Bipanjit Sihra.
Fast Multi-Threading on Shared Memory Multi-Processors Joseph Cordina B.Sc. Computer Science and Physics Year IV.
Ethernet Driver Changes for NET+OS V5.1. Design Changes Resides in bsp\devices\ethernet directory. Source code broken into more C files. Native driver.
4P13 Week 3 Talking Points 1. Process State 2 Process Structure Catagories – Process identification: the PID and the parent PID – Signal state: signals.
Precomputation- based Prefetching By James Schatz and Bashar Gharaibeh.
Operating Systems CSE 411 CPU Management Sept Lecture 10 Instructor: Bhuvan Urgaonkar.
Virtual-Channel Flow Control William J. Dally
Lectures 8 & 9 Virtual Memory - Paging & Segmentation System Design.
CSE 351 Dynamic Memory Allocation 1. Dynamic Memory Dynamic memory is memory that is “requested” at run- time Solves two fundamental dilemmas: How can.
Scope/Goals of TLDK What is the scope of TLDK? High performance TCP/UDP Testing via CSIT needs to have a set of unit tests for validation Centralized or.
High Speed Solutions in VPP to Accelerate Container Networking: - Howto and Deep Dive Tan,Jianfeng Xu,qian.
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
TLDK Transport Layer Development Kit
NFV Compute Acceleration APIs and Evaluation
Memory Management.
Processes and threads.
Process Management Process Concept Why only the global variables?
CS427 Multicore Architecture and Parallel Computing
CS 6560: Operating Systems Design
Lesson Objectives Aims Key Words
Chapter 9: Virtual Memory
HDF5 Metadata and Page Buffering
Fabric Interfaces Architecture – v4
CSE 374 Programming Concepts & Tools
CS510 Operating System Foundations
Flash EEPROM Emulation Concepts
Main Memory Management
An NP-Based Router for the Open Network Lab
Threads & multithreading
Chapter 4: Threads.
Chapter 9: Virtual-Memory Management
Get the best out of VPP and inter-VM communications.
Konstantis Daloukas Nikolaos Bellas Christos D. Antonopoulos
Page Replacement.
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy Chapter 8 11/24/2018.
An NP-Based Router for the Open Network Lab Overview by JST
Woojoong Kim Dept. of CSE, POSTECH
Virtio Keith Wiles July 11, 2016.
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy Chapter 9 12/1/2018.
Main Memory Background Swapping Contiguous Allocation Paging
Chapter 8: Memory management
Outline Module 1 and 2 dealt with processes, scheduling and synchronization Next two modules will deal with memory and storage Processes require data to.
Memory Management Overview
Virtual Memory Hardware
Transmitter Interrupts
DPDK: Prevention & Detection of DP/CP memory corruption
Translation Buffers (TLB’s)
Top Half / Bottom Half Processing
Prof. Leonardo Mostarda University of Camerino
PROCESSES & THREADS ADINA-CLAUDIA STOICA.
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy Chapter 9 4/5/2019.
Translation Buffers (TLB’s)
VIRTIO 1.1 FOR HARDWARE Rev2.0
Translation Buffers (TLBs)
Contact Information Office: 225 Neville Hall Office Hours: Monday and Wednesday 12:00-1:00 and by appointment. Phone:
Operating Systems: Internals and Design Principles, 6/E
Question 1 How are you going to provide language and/or library (or other?) support in Fortran, C/C++, or another language for massively parallel programming.
Presentation transcript:

ODP-VPP Integration updates Sachin Saxena Sreejith Surendran Nair

Where we are on VPP-ODP Integration ? Able to resolve the dpdk port initialization issue & made progress further through successful initialization. PoC is done to Run VPP with ODP linux-generic, odp-dpdk and NXP-Dpaa2 platform implementation. The base patch for VPP-ODP support is merged in FD.io respective Git Another patch to introduce generic ODP graph node in VPP & Compilation framework is in review-rework state. After the ODP graph node patch will be merged, The FD.io odp4vpp GIT will be ready for functionality with ODP XXX platform implementation.

What's more to target? Following items need to be handled @ Higher priority for stable functionality & performance. Avoid packet copy -> Currently Data path includes packet copy for each RX & TX legs. Main Control <–> Worker Threads model is not working even for single worker thread. Multi Core/threads support RSS (Received side scaling) to enable multiple ODP Queue usage. Other Performance optimizations.

Optimization Suggestions The main issue is that VPP is tightly coupled to DPDK and So, it has visibility of DPDK BUFFER FORMAT. While in ODP, Application User don’t care about internal buffer structure and have no such restriction on platform specific implementation. For better performance VPP utilizes inline VLIB metadata in Buffer and it’s location is fixed in buffer format which do not supported in ODP. I will suggest few New ODP APIs And/OR Changes in VPP framework to avoid packet copy in each functional leg in next few slides.

VPP VLIB (Vector Library) expectation VPP VLIB expect a metadata space of 2-Cache lines in buffer as shown below and must be before HEADROOM area. typedef struct { /* Start of cacheline-0 */ …… /* cacheline-1 */ /* cacheline-2 */ u8 pre_data[VLIB_BUFFER_PRE_DATA_SIZE] u8 data[0]; } vlib_buffer_t; rte_mbuf vlib_mbuf Headroom Packet_Data VLIB metadata in DPDK buffer Format

Changes @ Initialization We should use the provision of allocating User Area while creating ODP PACKET Pool. This User Area space should be of size to satisfy the need of VLIB Buffer. Also, we do need a New ODP API to get Start of Virtual Memory address of Buffers and total Size. This is required to set virtual.start, virtual.end & virtual.size in VLIB Main Structure. This used heavily in data path to convert a buffer of 32/64 bit pointer to 32 bit Index value and vice-versa. XXX Vlib_mbuf XXX Headroom Packet_Data params.pkt.seg_len = SHM_PKT_POOL_BUF_SIZE; params.pkt.len = SHM_PKT_POOL_BUF_SIZE; params.pkt.uarea_size = 192; // 64 B * 3 params.type = ODP_POOL_PACKET; params.pkt.num = SHM_PKT_POOL_NB_PKTS;

Changes in Rx processing We require to suggest changes in VPP VLIB structure to accommodate ODP etc … other than DPDK If we change pre_data (Headroom) and data fields to pointers, as shown in figure, we can achieve ODP integration @ minimum cost to existing VPP framework. For example in DPDK graph node, we need to assign these pointers for each packet. typedef struct { /* Start of cacheline-0 */ …… /* cacheline-1 */ /* cacheline-2 */ u8 resv [VLIB_BUFFER_PRE_DATA_SIZE -2]; u8 *pre_data; u8 *data; } vlib_buffer_t; XXX Vlib_mbuf XXX Headroom Packet_Data Generic Buffer Format

Changes in Rx processing Conti… In ODP graph Node Following should be required. RCV Pkt from ODP API Get Inline Vlib buffer pointer using odp_packet_user_area() (Saved Allocation) Get packet Headroom & Data pointer using ODP packet APIs and fill VPP VLib Buffer (Saved Data Copying) Do Rest of the processing

Changes in Tx processing During transmit, we need to get ODP packet handle from VLIB buffer (ODP User area) pointer. For this, EITHER we may introduce a context pointer (void *) in vlib_buffer and save “odp_packet_t” during receive and retrieve it during Tx (as shown in figure) OR we need a New ODP API to get packet handle from packet “User Area pointer”. (Saved packet Copy and VLIB Buffer memory free) typedef struct { /* Start of cacheline-0 */ …… /* cacheline-1 */ /* cacheline-2 */ u8 resv [VLIB_BUFFER_PRE_DATA_SIZE - 3]; void *pkt_cntxt; u8 *pre_data; u8 *data; } vlib_buffer_t; odp_packet_t XXX Vlib_mbuf XXX Headroom Packet_Data