[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1272481588-1941-1-git-send-email-manfred@colorfullife.com>
Date: Wed, 28 Apr 2010 21:06:25 +0200
From: Manfred Spraul <manfred@...orfullife.com>
To: LKML <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...ux-foundation.org>
Cc: Chris Mason <chris.mason@...cle.com>,
Zach Brown <zach.brown@...cle.com>,
Jens Axboe <jens.axboe@...cle.com>,
Nick Piggin <npiggin@...e.de>,
Manfred Spraul <manfred@...orfullife.com>
Subject: [PATCH 0/3] ipc/sem.c: Optimization for reducing spinlock contention
Hi,
I've cleaned up the patches I sent a week ago:
- they pass now checkpatch.pl
- some comments updated/added
- a bug with semctl(,,SETALL,) is fixed
- tested against LTP
Andrew: Could you add them the next -mm?
The following series of patches tries to fix the spinlock contention
reported by Chris Manson: His benchmark exposes problems of the current
code:
- In the worst case, the algorithm used by update_queue() is O(N^2).
Bulk wake-up calls can enter this worst case.
The patch series fix that.
Note that the benchmark app doesn't expose the problem, it just should
be fixed: Real world apps might do the wake-ups in another order
than perfect FIFO.
- The part of the code that runs within the semaphore array spinlock
is significantly larger than necessary.
The patch series fixes that. This change is responsible for the
main improvement.
- The cacheline with the spinlock is also used for a variable that
is read in the hot path (sem_base) and for a variable that is
unnecessarily written to multiple times (sem_otime).
The last step of the series cacheline-aligns the spinlock.
--
Manfred
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists