devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
Cc: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Jonathan Corbet <corbet-T1hC0tSOHrs@public.gmane.org>,
	linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Przemyslaw Sroka <psroka-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Arkadiusz Golec <agolec-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Alan Douglas <adouglas-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Bartosz Folta <bfolta-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Damian Kos <dkos-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Alicja Jurasik-Urbaniak
	<alicja-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Jan Kotas <jank-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Cyprian Wronka <cwronka-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org>,
	Alexandre Belloni
	<alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Thomas Petazzoni
	<thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Nishanth Menon <nm-l0cyMroinI0@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Kumar Gala <galak@co>
Subject: Re: [RFC 2/5] i3c: Add core I3C infrastructure
Date: Wed, 13 Dec 2017 17:20:43 +0100	[thread overview]
Message-ID: <20171213172043.24e4d4bc@bbrezillon> (raw)
In-Reply-To: <20170802021327.GB23033-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>

Hi Greg,

On Tue, 1 Aug 2017 19:13:27 -0700
Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org> wrote:

> > > > Unless you see a good reason to not use a R/W lock, I'd like to keep it
> > > > this way because master IPs are likely to implement advanced queuing
> > > > mechanism (allows one to queue new transfers even if the master is
> > > > already busy processing other requests), and serializing things at the
> > > > framework level will just prevent us from using this kind of
> > > > optimization.    
> > > 
> > > Unless you can prove otherwise, using a rw lock is almost always worse
> > > than just a mutex.  
> > 
> > Is it still true when it's taken in non-exclusive mode most of the
> > time, and the time you spend in the critical section is non-negligible?
> > 
> > I won't pretend I know better than you do what is preferable, it's just
> > that the RW lock seemed appropriate to me for the situation I tried to
> > described here.  
> 
> Again, measure it.  If you can't measure it, then don't use it.  Use a
> simple lock instead.  Seriously, don't make it more complex until you
> really have to.  It sounds like you didn't measure it at all, which
> isn't good, please do so.
> 

I'm resurrecting this thread because I finally had the time to implement
message queuing in Cadence I3C master driver. So I did a test with 2
I3C devices on the bus, and their drivers sending as much SDR messages
as they can in 10s. Here are the results:

          |    mutex    |    rwsem    |
---------------------------------------
dev1      |    19087    |    29532    |
dev2      |    19341    |    29118    |
=======================================
total     |    38428    |    58650    |
msg/sec	  |    ~3843    |    ~5865    |


The results I'm obtaining here are not so surprising since all normal
transfers are taking the lock in read mode, so there's no contention.
I didn't measure the impact on performances when there's one
maintenance operation taking the lock in write mode and several normal
transfers waiting for this lock, but really, maintenance operations are
infrequent, and that's not where performance matters in our use case.

I also did the same test with only one device doing transfers on the
bus, and this time the mutex wins, but there's not a huge difference.

          |    mutex    |    rwsem    |
---------------------------------------
total     |    67116    |    66561    |
msg/sec	  |    ~6712    |    ~6656    |

Let me know if you want more information on the test procedure.

Regards,

Boris

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2017-12-13 16:20 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-31 16:24 [RFC 0/5] Add I3C subsystem Boris Brezillon
2017-07-31 16:24 ` [RFC 1/5] i2c: Export of_i2c_get_board_info() Boris Brezillon
2017-07-31 16:24 ` [RFC 2/5] i3c: Add core I3C infrastructure Boris Brezillon
2017-07-31 19:17   ` Wolfram Sang
2017-07-31 20:46     ` Boris Brezillon
2017-07-31 20:16   ` Arnd Bergmann
     [not found]     ` <CAK8P3a06GoMdKdn=3Cq0FUwYnjGX0oG+FQLjxfiasVDpbonWRw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-07-31 21:15       ` Boris Brezillon
2017-07-31 21:32         ` Peter Rosin
2017-07-31 21:42         ` Wolfram Sang
2017-08-01 16:47           ` Andrew F. Davis
2017-08-01 17:27             ` Wolfram Sang
2017-08-01 21:47               ` Boris Brezillon
2017-08-02 10:21                 ` Wolfram Sang
2017-08-01 12:00         ` Arnd Bergmann
2017-08-01 12:29           ` Boris Brezillon
2017-08-01 13:11             ` Arnd Bergmann
2017-08-01 13:34               ` Boris Brezillon
2017-08-01 13:58                 ` Boris Brezillon
2017-08-01 14:22                   ` Arnd Bergmann
2017-08-01 15:14                     ` Boris Brezillon
2017-08-01 20:16                       ` Arnd Bergmann
2017-08-01 14:12                 ` Wolfram Sang
2017-08-01 14:48                   ` Boris Brezillon
2017-08-01 15:01                     ` Wolfram Sang
2017-08-01 15:20                       ` Boris Brezillon
2017-08-03  8:03                         ` Boris Brezillon
2017-08-16 21:03                       ` Geert Uytterhoeven
2017-08-17  7:48                         ` Boris Brezillon
2017-08-01  1:40   ` Greg Kroah-Hartman
     [not found]     ` <20170801014021.GA20004-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-08-01 10:48       ` Boris Brezillon
2017-08-01 17:51         ` Greg Kroah-Hartman
2017-08-01 21:30           ` Boris Brezillon
2017-08-02  0:54             ` Greg Kroah-Hartman
2017-08-02  2:13             ` Greg Kroah-Hartman
     [not found]               ` <20170802021327.GB23033-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-12-13 16:20                 ` Boris Brezillon [this message]
2017-12-13 16:51                   ` Greg Kroah-Hartman
2017-08-17  9:03   ` Linus Walleij
2017-08-17  9:28     ` Boris Brezillon
     [not found] ` <1501518290-5723-1-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-07-31 16:24   ` [RFC 3/5] dt-bindings: i3c: Document core bindings Boris Brezillon
2017-08-09 23:43     ` Rob Herring
2017-08-10  8:49       ` Boris Brezillon
2017-07-31 16:24 ` [RFC 4/5] i3c: master: Add driver for Cadence IP Boris Brezillon
2017-07-31 16:24 ` [RFC 5/5] dt-bindings: i3c: Document Cadence I3C master bindings Boris Brezillon
2017-07-31 19:17 ` [RFC 0/5] Add I3C subsystem Wolfram Sang
2017-07-31 20:40   ` Boris Brezillon
2017-07-31 20:47     ` Wolfram Sang
2017-12-12 19:58   ` Boris Brezillon
2017-12-12 22:01     ` Wolfram Sang

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=20171213172043.24e4d4bc@bbrezillon \
    --to=boris.brezillon-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=adouglas-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=agolec-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=alicja-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=bfolta-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=corbet-T1hC0tSOHrs@public.gmane.org \
    --cc=cwronka-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=dkos-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=galak@co \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=jank-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=nm-l0cyMroinI0@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=psroka-vna1KIf7WgpBDgjK7y7TUQ@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).