Compression Device Drivers. Release rc3

Similar documents
Compression Device Drivers. Release

Event Device Drivers. Release rc1

Crypto Device Drivers. Release

Crypto Device Drivers. Release rc2

Baseband Device Drivers. Release rc1

Platform Specific Guides. Release

Crypto Device Drivers. Release

Baseband Device Drivers. Release

Rawdev Drivers. Release rc4

Crypto Device Drivers. Release

Xilinx Answer QDMA DPDK User Guide

Crypto Device Drivers. Release

FAQ. Release rc2

DPDK Tools User Guides. Release

Lab2 - Bootloader. Conventions. Department of Computer Science and Information Engineering National Taiwan University

Open vswitch - architecture

QorIQ Intelligent Network Interface Card (inic) Solution SDK v1.0 Update

DPDK Roadmap. Tim O Driscoll & Chris Wright Open Networking Summit 2017

RESTRUCTURING DPDK DEVICE-DRIVER FRAMEWORK

Xilinx Answer QDMA Performance Report

OpenDataPlane (ODP) A Quick Introduction and Overview. Linaro Networking Group (LNG) Presented by Bill Fischofer.

FPGA Acceleration and Virtualization Technology in DPDK ROSEN XU TIANFEI ZHANG

Installation and Maintenance Instructions for Intel(R) R-WPA VNF Package

Agilio CX 2x40GbE with OVS-TC

How to abstract hardware acceleration device in cloud environment. Maciej Grochowski Intel DCG Ireland

Method for sharing a (PCI) device between multiple PMDs. Fiona Trahe DPDK Summit Userspace - Dublin- 2017

DPDK Intel Cryptodev Performance Report Release 18.08

DPDK Intel Cryptodev Performance Report Release 17.11

ISA-L Performance Report Release Test Date: Sept 29 th 2017

DPDK Summit China 2017

An NVMe-based FPGA Storage Workload Accelerator

viommu/arm: full emulation and virtio-iommu approaches Eric Auger KVM Forum 2017

Zhang Tianfei. Rosen Xu

Let s Hot plug: By uevent mechanism in DPDK. Jeff guo Intel DPDK Summit User space - Dublin- 2017

viommu/arm: full emulation and virtio-iommu approaches Eric Auger KVM Forum 2017

Hardware Based Compression in Ceph OSD with BTRFS

TrinityCore Documentation

Implementing DPDK based Application Container Framework with SPP YASUFUMI OGAWA, NTT

Spring 2017 :: CSE 506. Device Programming. Nima Honarmand

Architecture Study. Maximizing the Performance of DOCSIS 3.0/3.1 Processing on Intel Xeon Processors

Virtio/vhost status update

Fast packet processing in the cloud. Dániel Géhberger Ericsson Research

Using DPDK with Go. Takanari Hayama Technology Consulting Company IGEL Co.,Ltd.

Arm Processor Technology Update and Roadmap

DPDK Intel NIC Performance Report Release 17.08

Agenda How DPDK can be used for your Application DPDK Ecosystem boosting your Development Meet the Community Challenges

Intel QuickAssist Technology (Intel QAT) Software for Linux*

xtensor-io Sep 20, 2018

AN 831: Intel FPGA SDK for OpenCL

ROOT I/O compression algorithms. Oksana Shadura, Brian Bockelman University of Nebraska-Lincoln

Accelerating Storage with NVM Express SSDs and P2PDMA Stephen Bates, PhD Chief Technology Officer

POSTouch Open Source Driver (OSE) Installation Guide

October 11, 2018 DE5-Net OpenCL

DPDK Intel NIC Performance Report Release 18.02

A Look at Intel s Dataplane Development Kit

DPDK+eBPF KONSTANTIN ANANYEV INTEL

Accelerating NVMe I/Os in Virtual Machine via SPDK vhost* Solution Ziye Yang, Changpeng Liu Senior software Engineer Intel

DPDK Performance Report Release Test Date: Nov 16 th 2016

vswitch Acceleration with Hardware Offloading CHEN ZHIHUI JUNE 2018

Compression Update: ZSTD & ZLIB. Oksana Shadura, Brian Bockelman University of Lincoln Nebraska

SPDK China Summit Ziye Yang. Senior Software Engineer. Network Platforms Group, Intel Corporation

Programming Netronome Agilio SmartNICs

Programming Intel QuickAssist Technology Hardware Accelerators for Optimal Performance

Mellanox DPDK Release Notes

Networking at the Speed of Light

SIMD Instructions outside and inside Oracle 12c. Laurent Léturgez 2016

DPDK Intel NIC Performance Report Release 18.05

Mellanox DPDK. Release Notes. Rev 16.11_4.0

Introducing the Data Plane Development Kit (DPDK) on Lenovo Servers

Intel QuickAssist Technology

Supporting Cloud Native with DPDK and containers KEITH INTEL CORPORATION

HKG net_mdev: Fast-path userspace I/O. Ilias Apalodimas Mykyta Iziumtsev François-Frédéric Ozog

Intel Software Guard Extensions SDK for Linux* OS. Installation Guide

Introduction to Linux

Scaling Acceleration Capacity from 5 to 50 Gbps and Beyond with Intel QuickAssist Technology

Installing Virtualbox Guest Additions Vboxadditions on CentOS 7, Fedora 19 / 20 and RHEL 6.5 / 5.10 on Windows host

Accelerating Load Balancing programs using HW- Based Hints in XDP

Dynamic Device Management THOMAS MONJALON - MELLANOX JEFF GUO - INTEL QI ZHANG INTEL SEPTEMBER 2018, DUBLIN

ntop Users Group Meeting

Intel QuickAssist for Windows*

PetaLinux SDK Installation Guide

DPDK Vhost/Virtio Performance Report Release 18.05

MV 4412 Android 4.0 Compilation

Data Path acceleration techniques in a NFV world

30-Mar What's New in SDK V Highlights

DPDK Vhost/Virtio Performance Report Release 18.11

An Intelligent NIC Design Xin Song

Intel QuickAssist Technology (Intel QAT) Software for Linux*

Wireless Base Band Device (bbdev) Amr Mokhtar DPDK Summit Userspace - Dublin- 2017

Introduction Framing Payloads APIs NMSG. Robert Edmonds Internet Systems Consortium, Inc. December 3, 2009

Zephyr Kernel Installation & Setup Manual

Afternoon Session 20

Linux Driver and Embedded Developer

Red Hat OpenStack Platform 10

VPP Host Stack. Transport and Session Layers. Florin Coras, Dave Barach

P4-based VNF and Micro-VNF chaining for servers with SmartNICs

An Experimental review on Intel DPDK L2 Forwarding

Corporate Update. OpenVswitch hardware offload over DPDK. DPDK summit 2017

What s an API? Do we need standardization?

SoftRDMA: Rekindling High Performance Software RDMA over Commodity Ethernet

Transcription:

Compression Device Drivers Release 19.02.0-rc3 January 20, 2019

CONTENTS 1 Compression Device Supported Functionality Matrices 1 1.1 Supported Feature Flags............................... 1 2 ISA-L Compression Poll Mode Driver 3 2.1 Features........................................ 3 2.2 Limitations....................................... 4 2.3 Installation....................................... 4 2.4 Initialization....................................... 5 3 OCTEON TX ZIP Compression Poll Mode Driver 6 3.1 Features........................................ 6 3.2 Limitations....................................... 6 3.3 Supported OCTEON TX SoCs............................ 6 3.4 Steps To Setup Platform............................... 6 3.5 Installation....................................... 7 3.6 Initialization....................................... 7 4 Intel(R) QuickAssist (QAT) Compression Poll Mode Driver 8 4.1 Features........................................ 8 4.2 Limitations....................................... 8 4.3 Installation....................................... 9 5 ZLIB Compression Poll Mode Driver 10 5.1 Features........................................ 10 5.2 Limitations....................................... 10 5.3 Installation....................................... 10 5.4 Initialization....................................... 11 i

CHAPTER ONE COMPRESSION DEVICE SUPPORTED FUNCTIONALITY MATRICES 1.1 Supported Feature Flags Table 1.1: Features availability in compression drivers Feature i s a l o c t e o n t x q a t z l i b HW Accelerated Y Y CPU SSE Y CPU AVX Y CPU AVX2 Y CPU AVX512 Y CPU NEON Stateful Pass-through Y OOP SGL In SGL Out Y Y OOP SGL In LB Out Y Y OOP LB In SGL Out Y Y Deflate Y Y Y Y LZS Adler32 Y Y Crc32 Y Y Adler32&Crc32 Y Fixed Y Y Y Y Dynamic Y Y Y Y Note: Pass-through feature flag refers to the ability of the PMD to let input buffers passthrough it, copying the input to the output, without making any modifications to it (no compression done). OOP SGL In SGL Out feature flag stands for Out-of-place Scatter-gather list Input, Scatter-gater list Output, which means PMD supports different scatter-gather styled input and output buffers (i.e. both can consists of multiple segments). OOP SGL In LB Out feature flag stands for Out-of-place Scatter-gather list Input, Linear Buffers Output, which means PMD supports input from scatter-gathered styled buffers, outputting linear buffers (i.e. single segment). OOP LB In SGL Out feature flag stands for Out-of-place Linear Buffers Input, Scattergather list Output, which means PMD supports input from linear buffer, outputting 1

Compression Device Drivers, Release 19.02.0-rc3 scatter-gathered styled buffers. 1.1. Supported Feature Flags 2

CHAPTER TWO ISA-L COMPRESSION POLL MODE DRIVER The ISA-L PMD (librte_pmd_isal_comp) provides poll mode compression & decompression driver support for utilizing Intel ISA-L library, which implements the deflate algorithm for both Deflate(compression) and Inflate(decompression). 2.1 Features ISA-L PMD has support for: Compression/Decompression algorithm: DEFLATE Huffman code type: FIXED DYNAMIC Window size support: 32K Checksum: CRC32 ADLER32 To enable a checksum in the driver, the compression and/or decompression xform structure, rte_comp_xform, must be filled with either of the CompressDev checksum flags supported. compress_xform->compress.chksum = RTE_COMP_CHECKSUM_CRC32 decompress_xform->decompress.chksum = RTE_COMP_CHECKSUM_CRC32 compress_xform->compress.chksum = RTE_COMP_CHECKSUM_ADLER32 decompress_xform->decompress.chksum = RTE_COMP_CHECKSUM_ADLER32 If you request a checksum for compression or decompression, the checksum field in the operation structure, op->output_chksum, will be filled with the checksum. Note: For the compression case above, your output buffer will need to be large enough to hold the compressed data plus a scratchpad for the checksum at the end, the scratchpad is 8 bytes for CRC32 and 4 bytes for Adler32. 3

Compression Device Drivers, Release 19.02.0-rc3 Level guide: The ISA-L levels have been mapped to somewhat correspond to the same ZLIB level, i.e. ZLIB L1 gives a compression ratio similar to ISA-L L1. Compressdev level 0 enables No Compression, which passes the uncompressed data to the output buffer, plus deflate headers. The ISA-L library does not support this, therefore compressdev level 0 is not supported. The compressdev API has 10 levels, 0-9. ISA-L has 4 levels of compression, 0-3. As a result the level mappings from the API to the PMD are shown below. Table 2.1: Level mapping from Compressdev to ISA-L PMD. Compressdev API PMD Functionality Internal ISA-L Level Level 0 No compression, Not Supported 1 Dynamic (Fast compression) 1 2 Dynamic (Higher compression 2 ratio) 3 Dynamic (Best compression ratio) 3 (Level 2 if no AVX512/AVX2) 4 Dynamic (Best compression ratio) Same as above 5 Dynamic (Best compression ratio) Same as above 6 Dynamic (Best compression ratio) Same as above 7 Dynamic (Best compression ratio) Same as above 8 Dynamic (Best compression ratio) Same as above 9 Dynamic (Best compression ratio) Same as above Note: The above table only shows mapping when API calls for dynamic compression. For fixed compression, regardless of API level, internally ISA-L level 0 is always used. 2.2 Limitations Compressdev level 0, no compression, is not supported. 2.3 Installation To build DPDK with Intel s ISA-L library, the user is required to download the library from https://github.com/01org/isa-l. Once downloaded, the user needs to build the library, the ISA-L autotools are usually sufficient:./autogen.sh./configure make can be used to install the library on their system, before building DPDK: make sudo make install To build with meson, the libisal.pc file, must be copied into pkgconfig, e.g. /usr/lib/pkgconfig or /usr/lib64/pkgconfig depending on your system, for meson to find the ISA-L library. The libisal.pc is located in library sources: 2.2. Limitations 4

Compression Device Drivers, Release 19.02.0-rc3 cp isal/libisal.pc /usr/lib/pkgconfig/ 2.4 Initialization In order to enable this virtual compression PMD, user must: Set CONFIG_RTE_LIBRTE_PMD_ISAL=y in config/common_base. To use the PMD in an application, user must: Call rte_vdev_init("compress_isal") within the application. Use --vdev="compress_isal" in the EAL options, which will call rte_vdev_init() internally. The following parameter (optional) can be provided in the previous two calls: socket_id: Specify the socket where the memory for the device is going to be allocated (by default, socket_id will be the socket where the core that is creating the PMD is running on). 2.4. Initialization 5

CHAPTER THREE OCTEON TX ZIP COMPRESSION POLL MODE DRIVER The OCTEON TX ZIP PMD (librte_pmd_octeontx_zip) provides poll mode compression & decompression driver for ZIP HW offload device, found in Cavium OCTEON TX SoC family. More information can be found at Cavium, Inc Official Website. 3.1 Features OCTEON TX ZIP PMD has support for: Compression/Decompression algorithm: DEFLATE Huffman code type: FIXED DYNAMIC Window size support: 2 to 2^14 3.2 Limitations Chained mbufs are not supported. 3.3 Supported OCTEON TX SoCs CN83xx 3.4 Steps To Setup Platform OCTEON TX SDK includes kernel image which provides OCTEON TX ZIP PF driver to manage configuration of ZIPVF device Required version of SDK is OCTEONTX-SDK-6.2.0-build35 or above. 6

