From patchwork Wed Jun 19 15:14:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Carrillo, Erik G" X-Patchwork-Id: 54952 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 03BCC2BEA; Wed, 19 Jun 2019 17:14:23 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id A58C21C34E for ; Wed, 19 Jun 2019 17:14:21 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jun 2019 08:14:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,392,1557212400"; d="scan'208";a="153833087" Received: from wcpqa1.an.intel.com ([10.123.72.207]) by orsmga008.jf.intel.com with ESMTP; 19 Jun 2019 08:14:18 -0700 From: Erik Gabriel Carrillo To: jerin.jacob@caviumnetworks.com Cc: mattias.ronnblom@ericsson.com, pbhagavatula@caviumnetworks.com, Honnappa.Nagarahalli@arm.com, dev@dpdk.org Date: Wed, 19 Jun 2019 10:14:29 -0500 Message-Id: <1560957270-56531-1-git-send-email-erik.g.carrillo@intel.com> X-Mailer: git-send-email 1.7.10 In-Reply-To: <1556291660-12373-1-git-send-email-erik.g.carrillo@intel.com> References: <1556291660-12373-1-git-send-email-erik.g.carrillo@intel.com> Subject: [dpdk-dev] [PATCH v7 0/1] New software event timer adapter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch introduces a new version of the event timer adapter software PMD [1]. In the original design, timer event producer lcores in the primary and secondary processes enqueued event timers into a ring, and a service core in the primary process dequeued them and processed them further. To improve performance, this version does away with the ring and lets lcores in both primary and secondary processes insert timers directly into timer skiplist data structures; the service core directly accesses the lists as well, when looking for timers that have expired. [1] https://doc.dpdk.org/guides/prog_guide/event_timer_adapter.html Changes in v7: - Remove unecessary lock protecting array of lcore ids whose timer lists should be processed in service function, and the count of elements in that array. - When adding rte_timers to a buffer to be freed later, first check if the buffer is full and empty it before adding a new element. - Update commit log with command used to compare performance, and amount of improvement seen. (Jerin) Changes in v6: - Fix implicit type conversion bug that caused full event buffer to sometimes not be correctly detected, resulting in lost events - Check return value of alt_timer_reset when resetting timer in event buffer full condition - Add timer list corresponding to service core to set of lists to scan when timers are reset by service core in event buffer full condition Changes in v5: - Rebase patch to apply with latest timer library - Fix event buffering bug where full buffer was treated as empty - Return rte_timer objects back to mempool after service function has returned from timer_manage() call instead of in callback Changes in v4: - Addressed the following comments from Mattias Ronnblom: - remove unnecessary header include - add missing read barrier in timer cancel function Changes in v3: - Addressed comments from Mattias Ronnblom: - remove unnecessary header include - remove unnecessary cast in mempool_put() call - update alignment of elements of array to avoid false sharing issue Changes in v2: - split this change out into its own patch series Erik Gabriel Carrillo (1): eventdev: add new software event timer adapter lib/librte_eventdev/rte_event_timer_adapter.c | 741 +++++++++++--------------- 1 file changed, 322 insertions(+), 419 deletions(-)