Category

Blog

DPDK Community Lab Publishes Relative Performance Testing Results

By | Blog

By Jeremy Plsek, Lincoln LaVoie and Patrick MacArthur

The DPDK Community Lab is an open, independent testing resource for the DPDK project. Its purpose is to perform automated testing on incoming patch submissions, to ensure the performance and quality of DPDK is maintained. Participation in the lab is open to all DPDK project participants.

For some time now, the DPDK Community Lab has been gathering performance deltas using the single-core packet I/O layer 2 throughput test from DTS for each patch series submitted to DPDK compared to the master branch. We are pleased to announce that the  Lab has recently been allowed to make these results public. These results are also now published to Patchwork as they are automatically generated. These results currently contain Mellanox and Intel devices, and the lab is able to support hardware from any DPDK participants wishing to support these testing efforts.

To view these results, you can go to DPDK Community Lab Dashboard via the following link: https://lab.dpdk.org. The dashboard lists an overview of all active patch series and their results. Detailed results can be viewed by clicking on the patch series. If a patch fails to merge into master, a build log will show to help identify any issues. If a patch cleanly merges into master, performance delta results will show for each participating member.

The Lab is hosted by the University of New Hampshire InterOperability Laboratory, as a neutral, third party location. This provides a secure environment for hosting equipment and generating unbiased results for all participating vendors. Lab participants, i.e. companies hosting equipment in the testing, can securely access their equipment through a VPN, allowing for maintenance and performance tuning, as the DPDK project progresses.

The Lab works by polling the Patchwork API. When new patches are submitted, the CI server merges them with the master branch and generates a tarball. Each participating system unpacks and installs the DPDK tarball and then runs the performance testing against this DPDK build. When all systems have finished testing, the CI gathers the results into our internal database to be shown on the Dashboard, and sends final reports to Patchwork to show up on the submitted patch. This allows patch submitters to utilize Patchwork to view their individual results, while also allowing anyone to quickly see an overview of results on the Dashboard. The system provides maintainers with positive confirmation of the stability and performance of the overall project.

In the future, we plan to open the Lab to more testing scenarios, such as performance testing of other features, beyond single-core packet I/O layer 2 throughput, and possibly running Unit Tests for DPDK. Additional features will be added to the Dashboard, such as showing graphs of the performance changes of master over time.

If your company would like to be involved, email the Continuous Integration group at ci@dpdk.org and dpdklab@iol.unh.edu.

First DPDK Community Awards Shine Spotlight on Teamwork, Collaboration

By | Blog

As the DPDK community continues to make strides, we’d like to take some time to reflect upon successes of the past year and announce the winners of the inaugural DPDK Community Awards, acknowledging individual and team contributions to the success of the project. We have an amazing community that has been working hard to ensure DPDK’s success, so please join us in taking a moment to thank and congratulate each of our winners, and the entire developer community at large.  

Winners were recognized September 5th at the DPDK Userspace event in Dublin, Ireland. Details about each award category and its winners appear below. Please join us in congratulating all of our nominees and winners!

DPDK Project Service Award: Thomas Monjalon
The community would like to recognize Thomas for his tireless work across many groups through the entire DPDK community. Thomas has been DPDK’’s primary maintainer since the open source project was established in 2013 and works in the background to keep the projects’ CI/CD infrastructure moving smoothly. Additionally, Thomas played a crucial role in designing the updated DPDK website.

DPDK Top Ambassador: Jim St. Leger
Jim’s passion for the project is unparalleled. He continues to champion and evangelize DPDK across a variety of mediums, regularly speaks on behalf of the project, and recently briefed a handful of industry media and analysts about the project.  

Innovation: Berkeley Packet Filter library (BPF)
Konstantin Ananyev showed great initiative in creating an eBPF library for DPDK. This represents another step towards combining the best of DPDK and the kernel.  

Innovation: Compression API
Thanks to Shally Verma, Fiona Trahe, Lee Daly, Pablo de Lara Guarch and Ahmed Mansour, Compression API was a great collaborative, cross-vendor initiative to create a new acceleration API which helps to expand DPDK’s reach into new use cases such as storage.

Innovation: Virtio 1.1
Congratulations to Tiwei Bie, Maxime Coquelin, Jens Freimann, Yuanhan Liu, and Jason Wang. This was another great collaborative effort to adopt the new Virtio 1.1 standard in DPDK, leading to a significant boost in performance in virtualized environments.

Contribution (Code):  Anatoly Burakov
Not only does Anatoly regularly and consistently contribute high-quality code, but his significant work in developing a memory hotplug resulted in a significant improvement to the project’s memory management subsystem.

