All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
Cc: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
	"paulmck@linux.ibm.com" <paulmck@linux.ibm.com>,
	"Kovacevic, Marko" <marko.kovacevic@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	"Gavin Hu (Arm Technology China)" <Gavin.Hu@arm.com>,
	Dharmik Thakkar <Dharmik.Thakkar@arm.com>,
	Malvika Gupta <Malvika.Gupta@arm.com>, nd <nd@arm.com>
Subject: Re: [dpdk-dev] [PATCH v5 1/3] rcu: add RCU library supporting QSBR mechanism
Date: Tue, 16 Apr 2019 07:54:15 -0700	[thread overview]
Message-ID: <20190416075415.76c9d64a@xps13.lan> (raw)
In-Reply-To: <VE1PR08MB5149AA5C4CAC61DB42E286CF98240@VE1PR08MB5149.eurprd08.prod.outlook.com>

On Tue, 16 Apr 2019 05:29:21 +0000
Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> wrote:

> > > > > > > > On Fri, 12 Apr 2019 15:20:37 -0500 Honnappa Nagarahalli
> > > > > > > > <honnappa.nagarahalli@arm.com> wrote:
> > > > > > > >  
> > > > > > > > > Add RCU library supporting quiescent state based memory
> > > > > > > > > reclamation  
> > > > > > > > method.  
> > > > > > > > > This library helps identify the quiescent state of the
> > > > > > > > > reader threads so that the writers can free the memory
> > > > > > > > > associated with the lock less data structures.
> > > > > > > > >
> > > > > > > > > Signed-off-by: Honnappa Nagarahalli
> > > > > > > > > <honnappa.nagarahalli@arm.com>
> > > > > > > > > Reviewed-by: Steve Capper <steve.capper@arm.com>
> > > > > > > > > Reviewed-by: Gavin Hu <gavin.hu@arm.com>
> > > > > > > > > Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
> > > > > > > > > Acked-by: Konstantin Ananyev
> > > > > > > > > <konstantin.ananyev@intel.com>  
> > > > > > > >
> > > > > > > > After evaluating long term API/ABI issues, I think you need
> > > > > > > > to get rid of almost all use of inline and visible
> > > > > > > > structures. Yes it might be marginally slower, but you thank me  
> > the first time you have to fix something.  
> > > > > > > >  
> > > > > > > Agree, I was planning on another version to address this (I am yet  
> > to take a look at your patch addressing the ABI).  
> > > > > > > The structure visibility definitely needs to be addressed.
> > > > > > > For the inline functions, is the plan to convert all the
> > > > > > > inline functions in DPDK? If yes, I think we need to consider
> > > > > > > the performance  
> > > > > > difference. May be consider L3-fwd application, change all the  
> > inline functions in its path and run a test?  
> > > > > >
> > > > > > Every function that is not in the direct datapath should not be  
> > inline.  
> > > > > > Exceptions or things like rx/tx burst, ring enqueue/dequeue, and
> > > > > > packet alloc/free  
> I do not understand how DPDK can claim ABI compatibility if we have inline functions (unless we freeze any development in these inline functions forever).
> 
> > > > >
> > > > > Plus synchronization routines: spin/rwlock/barrier, etc.
> > > > > I think rcu should be one of such exceptions - it is just another
> > > > > synchronization mechanism after all (just a bit more sophisticated).
> > > > > Konstantin  
> > > >
> > > > If you look at the other userspace RCU, you wil see that the only
> > > > inlines are the rcu_read_lock,rcu_read_unlock and  
> > rcu_reference/rcu_assign_pointer.  
> > > >
> > > > The synchronization logic is all real functions.  
> > >
> > > In fact, I think urcu provides both flavors:
> > > https://github.com/urcu/userspace-  
> > rcu/blob/master/include/urcu/static/  
> > > urcu-qsbr.h I still don't understand why we have to treat it
> > > differently then let say spin-lock/ticket-lock or rwlock.
> > > If we gone all the way to create our own version of rcu, we probably
> > > want it to be as fast as possible (I know that main speedup should
> > > come from the fact that readers don't have to wait for writer to
> > > finish, but still...)
> > >
> > > Konstantin
> > >  
> > 
> > Having locking functions inline is already a problem in current releases.
> > The implementation can not be improved without breaking ABI (or doing
> > special workarounds like lock v2)  
> I think ABI and inline function discussion needs to be taken up in a different thread.
> 
> Currently, I am looking to hide the structure visibility. I looked at your patch [1], it is a different case than what I have in this patch. It is a pretty generic use case as well (similar situation exists in other libraries). I think a generic solution should be agreed upon.
> 
> If we have to hide the structure content, the handle to QS variable returned to the application needs to be opaque. I suggest using 'void *' behind which any structure can be used.
> 
> typedef void * rte_rcu_qsbr_t;
> typedef void * rte_hash_t;
> 
> But it requires typecasting.
> 
> [1] http://patchwork.dpdk.org/cover/52609/

