qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Emilio G. Cota" <cota@braap.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel@nongnu.org, stefanha@redhat.com, kwolf@redhat.com,
	mttcg@greensocs.com, fred.konrad@greensocs.com,
	a.rigo@virtualopensystems.com, bobby.prani@gmail.com,
	nikunj@linux.vnet.ibm.com, mark.burton@greensocs.com,
	jan.kiszka@siemens.com, serge.fdrv@gmail.com, rth@twiddle.net,
	peter.maydell@linaro.org, claudio.fontana@huawei.com
Subject: Re: [Qemu-devel] [RFC 7/8] util/qht: atomically set b->hashes
Date: Mon, 19 Sep 2016 15:06:04 -0400	[thread overview]
Message-ID: <20160919190604.GA11819@flamenco> (raw)
In-Reply-To: <704acb80-5680-c375-7437-25b3230af599@redhat.com>

On Mon, Sep 19, 2016 at 20:37:06 +0200, Paolo Bonzini wrote:
> On 19/09/2016 20:06, Emilio G. Cota wrote:
> > On Mon, Sep 19, 2016 at 16:51:38 +0100, Alex Bennée wrote:
> >> > ThreadSanitizer detects a possible race between reading/writing the
> >> > hashes. As ordering semantics are already documented for qht we just
> >> > need to ensure a race can't tear the hash value so we can use the
> >> > relaxed atomic_set/read functions.
> > This was discussed here:
> > 
> > https://lists.gnu.org/archive/html/qemu-devel/2016-05/msg03658.html
> > 
> > To reiterate: reading torn hash values is fine, since the retry will
> > happen regardless (and all pointers[] remain valid through the RCU
> > read-critical section).
> 
> True, but C11 says data races are undefined, not merely unspecified.
> seqlock-protected data requires a relaxed read and write, because they
> are read concurrently in the read and write sides.

Ah I see.

Let me then just point out that this comes at a small perf loss.

Running 'taskset -c 0 tests/qht-bench -n 1 -d 10' (i.e. all lookups) 10 times,
we get:

before the patch:
 $ ./mean.pl 34.04 34.24 34.38 34.25 34.18 34.51 34.46 34.44 34.29 34.08
 34.287 +- 0.160072900059109
after:
 $ ./mean.pl 33.94 34.00 33.52 33.46 33.55 33.71 34.27 34.06 34.28 34.58
 33.937 +- 0.374731014640279

But hey we can live with that.

Cheers,

		E.

  reply	other threads:[~2016-09-19 19:06 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-19 15:51 [Qemu-devel] [RFC 0/8] A couple of fixes for ThreadSanitizer Alex Bennée
2016-09-19 15:51 ` [Qemu-devel] [RFC 1/8] ui/vnc-enc-tight: add abort() for unexpected default Alex Bennée
2016-09-20  8:02   ` Marc-André Lureau
2016-09-20  8:24     ` Paolo Bonzini
2016-09-20 14:59       ` Alex Bennée
2016-09-19 15:51 ` [Qemu-devel] [RFC 2/8] tcg/optimize: move default return out of if statement Alex Bennée
2016-09-20  8:02   ` Marc-André Lureau
2016-09-19 15:51 ` [Qemu-devel] [RFC 3/8] new: blacklist.tsan Alex Bennée
2016-09-20  8:03   ` Marc-André Lureau
2016-09-19 15:51 ` [Qemu-devel] [RFC 4/8] seqlock: use atomic writes for the sequence Alex Bennée
2016-09-19 15:51 ` [Qemu-devel] [RFC 5/8] qom/object: update class cache atomically Alex Bennée
2016-09-20  8:36   ` Marc-André Lureau
2016-09-20 14:59     ` Alex Bennée
2016-09-20 15:04       ` Paolo Bonzini
2016-09-19 15:51 ` [Qemu-devel] [RFC 6/8] cpu: atomically modify cpu->exit_request Alex Bennée
2016-09-19 15:51 ` [Qemu-devel] [RFC 7/8] util/qht: atomically set b->hashes Alex Bennée
2016-09-19 18:06   ` Emilio G. Cota
2016-09-19 18:37     ` Paolo Bonzini
2016-09-19 19:06       ` Emilio G. Cota [this message]
2016-09-20  7:39         ` Paolo Bonzini
2016-09-22  9:51           ` Alex Bennée
2016-09-19 15:51 ` [Qemu-devel] [RFC 8/8] .travis.yml: add gcc sanitizer build Alex Bennée

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=20160919190604.GA11819@flamenco \
    --to=cota@braap.org \
    --cc=a.rigo@virtualopensystems.com \
    --cc=alex.bennee@linaro.org \
    --cc=bobby.prani@gmail.com \
    --cc=claudio.fontana@huawei.com \
    --cc=fred.konrad@greensocs.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kwolf@redhat.com \
    --cc=mark.burton@greensocs.com \
    --cc=mttcg@greensocs.com \
    --cc=nikunj@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=serge.fdrv@gmail.com \
    --cc=stefanha@redhat.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 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).