From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 0601968B9 for ; Thu, 22 May 2014 18:56:03 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP; 22 May 2014 09:52:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.98,888,1392192000"; d="scan'208";a="536135175" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga001.fm.intel.com with ESMTP; 22 May 2014 09:56:12 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id s4MGuBlf017199; Thu, 22 May 2014 17:56:11 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id s4MGuBxI001053; Thu, 22 May 2014 17:56:11 +0100 Received: (from kananye1@localhost) by sivswdev02.ir.intel.com with id s4MGuAtj001048; Thu, 22 May 2014 17:56:10 +0100 From: Konstantin Ananyev To: dev@dpdk.org Date: Thu, 22 May 2014 17:55:40 +0100 Message-Id: <1400777742-498-1-git-send-email-konstantin.ananyev@intel.com> X-Mailer: git-send-email 1.7.0.7 To: dev@dpdk.org Subject: [dpdk-dev] [PATCH 0/2] L3FWD sample optimisation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 May 2014 16:56:04 -0000 With latest HW and optimised RX/TX path there is a huge gap between tespmd iofwd and l3fwd performance results. So there is an attempt to optimise l3fwd LPM code path and reduce the gap: - Instead of processing each input packet up to completion - divide packet processing into several stages and perform stage by stage for the whole burst. - Unroll things by the factor of 4 whenever possible. - Use SSE instincts for some operations (bswap, replace MAC addresses, etc). - Avoid TX packet buffering whenever possible. - Move some checks from RX/TX into setup phase. app/test/test_lpm.c | 70 ++++ examples/l3fwd/main.c | 467 +++++++++++++++++++++- lib/librte_eal/common/Makefile | 1 + lib/librte_eal/common/include/rte_common_vect.h | 93 +++++ lib/librte_lpm/rte_lpm.h | 117 ++++++ 5 files changed, 726 insertions(+), 22 deletions(-) create mode 100644 lib/librte_eal/common/include/rte_common_vect.h -- 1.7.7.6