Compression Device Drivers, Release 19.02.0-rc3 SDK can be install by using below command. #rpm -ivh OCTEONTX-SDK-6.2.0- build35.x86_64.rpm force nodeps It will install OCTEONTX-SDK at following default location /usr/local/cavium_networks/octeontx-sdk/ For more information on building and booting linux kernel on OCTEON TX please refer /usr/local/cavium_networks/octeontx-sdk/docs/octeontx-sdk- UG_6.2.0.pdf. SDK and related information can be obtained from: Cavium support site. 3.5 Installation 3.5.1 Driver Compilation To compile the OCTEON TX ZIP PMD for Linux arm64 gcc target, run the following make command: cd <DPDK-source-directory> make config T=arm64-thunderx-linuxapp-gcc install 3.6 Initialization The OCTEON TX zip is exposed as pci device which consists of a set of PCIe VF devices. On EAL initialization, ZIP PCIe VF devices will be probed. To use the PMD in an application, user must: run dev_bind script to bind eight ZIP PCIe VFs to the vfio-pci driver:./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.1./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.2./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.3./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.4./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.5./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.6./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.7./usertools/dpdk-devbind.py -b vfio-pci 0001:04:01.0 The unit test cases can be tested as below: reserve enough huge pages cd to the top-level DPDK directory export RTE_TARGET=arm64-thunderx-linuxapp-gcc export RTE_SDK=`pwd` cd to test/test type the command "make" to compile run the tests with "./test" type the command "compressdev_autotest" to test 3.5. Installation 7

CHAPTER FOUR INTEL(R) QUICKASSIST (QAT) COMPRESSION POLL MODE DRIVER The QAT compression PMD provides poll mode compression & decompression driver support for the following hardware accelerator devices: Intel QuickAssist Technology C62x Intel QuickAssist Technology C3xxx Intel QuickAssist Technology DH895x 4.1 Features QAT compression PMD has support for: Compression/Decompression algorithm: DEFLATE - using Fixed and Dynamic Huffman encoding Window size support: 32K Checksum generation: CRC32, Adler and combined checksum 4.2 Limitations Compressdev level 0, no compression, is not supported. Queue pairs are not thread-safe (that is, within a single queue pair, RX and TX from different lcores is not supported). No BSD support as BSD QAT kernel driver not available. Number of segments in mbuf chains in the op must be <= RTE_PMD_QAT_COMP_SGL_MAX_SEGMENTS from the config file. When using Deflate dynamic huffman encoding for compression, the input size (op.src.length) must be < CONFIG_RTE_PMD_QAT_COMP_IM_BUFFER_SIZE from the config file, see building_qat_config for more details. 8

Compression Device Drivers, Release 19.02.0-rc3 4.3 Installation The QAT compression PMD is built by default with a standard DPDK build. It depends on a QAT kernel driver, see building_qat. 4.3. Installation 9

CHAPTER FIVE ZLIB COMPRESSION POLL MODE DRIVER The ZLIB PMD (librte_pmd_zlib) provides poll mode compression & decompression driver based on SW zlib library, 5.1 Features ZLIB PMD has support for: Compression/Decompression algorithm: DEFLATE Huffman code type: FIXED DYNAMIC Window size support: Min - 256 bytes Max - 32K 5.2 Limitations Scatter-Gather and Stateful not supported. 5.3 Installation To build DPDK with ZLIB library, the user is required to download the libz library. Use following command for installation. For Fedora users:: sudo yum install zlib-devel For Ubuntu users:: sudo apt-get install zlib1g-dev Once downloaded, the user needs to build the library. To build from sources download zlib sources from http://zlib.net/ and do following before building DPDK: 10

Compression Device Drivers, Release 19.02.0-rc3 make sudo make install 5.4 Initialization In order to enable this virtual compression PMD, user must: Set CONFIG_RTE_LIBRTE_PMD_ZLIB=y in config/common_base. To use the PMD in an application, user must: Call rte_vdev_init("compress_zlib") within the application. Use --vdev="compress_zlib" in the EAL options, which will call rte_vdev_init() internally. The following parameter (optional) can be provided in the previous two calls: socket_id: Specify the socket where the memory for the device is going to be allocated (by default, socket_id will be the socket where the core that is creating the PMD is running on). 5.4. Initialization 11