Re: Lockless uidinfo.
- From: Pawel Jakub Dawidek <pjd@xxxxxxxxxxx>
- Date: Sun, 19 Aug 2007 01:09:17 +0200
On Sun, Aug 19, 2007 at 12:07:56AM +0200, Pawel Jakub Dawidek wrote:
Two more things...
The patch below remove per-uidinfo locks:
http://people.freebsd.org/~pjd/patches/uidinfo_lockless.patch
We could upgrade from lock-free algorithm I used here to wait-free
algorithm, but we don't have atomic_fetchadd_long(). How hard will it be
to implement it?
We could then change:
do {
old = uip->ui_proccnt;
if (old + diff > max)
return (0);
} while (atomic_cmpset_long(&uip->ui_proccnt, old, old + diff) == 0);
to something like this:
if (atomic_fetchadd_long(&uip->ui_proccnt, diff) + diff > max) {
atomic_subtract_long(&uip->ui_proccnt, diff);
return (0);
}
Ok, after implementing atomic_fetchadd_long() on amd64, we get additional
6% of performance improvement:
x ./uidinfo_lockfree.txt (atomic_cmpset_long loop)
+ ./uidinfo_waitfree.txt (atomic_fetchadd_long)
+------------------------------------------------------------------------------+
| +|
| +|
|x xx xx + ++|
| |__MA___| |AM|
+------------------------------------------------------------------------------+
N Min Max Median Avg Stddev
x 5 1561566 1575987 1568964 1569767 5853.1399
+ 5 1662362 1665936 1665810 1664881.8 1541.2693
Difference at 95.0% confidence
95114.8 +/- 6241.96
6.05917% +/- 0.397636%
(Student's t, pooled s = 4279.88)
--
Pawel Jakub Dawidek http://www.wheel.pl
pjd@xxxxxxxxxxx http://www.FreeBSD.org
FreeBSD committer Am I Evil? Yes, I Am!
Attachment:
pgppN1CXXMgS5.pgp
Description: PGP signature
- Follow-Ups:
- Re: Lockless uidinfo.
- From: Pawel Jakub Dawidek
- Re: Lockless uidinfo.
- From: Jeff Roberson
- Re: Lockless uidinfo.
- References:
- Lockless uidinfo.
- From: Pawel Jakub Dawidek
- Re: Lockless uidinfo.
- From: Pawel Jakub Dawidek
- Lockless uidinfo.
- Prev by Date: Re: Lockless uidinfo.
- Next by Date: Re: Lockless uidinfo.
- Previous by thread: Re: Lockless uidinfo.
- Next by thread: Re: Lockless uidinfo.
- Index(es):