Use of RCU (read-copy-update)

Alexander V. Chernikov melifaro at FreeBSD.org
Sat Dec 24 16:26:56 UTC 2011


Hello list!

Questions related to RCU happens to be asked every several years, last
on was on 2010, nearly 2 years have passed, so I'm asking again (to keep
tradition).

What is RCU? RCU stands for read-copy-update locking technology that
permits users not to lock readers at all. It works by using delayed free
 which is triggered after all CPUs have flushed its cachelines.

It is now heavily used in various places in Linux kernel significantly
raising performance.

More technical information:
http://lwn.net/Articles/262464/ (general explanation from authors)
http://www.rdrop.com/users/paulmck/RCU/ (RCU "Homepage")
http://en.wikipedia.org/wiki/Read-copy-update

Previous discussions:
http://lists.freebsd.org/pipermail/freebsd-arch/2004-March/001889.html
http://lists.freebsd.org/pipermail/freebsd-arch/2006-November/005762.html
http://lists.freebsd.org/pipermail/freebsd-current/2010-October/020320.html


Main problem: Idea is patended:
General worlds:
http://www.groklaw.net/articlebasic.php?story=20061028211523142
Patents in PDF:
http://www.groklaw.net/pdf/IBM-835-Exhibit_522.pdf
http://www.groklaw.net/pdf/IBM-835-Exhibit_523.pdf
http://www.groklaw.net/pdf/IBM-835-Exhibit_524.pdf


RCU was also one of discussed topics in SCO-Linux lawsuit ( see
http://lwn.net/Articles/36164/ or
http://en.wikipedia.org/wiki/SCO_v._IBM#Increased_damages_claims.2C_and_read-copy-update_claims
)
Currently IBM holds all RCU-related patents.
Generally it is spoken that IBM permits using RCU for opensource or GPL
projects, however I can't find any official link with explanation /
conditions.

However, userland RCU project exists under LGPL: http://lttng.org/urcu

There is also (theoretially) an alternative approach implemented in
dfBSD, lwkt: see lwkt_serialize.c and lwkt_token.c in kern/
subdirectory: http://fxr.watson.org/fxr/source/kern/?v=DFBSD

I can't unfortunately find any finished explanation/documentation about
how it works (on SMP) and if this works at all.

It seems we need some kind of RCU to be implemented since performance
abyss (at least in networking) between us and Linux grows.


What can we do about this?
1) Do nothing.

2) Check if there a way to write and implementation non-covered by those
patents

3) Determine exact conditions under which IBM permits using RCU? (maybe
ask IBM directly?)

4) Consider the possibility of buying license from IBM (if we can
redistribute code under BSD license after that)






-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20111224/2f1298ba/signature.pgp


More information about the freebsd-arch mailing list