From: Willy Tarreau Date: Sun, 26 Nov 2017 09:19:16 +0000 (+0100) Subject: MINOR: task: align the rq and wq locks X-Git-Tag: v1.8.0~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a24d1d0be40bdee6b1fc105080747e184b42b81f;p=thirdparty%2Fhaproxy.git MINOR: task: align the rq and wq locks We really don't want them to share the same cache line as they are expected to be used in parallel. Adding a 64-byte alignment here shows a performance increase of about 4.5% on task-intensive workloads with 2 to 4 threads. --- diff --git a/src/task.c b/src/task.c index fbaaecee13..053376c394 100644 --- a/src/task.c +++ b/src/task.c @@ -40,8 +40,8 @@ unsigned int niced_tasks = 0; /* number of niced tasks in the run queue */ THREAD_LOCAL struct task *curr_task = NULL; /* task currently running or NULL */ -__decl_hathreads(HA_SPINLOCK_T rq_lock); /* spin lock related to run queue */ -__decl_hathreads(HA_SPINLOCK_T wq_lock); /* spin lock related to wait queue */ +__decl_hathreads(HA_SPINLOCK_T __attribute__((aligned(64))) rq_lock); /* spin lock related to run queue */ +__decl_hathreads(HA_SPINLOCK_T __attribute__((aligned(64))) wq_lock); /* spin lock related to wait queue */ static struct eb_root timers; /* sorted timers tree */ static struct eb_root rqueue; /* tree constituting the run queue */