Contribution (Documentation):  John McNamara
John’s work with DPDK documentation has not gone unnoticed by the community. He has taken on the job of main documentation maintainer, and does a lot of crucial organization and clean-up of the docs for each release.

Contribution (Maintainer): Thomas Monjalon
Thomas has been DPDK’s primary maintainer since the open source project was established in 2013 and works in the background to keep the projects’ CI/CD infrastructure moving smoothly.

Contribution (Reviews):  Ferruh Yigit
Ferruh is known throughout the DPDK community for his deep review work, which is consistently efficient and beyond helpful.

Contribution (Testing): Intel Validation Team
Thank you to the Intel Validation team for testing each major DPDK release, and for open sourcing and maintaining the DPDK Test Suite (DTS).

 

 

First release of a DPDK stable branch

By | Blog

Originally posted by Yuanhan Liu yuanhan.liu at linux.intel.com on the dpdk-stable mailing list


Hi all,

Please join me in announcing the first DPDK stable release:
	http://fast.dpdk.org/rel/dpdk-16.07.1.tar.xz

It includes most bug fixing patches before v16.11-rc1. Few
are missed in this release window and will be carried in
the next stable release.

Thanks.

	--yliu

---
 app/test-pmd/cmdline.c                             |   2 +-
 app/test-pmd/testpmd.c                             |  10 +-
 app/test/test_cryptodev.c                          |  14 +--
 buildtools/pmdinfogen/pmdinfogen.c                 |   2 +-
 doc/guides/rel_notes/release_16_07.rst             |  50 +++++++++
 drivers/crypto/kasumi/rte_kasumi_pmd.c             |   8 +-
 drivers/crypto/null/null_crypto_pmd_ops.c          |   2 +-
 drivers/crypto/qat/qat_adf/icp_qat_fw.h            |   2 +-
 drivers/crypto/snow3g/rte_snow3g_pmd.c             |   8 +-
 drivers/net/e1000/igb_rxtx.c                       |   2 +-
 drivers/net/enic/base/vnic_dev.c                   |  36 ++++---
 drivers/net/enic/enic_rxtx.c                       |   5 +-
 drivers/net/fm10k/fm10k_ethdev.c                   |   5 +
 drivers/net/i40e/base/i40e_common.c                |   2 +-
 drivers/net/i40e/i40e_ethdev.c                     |  37 ++++---
 drivers/net/i40e/i40e_rxtx.c                       |  15 ++-
 drivers/net/i40e/i40e_rxtx_vec.c                   |  16 ++-
 drivers/net/ixgbe/base/ixgbe_common.c              | 113 ++++++++++++---------
 drivers/net/ixgbe/base/ixgbe_common.h              |   1 +
 drivers/net/ixgbe/base/ixgbe_vf.c                  |  13 +--
 drivers/net/ixgbe/base/ixgbe_x550.c                |  57 +++--------
 drivers/net/ixgbe/base/ixgbe_x550.h                |   2 -
 drivers/net/ixgbe/ixgbe_ethdev.c                   |  12 ++-
 drivers/net/ixgbe/ixgbe_rxtx_vec_common.h          |  16 ++-
 drivers/net/mlx4/mlx4.c                            |   8 +-
 drivers/net/mlx5/mlx5.c                            |   8 +-
 drivers/net/mlx5/mlx5.h                            |   8 +-
 drivers/net/mlx5/mlx5_ethdev.c                     |   4 +-
 drivers/net/mlx5/mlx5_fdir.c                       |   8 +-
 drivers/net/mlx5/mlx5_mac.c                        |   8 +-
 drivers/net/mlx5/mlx5_mr.c                         |   8 +-
 drivers/net/mlx5/mlx5_prm.h                        |   4 +-
 drivers/net/mlx5/mlx5_rss.c                        |   8 +-
 drivers/net/mlx5/mlx5_rxmode.c                     |   8 +-
 drivers/net/mlx5/mlx5_rxq.c                        |   8 +-
 drivers/net/mlx5/mlx5_rxtx.c                       |   8 +-
 drivers/net/mlx5/mlx5_rxtx.h                       |   8 +-
 drivers/net/mlx5/mlx5_stats.c                      |   4 +-
 drivers/net/mlx5/mlx5_trigger.c                    |   4 +-
 drivers/net/mlx5/mlx5_txq.c                        |   8 +-
 drivers/net/mlx5/mlx5_vlan.c                       |   4 +-
 drivers/net/nfp/nfp_net.c                          |   4 +-
 drivers/net/pcap/rte_eth_pcap.c                    |   4 +-
 drivers/net/virtio/virtio_ethdev.c                 |   8 +-
 drivers/net/virtio/virtio_user/virtio_user_dev.c   | 112 ++++++++++++--------
 drivers/net/virtio/virtio_user_ethdev.c            |  42 +++++---
 examples/ip_pipeline/config/diagram-generator.py   |   2 +-
 .../ip_pipeline/config/pipeline-to-core-mapping.py |   2 +-
 examples/ip_pipeline/cpu_core_map.c                |   8 ++
 lib/librte_eal/bsdapp/contigmem/contigmem.c        |   8 +-
 lib/librte_eal/common/eal_common_pci.c             |   1 +
 lib/librte_eal/common/include/rte_version.h        |   2 +-
 lib/librte_eal/linuxapp/eal/eal_memory.c           |  13 +--
 lib/librte_hash/rte_cuckoo_hash.c                  |  12 ++-
 lib/librte_mbuf/rte_mbuf.c                         |   8 +-
 lib/librte_mempool/rte_mempool.c                   |   2 +-
 lib/librte_sched/rte_sched.c                       |  18 ++--
 lib/librte_table/rte_table_version.map             |   3 +
 lib/librte_timer/rte_timer.c                       |   2 +-
 pkg/dpdk.spec                                      |   2 +-
 tools/dpdk-devbind.py                              |  11 +-
 tools/dpdk-pmdinfo.py                              |   2 +-
 62 files changed, 495 insertions(+), 317 deletions(-)


