From: Pranith Kumar <bobby.prani@gmail.com>
To: "Richard Henderson" <rth@twiddle.net>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Markus Armbruster" <armbru@redhat.com>,
"Sergey Fedorov" <sergey.fedorov@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Emilio G. Cota" <cota@braap.org>,
"open list:All patches CC here" <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [RFC PATCH] qht: Align sequence lock to cache line
Date: Tue, 25 Oct 2016 11:35:06 -0400 [thread overview]
Message-ID: <20161025153507.27110-1-bobby.prani@gmail.com> (raw)
Using perf, I see that sequence lock is being a bottleneck since it is
being read by everyone. Giving it its own cache-line seems to help
things quite a bit.
Using qht-bench, I measured the following for:
$ ./tests/qht-bench -d 10 -n 24 -u <x>
throughput base patch %change
update
0 8.07 13.33 +65%
10 7.10 8.90 +25%
20 6.34 7.02 +10%
30 5.48 6.11 +9.6%
40 4.90 5.46 +11.42%
I am not able to see any significant increases for lower thread counts though.
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
include/qemu/seqlock.h | 2 +-
util/qht.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/qemu/seqlock.h b/include/qemu/seqlock.h
index 8dee11d..954abe8 100644
--- a/include/qemu/seqlock.h
+++ b/include/qemu/seqlock.h
@@ -21,7 +21,7 @@ typedef struct QemuSeqLock QemuSeqLock;
struct QemuSeqLock {
unsigned sequence;
-};
+} QEMU_ALIGNED(64);
static inline void seqlock_init(QemuSeqLock *sl)
{
diff --git a/util/qht.c b/util/qht.c
index ff4d2e6..4d82609 100644
--- a/util/qht.c
+++ b/util/qht.c
@@ -101,14 +101,14 @@
* be grabbed first.
*/
struct qht_bucket {
- QemuSpin lock;
QemuSeqLock sequence;
+ QemuSpin lock;
uint32_t hashes[QHT_BUCKET_ENTRIES];
void *pointers[QHT_BUCKET_ENTRIES];
struct qht_bucket *next;
} QEMU_ALIGNED(QHT_BUCKET_ALIGN);
-QEMU_BUILD_BUG_ON(sizeof(struct qht_bucket) > QHT_BUCKET_ALIGN);
+QEMU_BUILD_BUG_ON(sizeof(struct qht_bucket) > 2 * QHT_BUCKET_ALIGN);
/**
* struct qht_map - structure to track an array of buckets
--
2.10.1
next reply other threads:[~2016-10-25 15:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-25 15:35 Pranith Kumar [this message]
2016-10-25 15:41 ` [Qemu-devel] [RFC PATCH] qht: Align sequence lock to cache line Paolo Bonzini
2016-10-25 15:49 ` Pranith Kumar
2016-10-25 15:54 ` Paolo Bonzini
2016-10-25 19:12 ` Pranith Kumar
2016-10-25 20:02 ` Paolo Bonzini
2016-10-25 20:35 ` Pranith Kumar
2016-10-25 20:45 ` Emilio G. Cota
2016-10-25 20:58 ` Paolo Bonzini
2016-10-25 20:55 ` Emilio G. Cota
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=20161025153507.27110-1-bobby.prani@gmail.com \
--to=bobby.prani@gmail.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=cota@braap.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=sergey.fedorov@linaro.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 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.