From owner-freebsd-arch@FreeBSD.ORG Sat Dec 24 16:26:56 2011 Return-Path: Delivered-To: freebsd-arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 494A3106566B for ; Sat, 24 Dec 2011 16:26:56 +0000 (UTC) (envelope-from melifaro@FreeBSD.org) Received: from mail.ipfw.ru (unknown [IPv6:2a01:4f8:120:6141::2]) by mx1.freebsd.org (Postfix) with ESMTP id 948398FC13 for ; Sat, 24 Dec 2011 16:26:52 +0000 (UTC) Received: from secured.by.ipfw.ru ([81.200.11.182] helo=ws.su29.net) by mail.ipfw.ru with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.76 (FreeBSD)) (envelope-from ) id 1ReUQt-000AIF-VZ; Sat, 24 Dec 2011 20:26:52 +0400 Message-ID: <4EF5FD0E.9050500@FreeBSD.org> Date: Sat, 24 Dec 2011 20:25:50 +0400 From: "Alexander V. Chernikov" User-Agent: Thunderbird 2.0.0.24 (X11/20100515) MIME-Version: 1.0 To: freebsd-arch@FreeBSD.org, glebuis@FreeBSD.org X-Enigmail-Version: 0.96.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig91B66FE36B84030B8F648289" Cc: Subject: Use of RCU (read-copy-update) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Dec 2011 16:26:56 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig91B66FE36B84030B8F648289 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 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.ht= ml Main problem: Idea is patended: General worlds: http://www.groklaw.net/articlebasic.php?story=3D20061028211523142 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_r= ead-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=3DDFBSD 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) --------------enig91B66FE36B84030B8F648289 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk71/RgACgkQwcJ4iSZ1q2nKpQCeOiycWWvrHjiWJMtsKpe/zZEt RFYAn3M3c6wvFZIaHxseBTbruBGaEyK7 =1kLc -----END PGP SIGNATURE----- --------------enig91B66FE36B84030B8F648289--