C allows structure to be defined without knowing what is in it
therefore.

typedef struct rte_rcu_qsbr rte_rcu_qsbr_t;

is preferred (or do it without typedef)

struct rte_rcu_qsbr;

  reply	other threads:[~2019-04-16 14:54 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20181122073110eucas1p17592400af6c0b807dc87e90d136575af@eucas1p1.samsung.com>
2018-11-22  3:30 ` [RFC 0/3] tqs: add thread quiescent state library Honnappa Nagarahalli
2018-11-22  3:30   ` [RFC 1/3] log: add TQS log type Honnappa Nagarahalli
2018-11-27 22:24     ` Stephen Hemminger
2018-11-28  5:58       ` Honnappa Nagarahalli
2018-11-22  3:30   ` [RFC 2/3] tqs: add thread quiescent state library Honnappa Nagarahalli
2018-11-24 12:18     ` Ananyev, Konstantin
2018-11-27 21:32       ` Honnappa Nagarahalli
2018-11-28 15:25         ` Ananyev, Konstantin
2018-12-07  7:27           ` Honnappa Nagarahalli
2018-12-07 17:29             ` Stephen Hemminger
2018-12-11  6:40               ` Honnappa Nagarahalli
2018-12-13 12:26                 ` Burakov, Anatoly
2018-12-18  4:30                   ` Honnappa Nagarahalli
2018-12-18  6:31                     ` Stephen Hemminger
2018-12-12  9:29             ` Ananyev, Konstantin
2018-12-13  7:39               ` Honnappa Nagarahalli
2018-12-17 13:14                 ` Ananyev, Konstantin
2018-11-22  3:30   ` [RFC 3/3] test/tqs: Add API and functional tests Honnappa Nagarahalli
2018-11-22  7:31   ` [RFC 0/3] tqs: add thread quiescent state library Ilya Maximets
2018-11-27 22:28   ` Stephen Hemminger
2018-11-27 22:49     ` Van Haaren, Harry
2018-11-28  5:31       ` Honnappa Nagarahalli
2018-11-28 23:23         ` Stephen Hemminger
2018-11-30  2:13           ` Honnappa Nagarahalli
2018-11-30 16:26             ` Luca Boccassi
2018-11-30 18:32               ` Stephen Hemminger
2018-11-30 20:20               ` Honnappa Nagarahalli
2018-11-30 20:56             ` Mattias Rönnblom
2018-11-30 23:44               ` Stephen Hemminger
2018-12-01 18:37                 ` Honnappa Nagarahalli
2018-11-30  2:25       ` Honnappa Nagarahalli
2018-11-30 21:03         ` Mattias Rönnblom
2018-12-22  2:14   ` [RFC v2 0/2] rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2018-12-22  2:14     ` [RFC v2 1/2] " Honnappa Nagarahalli
2019-01-15 11:39       ` Ananyev, Konstantin
2019-01-15 20:43         ` Honnappa Nagarahalli
2019-01-16 15:56           ` Ananyev, Konstantin
2019-01-18  6:48             ` Honnappa Nagarahalli
2019-01-18 12:14               ` Ananyev, Konstantin
2019-01-24 17:15                 ` Honnappa Nagarahalli
2019-01-24 18:05                   ` Ananyev, Konstantin
2019-02-22  7:07                     ` Honnappa Nagarahalli
2018-12-22  2:14     ` [RFC v2 2/2] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2018-12-23  7:30       ` Stephen Hemminger
2018-12-23 16:25         ` Paul E. McKenney
2019-01-18  7:04           ` Honnappa Nagarahalli
2019-02-22  7:04     ` [RFC v3 0/5] rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-02-22  7:04       ` [RFC v3 1/5] " Honnappa Nagarahalli
2019-02-22  7:04       ` [RFC v3 2/5] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-02-22  7:04       ` [RFC v3 3/5] lib/rcu: add dynamic memory allocation capability Honnappa Nagarahalli
2019-02-22  7:04       ` [RFC v3 4/5] test/rcu_qsbr: modify test cases for dynamic memory allocation Honnappa Nagarahalli
2019-02-22  7:04       ` [RFC v3 5/5] lib/rcu: fix the size of register thread ID array size Honnappa Nagarahalli
2019-03-19  4:52   ` [PATCH 0/3] lib/rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-03-19  4:52     ` [PATCH 1/3] rcu: " Honnappa Nagarahalli
2019-03-22 16:42       ` Ananyev, Konstantin
2019-03-26  4:35         ` Honnappa Nagarahalli
2019-03-28 11:15           ` Ananyev, Konstantin
2019-03-29  5:54             ` Honnappa Nagarahalli
2019-03-19  4:52     ` [PATCH 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-03-19  4:52     ` [PATCH 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-03-25 11:34       ` Kovacevic, Marko
2019-03-26  4:43         ` Honnappa Nagarahalli
2019-03-27  5:52   ` [PATCH v2 0/3] lib/rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-03-27  5:52     ` [PATCH v2 1/3] rcu: " Honnappa Nagarahalli
2019-03-27  5:52     ` [PATCH v2 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-03-27  5:52     ` [PATCH v2 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-01 17:10   ` [PATCH v3 0/3] lib/rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-04-01 17:11     ` [PATCH v3 1/3] rcu: " Honnappa Nagarahalli
2019-04-02 10:22       ` Ananyev, Konstantin
2019-04-02 10:53         ` Ananyev, Konstantin
2019-04-01 17:11     ` [PATCH v3 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-04-02 10:55       ` Ananyev, Konstantin
2019-04-01 17:11     ` [PATCH v3 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-10 11:20   ` [dpdk-dev] [PATCH v4 0/3] lib/rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-04-10 11:20     ` [dpdk-dev] [PATCH v4 1/3] rcu: " Honnappa Nagarahalli
2019-04-10 18:14       ` Paul E. McKenney
2019-04-11  4:35         ` Honnappa Nagarahalli
2019-04-11 15:26           ` Paul E. McKenney
2019-04-12 20:21             ` Honnappa Nagarahalli
2019-04-15 16:51               ` Ananyev, Konstantin
2019-04-15 19:46                 ` Honnappa Nagarahalli
2019-04-10 11:20     ` [dpdk-dev] [PATCH v4 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-04-10 15:26       ` Stephen Hemminger
2019-04-10 16:15         ` Honnappa Nagarahalli
2019-04-10 11:20     ` [dpdk-dev] [PATCH v4 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-12 20:20   ` [dpdk-dev] [PATCH v5 0/3] lib/rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-04-12 20:20     ` [dpdk-dev] [PATCH v5 1/3] rcu: " Honnappa Nagarahalli
2019-04-12 22:06       ` Stephen Hemminger
2019-04-12 22:24         ` Honnappa Nagarahalli
2019-04-12 23:06           ` Stephen Hemminger
2019-04-15 12:24             ` Ananyev, Konstantin
2019-04-15 15:38               ` Stephen Hemminger
2019-04-15 17:39                 ` Ananyev, Konstantin
2019-04-15 18:56                   ` Honnappa Nagarahalli
2019-04-15 21:26                   ` Stephen Hemminger
2019-04-16  5:29                     ` Honnappa Nagarahalli
2019-04-16 14:54                       ` Stephen Hemminger [this message]
2019-04-16 16:56                         ` Honnappa Nagarahalli
2019-04-16 21:22                           ` Stephen Hemminger
2019-04-17  1:45                             ` Honnappa Nagarahalli
2019-04-17 13:39                               ` Ananyev, Konstantin
2019-04-17 14:02                                 ` Honnappa Nagarahalli
2019-04-17 14:18                                 ` Thomas Monjalon
2019-04-12 20:20     ` [dpdk-dev] [PATCH v5 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-04-12 20:20     ` [dpdk-dev] [PATCH v5 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-15 17:29     ` [dpdk-dev] [PATCH v5 0/3] lib/rcu: add RCU library supporting QSBR mechanism Ananyev, Konstantin
2019-04-16  5:10       ` Honnappa Nagarahalli
2019-04-17  4:13   ` [dpdk-dev] [PATCH v6 " Honnappa Nagarahalli
2019-04-17  4:13     ` [dpdk-dev] [PATCH v6 1/3] rcu: " Honnappa Nagarahalli
2019-04-19 19:19       ` Paul E. McKenney
2019-04-23  1:08         ` Honnappa Nagarahalli
2019-04-17  4:13     ` [dpdk-dev] [PATCH v6 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-04-17  4:13     ` [dpdk-dev] [PATCH v6 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-21 16:40     ` [dpdk-dev] [PATCH v6 0/3] lib/rcu: add RCU library supporting QSBR mechanism Thomas Monjalon
2019-04-25 14:18       ` Honnappa Nagarahalli
2019-04-25 14:27         ` Honnappa Nagarahalli
2019-04-25 14:38         ` David Marchand
2019-04-23  4:31   ` [dpdk-dev] [PATCH v7 " Honnappa Nagarahalli
2019-04-23  4:31     ` [dpdk-dev] [PATCH v7 1/3] rcu: " Honnappa Nagarahalli
2019-04-23  8:10       ` Paul E. McKenney
2019-04-23 21:23         ` Honnappa Nagarahalli
2019-04-24 20:02           ` Jerin Jacob Kollanukkaran
2019-04-25  5:15             ` Honnappa Nagarahalli
2019-04-24 10:03       ` Ruifeng Wang (Arm Technology China)
2019-04-23  4:31     ` [dpdk-dev] [PATCH v7 2/3] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-04-23  4:31     ` [dpdk-dev] [PATCH v7 3/3] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-24 10:12       ` Ruifeng Wang (Arm Technology China)
2019-04-26  4:39   ` [dpdk-dev] [PATCH v8 0/4] lib/rcu: add RCU library supporting QSBR mechanism Honnappa Nagarahalli
2019-04-26  4:39     ` [dpdk-dev] [PATCH v8 1/4] rcu: " Honnappa Nagarahalli
2019-04-26  8:13       ` Jerin Jacob Kollanukkaran
2019-04-28  3:25       ` Ruifeng Wang (Arm Technology China)
2019-04-29 20:33         ` Thomas Monjalon
2019-04-30 10:51           ` Hemant Agrawal
2019-04-26  4:39     ` [dpdk-dev] [PATCH v8 2/4] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-04-29 20:35       ` Thomas Monjalon
2019-04-30  4:20         ` Honnappa Nagarahalli
2019-04-30  7:58           ` Thomas Monjalon
2019-04-26  4:39     ` [dpdk-dev] [PATCH v8 3/4] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-04-26  4:40     ` [dpdk-dev] [PATCH v8 4/4] doc: added RCU to the release notes Honnappa Nagarahalli
2019-04-26 12:04     ` [dpdk-dev] [PATCH v8 0/4] lib/rcu: add RCU library supporting QSBR mechanism Ananyev, Konstantin
2019-05-01  3:54   ` [dpdk-dev] [PATCH v9 " Honnappa Nagarahalli
2019-05-01  3:54     ` [dpdk-dev] [PATCH v9 1/4] rcu: " Honnappa Nagarahalli
2019-05-01  3:54     ` [dpdk-dev] [PATCH v9 2/4] test/rcu_qsbr: add API and functional tests Honnappa Nagarahalli
2019-05-03 14:31       ` David Marchand
2019-05-06 23:16         ` Honnappa Nagarahalli
2019-05-01  3:54     ` [dpdk-dev] [PATCH v9 3/4] doc/rcu: add lib_rcu documentation Honnappa Nagarahalli
2019-05-01 11:37       ` Mcnamara, John
2019-05-01 21:20         ` Honnappa Nagarahalli
2019-05-01 21:32           ` Thomas Monjalon
2019-05-01  3:54     ` [dpdk-dev] [PATCH v9 4/4] doc: added RCU to the release notes Honnappa Nagarahalli
2019-05-01 11:31       ` Mcnamara, John
2019-05-01 12:15     ` [dpdk-dev] [PATCH v9 0/4] lib/rcu: add RCU library supporting QSBR mechanism Neil Horman
2019-05-01 14:56       ` Honnappa Nagarahalli
2019-05-01 18:05         ` Neil Horman
2019-05-01 21:18           ` Honnappa Nagarahalli
2019-05-01 23:36     ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190416075415.76c9d64a@xps13.lan \
    --to=stephen@networkplumber.org \
    --cc=Dharmik.Thakkar@arm.com \
    --cc=Gavin.Hu@arm.com \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=Malvika.Gupta@arm.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=nd@arm.com \
    --cc=paulmck@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.