From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by dpdk.org (Postfix) with ESMTP id 530801B1F9 for ; Wed, 11 Oct 2017 22:42:28 +0200 (CEST) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id E56A42141C; Wed, 11 Oct 2017 16:42:27 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute1.internal (MEProxy); Wed, 11 Oct 2017 16:42:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=mesmtp; bh=xbCbvmHjiDiF3VwlJ3x6Q7um5F 5cVKlDVaWse253jfo=; b=gNEX6yt9jbkHXMXA94Xa4kaIInKbwq89yDlhjqoJ7i p9jrCMaZtFE7ZTlrZvnrBuqwARJHoIUYH1M1HI8oEAW296kyhhwBZh8AdGjjDBc8 rx9YLVeYiduPTpARTBBgPA97o9zcDcCk9OyRw5t3FEX95dFkrudOWFrKh+THsyHO g= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=xbCbvm HjiDiF3VwlJ3x6Q7um5F5cVKlDVaWse253jfo=; b=Q0uGV3d5ufl2WnZGf4ey9l eHhMjf528cEQpqKvBVd/am+r3xPadfZOM4d3Avjaj3JEiNrRG0LJUuVixqriUEgZ wcsEYCQAHflZdZ6IgbpeLWVKYP0zg5juMCJYYRhTUGDHFsUoTdsS6TySUk+M/bWk IkydrEQegv2ZCzivzOYO3208C4d+Qymq9OTZytrRvEuIsm3soZnN7ej8dJmStTA0 0p3/z35U+rrrUKdE/SP4GLJKYyZoIolULfzKKJzr2TtInQ3yQtnlu2xp7V89yWKw Wx2lt0JNkIJFDFnk3OhaVaJXqrQKkDPFLU64nBpxcvtYdOG0QFoalnI39Ety/ynQ == X-ME-Sender: Received: from xps.localnet (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id 94A857E3E2; Wed, 11 Oct 2017 16:42:27 -0400 (EDT) From: Thomas Monjalon To: rsanford@akamai.com Cc: dev@dpdk.org, Erik Gabriel Carrillo , john.mcnamara@intel.com Date: Wed, 11 Oct 2017 22:42:26 +0200 Message-ID: <53861185.JAf0AvXReA@xps> In-Reply-To: <1505840548-77004-1-git-send-email-erik.g.carrillo@intel.com> References: <1505340308-86141-1-git-send-email-erik.g.carrillo@intel.com> <1505840548-77004-1-git-send-email-erik.g.carrillo@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Subject: Re: [dpdk-dev] [PATCH v4 0/3] timer library enhancement 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: , X-List-Received-Date: Wed, 11 Oct 2017 20:42:28 -0000 This patchset is waiting for review. Robert, are you available? 19/09/2017 19:02, Erik Gabriel Carrillo: > In the current implementation of the DPDK timer library, timers can be > created and set to be handled by a target lcore by adding it to a > skiplist that corresponds to that lcore. However, if an application > enables multiple lcores, and each of these lcores repeatedly attempts > to install timers on the same target lcore, overall application > throughput will be reduced as all lcores contend to acquire the lock > guarding the single skiplist of pending timers. > > This patchset addresses this scenario by adding an option to enable an > array of skiplists in each lcore's priv_timer struct. Then, when lcore i > installs a timer on lcore k, the timer will be added to the ith skiplist > for lcore k. If lcore j installs a timer on lcore k simultaneously, > lcores i and j can both proceed since they will be acquiring different > locks for different lists. This functionality is off by default, and > can be enabled via a new function. > > When lcore k processes its pending timers, if the multiple pending list > option is enabled, it will traverse skiplists in its array and acquire > the current skiplist's lock while a run list is broken out; meanwhile, > all other lists can continue to be modified. Then, all run lists for > lcore k are collected and traversed together so timers are executed in > their relative order. If the multiple pending list option is not enabled > (the default), only a single list will be traversed, as before. > > Erik Gabriel Carrillo (3): > timer: add multiple pending lists option for each lcore > timer: handle timers installed from non-EAL threads > doc: update timer lib docs