Alejandro Lucero (1):
      net/nfp: fix copying MAC address

Aleksey Katargin (1):
      table: fix symbol exports

Alex Zelezniak (1):
      net/ixgbe: fix VF reset to apply to correct VF

Ali Volkan Atli (1):
      net/e1000: fix returned number of available Rx descriptors

Arek Kusztal (1):
      app/test: fix verification of digest for GCM

Beilei Xing (2):
      net/i40e: fix dropping packets with ethertype 0x88A8
      net/i40e: fix parsing QinQ packets type

Bruce Richardson (1):
      net/mlx: fix debug build with gcc 6.1

Christian Ehrhardt (1):
      examples/ip_pipeline: fix Python interpreter

Deepak Kumar Jain (2):
      crypto/null: fix key size increment value
      crypto/qat: fix FreeBSD build

Dror Birkman (1):
      net/pcap: fix memory leak in jumbo frames

Ferruh Yigit (2):
      app/testpmd: fix help of MTU set commmand
      pmdinfogen: fix clang build

Gary Mussar (1):
      tools: fix virtio interface name when binding

Gowrishankar Muthukrishnan (1):
      examples/ip_pipeline: fix lcore mapping for ppc64

Hiroyuki Mikita (1):
      sched: fix releasing enqueued packets

James Poole (1):
      app/testpmd: fix timeout in Rx queue flushing

Jianfeng Tan (3):
      net/virtio_user: fix first queue pair without multiqueue
      net/virtio_user: fix wrong sequence of messages
      net/virtio_user: fix error management during init

Jim Harris (1):
      contigmem: zero all pages during mmap

John Daley (1):
      net/enic: fix bad L4 checksum flag on ICMP packets

Karmarkar Suyash (1):
      timer: fix lag delay

Maciej Czekaj (1):
      mem: fix crash on hugepage mapping error

Nelson Escobar (1):
      net/enic: fix freeing memory for descriptor ring

Olivier Matz (4):
      app/testpmd: fix crash when mempool allocation fails
      tools: fix json output of pmdinfo
      mbuf: fix error handling on pool creation
      mem: fix build with -O1

Pablo de Lara (3):
      hash: fix ring size
      hash: fix false zero signature key hit lookup
      crypto: fix build with icc

Qi Zhang (1):
      net/i40e/base: fix UDP packet header

Rich Lane (1):
      net/i40e: fix null pointer dereferences when using VMDq+RSS

Weiliang Luo (1):
      mempool: fix corruption due to invalid handler

Xiao Wang (5):
      net/fm10k: fix MAC address removal from switch
      net/ixgbe/base: fix pointer check
      net/ixgbe/base: fix check for NACK
      net/ixgbe/base: fix possible corruption of shadow RAM
      net/ixgbe/base: fix skipping PHY config

Yangchao Zhou (1):
      pci: fix memory leak when detaching device

Yuanhan Liu (1):
      version: 16.07.1

Yury Kylulin (2):
      net/ixgbe: fix mbuf leak during Rx queue release
      net/i40e: fix mbuf leak during Rx queue release

Zhiyong Yang (1):
      net/virtio: fix xstats name