xref: /linux/Documentation/RCU/RTFP.txt (revision 32300751b4079cb5688453baa94711579d4285d5)
11da177e4SLinus TorvaldsRead the F-ing Papers!
21da177e4SLinus Torvalds
31da177e4SLinus Torvalds
41da177e4SLinus TorvaldsThis document describes RCU-related publications, and is followed by
5dd81eca8SPaul E. McKenneythe corresponding bibtex entries.  A number of the publications may
6dd81eca8SPaul E. McKenneybe found at http://www.rdrop.com/users/paulmck/RCU/.
71da177e4SLinus Torvalds
81da177e4SLinus TorvaldsThe first thing resembling RCU was published in 1980, when Kung and Lehman
91da177e4SLinus Torvalds[Kung80] recommended use of a garbage collector to defer destruction
101da177e4SLinus Torvaldsof nodes in a parallel binary search tree in order to simplify its
111da177e4SLinus Torvaldsimplementation.  This works well in environments that have garbage
12f85d6c71SPaul E. McKenneycollectors, but most production garbage collectors incur significant
13f85d6c71SPaul E. McKenneyoverhead.
141da177e4SLinus Torvalds
151da177e4SLinus TorvaldsIn 1982, Manber and Ladner [Manber82,Manber84] recommended deferring
161da177e4SLinus Torvaldsdestruction until all threads running at that time have terminated, again
171da177e4SLinus Torvaldsfor a parallel binary search tree.  This approach works well in systems
181da177e4SLinus Torvaldswith short-lived threads, such as the K42 research operating system.
191da177e4SLinus TorvaldsHowever, Linux has long-lived tasks, so more is needed.
201da177e4SLinus Torvalds
211da177e4SLinus TorvaldsIn 1986, Hennessy, Osisek, and Seigh [Hennessy89] introduced passive
221da177e4SLinus Torvaldsserialization, which is an RCU-like mechanism that relies on the presence
231da177e4SLinus Torvaldsof "quiescent states" in the VM/XA hypervisor that are guaranteed not
241da177e4SLinus Torvaldsto be referencing the data structure.  However, this mechanism was not
251da177e4SLinus Torvaldsoptimized for modern computer systems, which is not surprising given
261da177e4SLinus Torvaldsthat these overheads were not so expensive in the mid-80s.  Nonetheless,
271da177e4SLinus Torvaldspassive serialization appears to be the first deferred-destruction
281da177e4SLinus Torvaldsmechanism to be used in production.  Furthermore, the relevant patent has
291da177e4SLinus Torvaldslapsed, so this approach may be used in non-GPL software, if desired.
301da177e4SLinus Torvalds(In contrast, use of RCU is permitted only in software licensed under
311da177e4SLinus TorvaldsGPL.  Sorry!!!)
321da177e4SLinus Torvalds
331da177e4SLinus TorvaldsIn 1990, Pugh [Pugh90] noted that explicitly tracking which threads
341da177e4SLinus Torvaldswere reading a given data structure permitted deferred free to operate
351da177e4SLinus Torvaldsin the presence of non-terminating threads.  However, this explicit
361da177e4SLinus Torvaldstracking imposes significant read-side overhead, which is undesirable
371da177e4SLinus Torvaldsin read-mostly situations.  This algorithm does take pains to avoid
381da177e4SLinus Torvaldswrite-side contention and parallelize the other write-side overheads by
391da177e4SLinus Torvaldsproviding a fine-grained locking design, however, it would be interesting
401da177e4SLinus Torvaldsto see how much of the performance advantage reported in 1990 remains
411da177e4SLinus Torvaldsin 2004.
421da177e4SLinus Torvalds
431da177e4SLinus TorvaldsAt about this same time, Adams [Adams91] described ``chaotic relaxation'',
441da177e4SLinus Torvaldswhere the normal barriers between successive iterations of convergent
451da177e4SLinus Torvaldsnumerical algorithms are relaxed, so that iteration $n$ might use
461da177e4SLinus Torvaldsdata from iteration $n-1$ or even $n-2$.  This introduces error,
471da177e4SLinus Torvaldswhich typically slows convergence and thus increases the number of
481da177e4SLinus Torvaldsiterations required.  However, this increase is sometimes more than made
491da177e4SLinus Torvaldsup for by a reduction in the number of expensive barrier operations,
501da177e4SLinus Torvaldswhich are otherwise required to synchronize the threads at the end
511da177e4SLinus Torvaldsof each iteration.  Unfortunately, chaotic relaxation requires highly
521da177e4SLinus Torvaldsstructured data, such as the matrices used in scientific programs, and
531da177e4SLinus Torvaldsis thus inapplicable to most data structures in operating-system kernels.
541da177e4SLinus Torvalds
55*32300751SPaul E. McKenneyIn 1992, Henry (now Alexia) Massalin completed a dissertation advising
56*32300751SPaul E. McKenneyparallel programmers to defer processing when feasible to simplify
57*32300751SPaul E. McKenneysynchronization.  RCU makes extremely heavy use of this advice.
58*32300751SPaul E. McKenney
591da177e4SLinus TorvaldsIn 1993, Jacobson [Jacobson93] verbally described what is perhaps the
601da177e4SLinus Torvaldssimplest deferred-free technique: simply waiting a fixed amount of time
611da177e4SLinus Torvaldsbefore freeing blocks awaiting deferred free.  Jacobson did not describe
621da177e4SLinus Torvaldsany write-side changes he might have made in this work using SGI's Irix
631da177e4SLinus Torvaldskernel.  Aju John published a similar technique in 1995 [AjuJohn95].
641da177e4SLinus TorvaldsThis works well if there is a well-defined upper bound on the length of
651da177e4SLinus Torvaldstime that reading threads can hold references, as there might well be in
661da177e4SLinus Torvaldshard real-time systems.  However, if this time is exceeded, perhaps due
671da177e4SLinus Torvaldsto preemption, excessive interrupts, or larger-than-anticipated load,
681da177e4SLinus Torvaldsmemory corruption can ensue, with no reasonable means of diagnosis.
691da177e4SLinus TorvaldsJacobson's technique is therefore inappropriate for use in production
701da177e4SLinus Torvaldsoperating-system kernels, except when such kernels can provide hard
711da177e4SLinus Torvaldsreal-time response guarantees for all operations.
721da177e4SLinus Torvalds
731da177e4SLinus TorvaldsAlso in 1995, Pu et al. [Pu95a] applied a technique similar to that of Pugh's
741da177e4SLinus Torvaldsread-side-tracking to permit replugging of algorithms within a commercial
751da177e4SLinus TorvaldsUnix operating system.  However, this replugging permitted only a single
761da177e4SLinus Torvaldsreader at a time.  The following year, this same group of researchers
771da177e4SLinus Torvaldsextended their technique to allow for multiple readers [Cowan96a].
781da177e4SLinus TorvaldsTheir approach requires memory barriers (and thus pipeline stalls),
791da177e4SLinus Torvaldsbut reduces memory latency, contention, and locking overheads.
801da177e4SLinus Torvalds
811da177e4SLinus Torvalds1995 also saw the first publication of DYNIX/ptx's RCU mechanism
821da177e4SLinus Torvalds[Slingwine95], which was optimized for modern CPU architectures,
831da177e4SLinus Torvaldsand was successfully applied to a number of situations within the
841da177e4SLinus TorvaldsDYNIX/ptx kernel.  The corresponding conference paper appeared in 1998
851da177e4SLinus Torvalds[McKenney98].
861da177e4SLinus Torvalds
871da177e4SLinus TorvaldsIn 1999, the Tornado and K42 groups described their "generations"
881da177e4SLinus Torvaldsmechanism, which quite similar to RCU [Gamsa99].  These operating systems
891da177e4SLinus Torvaldsmade pervasive use of RCU in place of "existence locks", which greatly
901da177e4SLinus Torvaldssimplifies locking hierarchies.
911da177e4SLinus Torvalds
921da177e4SLinus Torvalds2001 saw the first RCU presentation involving Linux [McKenney01a]
931da177e4SLinus Torvaldsat OLS.  The resulting abundance of RCU patches was presented the
941da177e4SLinus Torvaldsfollowing year [McKenney02a], and use of RCU in dcache was first
951da177e4SLinus Torvaldsdescribed that same year [Linder02a].
961da177e4SLinus Torvalds
97d19720a9SPaul E. McKenneyAlso in 2002, Michael [Michael02b,Michael02a] presented "hazard-pointer"
98d19720a9SPaul E. McKenneytechniques that defer the destruction of data structures to simplify
99d19720a9SPaul E. McKenneynon-blocking synchronization (wait-free synchronization, lock-free
100d19720a9SPaul E. McKenneysynchronization, and obstruction-free synchronization are all examples of
101d19720a9SPaul E. McKenneynon-blocking synchronization).  In particular, this technique eliminates
102d19720a9SPaul E. McKenneylocking, reduces contention, reduces memory latency for readers, and
103d19720a9SPaul E. McKenneyparallelizes pipeline stalls and memory latency for writers.  However,
104d19720a9SPaul E. McKenneythese techniques still impose significant read-side overhead in the
105d19720a9SPaul E. McKenneyform of memory barriers.  Researchers at Sun worked along similar lines
106f85d6c71SPaul E. McKenneyin the same timeframe [HerlihyLM02].  These techniques can be thought
107f85d6c71SPaul E. McKenneyof as inside-out reference counts, where the count is represented by the
108f85d6c71SPaul E. McKenneynumber of hazard pointers referencing a given data structure (rather than
109f85d6c71SPaul E. McKenneythe more conventional counter field within the data structure itself).
110f85d6c71SPaul E. McKenney
111f85d6c71SPaul E. McKenneyBy the same token, RCU can be thought of as a "bulk reference count",
112f85d6c71SPaul E. McKenneywhere some form of reference counter covers all reference by a given CPU
113f85d6c71SPaul E. McKenneyor thread during a set timeframe.  This timeframe is related to, but
114f85d6c71SPaul E. McKenneynot necessarily exactly the same as, an RCU grace period.  In classic
115f85d6c71SPaul E. McKenneyRCU, the reference counter is the per-CPU bit in the "bitmask" field,
116f85d6c71SPaul E. McKenneyand each such bit covers all references that might have been made by
117f85d6c71SPaul E. McKenneythe corresponding CPU during the prior grace period.  Of course, RCU
118f85d6c71SPaul E. McKenneycan be thought of in other terms as well.
1191da177e4SLinus Torvalds
1201da177e4SLinus TorvaldsIn 2003, the K42 group described how RCU could be used to create
121f85d6c71SPaul E. McKenneyhot-pluggable implementations of operating-system functions [Appavoo03a].
122f85d6c71SPaul E. McKenneyLater that year saw a paper describing an RCU implementation of System
123f85d6c71SPaul E. McKenneyV IPC [Arcangeli03], and an introduction to RCU in Linux Journal
124f85d6c71SPaul E. McKenney[McKenney03a].
1251da177e4SLinus Torvalds
1261da177e4SLinus Torvalds2004 has seen a Linux-Journal article on use of RCU in dcache
1271da177e4SLinus Torvalds[McKenney04a], a performance comparison of locking to RCU on several
1281da177e4SLinus Torvaldsdifferent CPUs [McKenney04b], a dissertation describing use of RCU in a
129a83f1fe2SPaul E. McKenneynumber of operating-system kernels [PaulEdwardMcKenneyPhD], a paper
130a83f1fe2SPaul E. McKenneydescribing how to make RCU safe for soft-realtime applications [Sarma04c],
131a83f1fe2SPaul E. McKenneyand a paper describing SELinux performance with RCU [JamesMorris04b].
1321da177e4SLinus Torvalds
133f85d6c71SPaul E. McKenney2005 brought further adaptation of RCU to realtime use, permitting
134dd81eca8SPaul E. McKenneypreemption of RCU realtime critical sections [PaulMcKenney05a,
135dd81eca8SPaul E. McKenneyPaulMcKenney05b].
136dd81eca8SPaul E. McKenney
137f85d6c71SPaul E. McKenney2006 saw the first best-paper award for an RCU paper [ThomasEHart2006a],
138f85d6c71SPaul E. McKenneyas well as further work on efficient implementations of preemptible
139f85d6c71SPaul E. McKenneyRCU [PaulEMcKenney2006b], but priority-boosting of RCU read-side critical
140f85d6c71SPaul E. McKenneysections proved elusive.  An RCU implementation permitting general
141f85d6c71SPaul E. McKenneyblocking in read-side critical sections appeared [PaulEMcKenney2006c],
142f85d6c71SPaul E. McKenneyRobert Olsson described an RCU-protected trie-hash combination
143f85d6c71SPaul E. McKenney[RobertOlsson2006a].
144f85d6c71SPaul E. McKenney
145*32300751SPaul E. McKenney2007 saw the journal version of the award-winning RCU paper from 2006
146*32300751SPaul E. McKenney[ThomasEHart2007a], as well as a paper demonstrating use of Promela
147*32300751SPaul E. McKenneyand Spin to mechanically verify an optimization to Oleg Nesterov's
148*32300751SPaul E. McKenneyQRCU [PaulEMcKenney2007QRCUspin], a design document describing
149*32300751SPaul E. McKenneypreemptible RCU [PaulEMcKenney2007PreemptibleRCU], and the three-part
150*32300751SPaul E. McKenneyLWN "What is RCU?" series [PaulEMcKenney2007WhatIsRCUFundamentally,
151*32300751SPaul E. McKenneyPaulEMcKenney2008WhatIsRCUUsage, and PaulEMcKenney2008WhatIsRCUAPI].
152f85d6c71SPaul E. McKenney
1531da177e4SLinus TorvaldsBibtex Entries
1541da177e4SLinus Torvalds
1551da177e4SLinus Torvalds@article{Kung80
1561da177e4SLinus Torvalds,author="H. T. Kung and Q. Lehman"
1571da177e4SLinus Torvalds,title="Concurrent Maintenance of Binary Search Trees"
1581da177e4SLinus Torvalds,Year="1980"
1591da177e4SLinus Torvalds,Month="September"
1601da177e4SLinus Torvalds,journal="ACM Transactions on Database Systems"
1611da177e4SLinus Torvalds,volume="5"
1621da177e4SLinus Torvalds,number="3"
1631da177e4SLinus Torvalds,pages="354-382"
1641da177e4SLinus Torvalds}
1651da177e4SLinus Torvalds
1661da177e4SLinus Torvalds@techreport{Manber82
1671da177e4SLinus Torvalds,author="Udi Manber and Richard E. Ladner"
1681da177e4SLinus Torvalds,title="Concurrency Control in a Dynamic Search Structure"
1691da177e4SLinus Torvalds,institution="Department of Computer Science, University of Washington"
1701da177e4SLinus Torvalds,address="Seattle, Washington"
1711da177e4SLinus Torvalds,year="1982"
1721da177e4SLinus Torvalds,number="82-01-01"
1731da177e4SLinus Torvalds,month="January"
1741da177e4SLinus Torvalds,pages="28"
1751da177e4SLinus Torvalds}
1761da177e4SLinus Torvalds
1771da177e4SLinus Torvalds@article{Manber84
1781da177e4SLinus Torvalds,author="Udi Manber and Richard E. Ladner"
1791da177e4SLinus Torvalds,title="Concurrency Control in a Dynamic Search Structure"
1801da177e4SLinus Torvalds,Year="1984"
1811da177e4SLinus Torvalds,Month="September"
1821da177e4SLinus Torvalds,journal="ACM Transactions on Database Systems"
1831da177e4SLinus Torvalds,volume="9"
1841da177e4SLinus Torvalds,number="3"
1851da177e4SLinus Torvalds,pages="439-455"
1861da177e4SLinus Torvalds}
1871da177e4SLinus Torvalds
1881da177e4SLinus Torvalds@techreport{Hennessy89
1891da177e4SLinus Torvalds,author="James P. Hennessy and Damian L. Osisek and Joseph W. {Seigh II}"
1901da177e4SLinus Torvalds,title="Passive Serialization in a Multitasking Environment"
1911da177e4SLinus Torvalds,institution="US Patent and Trademark Office"
1921da177e4SLinus Torvalds,address="Washington, DC"
1931da177e4SLinus Torvalds,year="1989"
1941da177e4SLinus Torvalds,number="US Patent 4,809,168 (lapsed)"
1951da177e4SLinus Torvalds,month="February"
1961da177e4SLinus Torvalds,pages="11"
1971da177e4SLinus Torvalds}
1981da177e4SLinus Torvalds
1991da177e4SLinus Torvalds@techreport{Pugh90
2001da177e4SLinus Torvalds,author="William Pugh"
2011da177e4SLinus Torvalds,title="Concurrent Maintenance of Skip Lists"
2021da177e4SLinus Torvalds,institution="Institute of Advanced Computer Science Studies, Department of Computer Science, University of Maryland"
2031da177e4SLinus Torvalds,address="College Park, Maryland"
2041da177e4SLinus Torvalds,year="1990"
2051da177e4SLinus Torvalds,number="CS-TR-2222.1"
2061da177e4SLinus Torvalds,month="June"
2071da177e4SLinus Torvalds}
2081da177e4SLinus Torvalds
2091da177e4SLinus Torvalds@Book{Adams91
2101da177e4SLinus Torvalds,Author="Gregory R. Adams"
2111da177e4SLinus Torvalds,title="Concurrent Programming, Principles, and Practices"
2121da177e4SLinus Torvalds,Publisher="Benjamin Cummins"
2131da177e4SLinus Torvalds,Year="1991"
2141da177e4SLinus Torvalds}
2151da177e4SLinus Torvalds
216*32300751SPaul E. McKenney@phdthesis{HMassalinPhD
217*32300751SPaul E. McKenney,author="H. Massalin"
218*32300751SPaul E. McKenney,title="Synthesis: An Efficient Implementation of Fundamental Operating
219*32300751SPaul E. McKenneySystem Services"
220*32300751SPaul E. McKenney,school="Columbia University"
221*32300751SPaul E. McKenney,address="New York, NY"
222*32300751SPaul E. McKenney,year="1992"
223*32300751SPaul E. McKenney,annotation="
224*32300751SPaul E. McKenney	Mondo optimizing compiler.
225*32300751SPaul E. McKenney	Wait-free stuff.
226*32300751SPaul E. McKenney	Good advice: defer work to avoid synchronization.
227*32300751SPaul E. McKenney"
228*32300751SPaul E. McKenney}
229*32300751SPaul E. McKenney
2301da177e4SLinus Torvalds@unpublished{Jacobson93
2311da177e4SLinus Torvalds,author="Van Jacobson"
2321da177e4SLinus Torvalds,title="Avoid Read-Side Locking Via Delayed Free"
2331da177e4SLinus Torvalds,year="1993"
2341da177e4SLinus Torvalds,month="September"
2351da177e4SLinus Torvalds,note="Verbal discussion"
2361da177e4SLinus Torvalds}
2371da177e4SLinus Torvalds
2381da177e4SLinus Torvalds@Conference{AjuJohn95
2391da177e4SLinus Torvalds,Author="Aju John"
2401da177e4SLinus Torvalds,Title="Dynamic vnodes -- Design and Implementation"
2411da177e4SLinus Torvalds,Booktitle="{USENIX Winter 1995}"
2421da177e4SLinus Torvalds,Publisher="USENIX Association"
2431da177e4SLinus Torvalds,Month="January"
2441da177e4SLinus Torvalds,Year="1995"
2451da177e4SLinus Torvalds,pages="11-23"
2461da177e4SLinus Torvalds,Address="New Orleans, LA"
2471da177e4SLinus Torvalds}
2481da177e4SLinus Torvalds
249f85d6c71SPaul E. McKenney@conference{Pu95a,
250f85d6c71SPaul E. McKenneyAuthor = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and
251f85d6c71SPaul E. McKenneyCrispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and
252f85d6c71SPaul E. McKenneyKe Zhang",
253f85d6c71SPaul E. McKenneyTitle = "Optimistic Incremental Specialization: Streamlining a Commercial
254f85d6c71SPaul E. McKenneyOperating System",
255f85d6c71SPaul E. McKenneyBooktitle = "15\textsuperscript{th} ACM Symposium on
256f85d6c71SPaul E. McKenneyOperating Systems Principles (SOSP'95)",
257f85d6c71SPaul E. McKenneyaddress = "Copper Mountain, CO",
258f85d6c71SPaul E. McKenneymonth="December",
259f85d6c71SPaul E. McKenneyyear="1995",
260f85d6c71SPaul E. McKenneypages="314-321",
261f85d6c71SPaul E. McKenneyannotation="
262f85d6c71SPaul E. McKenney	Uses a replugger, but with a flag to signal when people are
263f85d6c71SPaul E. McKenney	using the resource at hand.  Only one reader at a time.
264f85d6c71SPaul E. McKenney"
265f85d6c71SPaul E. McKenney}
266f85d6c71SPaul E. McKenney
267f85d6c71SPaul E. McKenney@conference{Cowan96a,
268f85d6c71SPaul E. McKenneyAuthor = "Crispin Cowan and Tito Autrey and Charles Krasic and
269f85d6c71SPaul E. McKenneyCalton Pu and Jonathan Walpole",
270f85d6c71SPaul E. McKenneyTitle = "Fast Concurrent Dynamic Linking for an Adaptive Operating System",
271f85d6c71SPaul E. McKenneyBooktitle = "International Conference on Configurable Distributed Systems
272f85d6c71SPaul E. McKenney(ICCDS'96)",
273f85d6c71SPaul E. McKenneyaddress = "Annapolis, MD",
274f85d6c71SPaul E. McKenneymonth="May",
275f85d6c71SPaul E. McKenneyyear="1996",
276f85d6c71SPaul E. McKenneypages="108",
277f85d6c71SPaul E. McKenneyisbn="0-8186-7395-8",
278f85d6c71SPaul E. McKenneyannotation="
279f85d6c71SPaul E. McKenney	Uses a replugger, but with a counter to signal when people are
280f85d6c71SPaul E. McKenney	using the resource at hand.  Allows multiple readers.
281f85d6c71SPaul E. McKenney"
282f85d6c71SPaul E. McKenney}
283f85d6c71SPaul E. McKenney
2841da177e4SLinus Torvalds@techreport{Slingwine95
2851da177e4SLinus Torvalds,author="John D. Slingwine and Paul E. McKenney"
2861da177e4SLinus Torvalds,title="Apparatus and Method for Achieving Reduced Overhead Mutual
2871da177e4SLinus TorvaldsExclusion and Maintaining Coherency in a Multiprocessor System
2881da177e4SLinus TorvaldsUtilizing Execution History and Thread Monitoring"
2891da177e4SLinus Torvalds,institution="US Patent and Trademark Office"
2901da177e4SLinus Torvalds,address="Washington, DC"
2911da177e4SLinus Torvalds,year="1995"
2921da177e4SLinus Torvalds,number="US Patent 5,442,758 (contributed under GPL)"
2931da177e4SLinus Torvalds,month="August"
2941da177e4SLinus Torvalds}
2951da177e4SLinus Torvalds
2961da177e4SLinus Torvalds@techreport{Slingwine97
2971da177e4SLinus Torvalds,author="John D. Slingwine and Paul E. McKenney"
2981da177e4SLinus Torvalds,title="Method for maintaining data coherency using thread
2991da177e4SLinus Torvaldsactivity summaries in a multicomputer system"
3001da177e4SLinus Torvalds,institution="US Patent and Trademark Office"
3011da177e4SLinus Torvalds,address="Washington, DC"
3021da177e4SLinus Torvalds,year="1997"
3031da177e4SLinus Torvalds,number="US Patent 5,608,893 (contributed under GPL)"
3041da177e4SLinus Torvalds,month="March"
3051da177e4SLinus Torvalds}
3061da177e4SLinus Torvalds
3071da177e4SLinus Torvalds@techreport{Slingwine98
3081da177e4SLinus Torvalds,author="John D. Slingwine and Paul E. McKenney"
3091da177e4SLinus Torvalds,title="Apparatus and method for achieving reduced overhead
3101da177e4SLinus Torvaldsmutual exclusion and maintaining coherency in a multiprocessor
3111da177e4SLinus Torvaldssystem utilizing execution history and thread monitoring"
3121da177e4SLinus Torvalds,institution="US Patent and Trademark Office"
3131da177e4SLinus Torvalds,address="Washington, DC"
3141da177e4SLinus Torvalds,year="1998"
3151da177e4SLinus Torvalds,number="US Patent 5,727,209 (contributed under GPL)"
3161da177e4SLinus Torvalds,month="March"
3171da177e4SLinus Torvalds}
3181da177e4SLinus Torvalds
3191da177e4SLinus Torvalds@Conference{McKenney98
3201da177e4SLinus Torvalds,Author="Paul E. McKenney and John D. Slingwine"
3211da177e4SLinus Torvalds,Title="Read-Copy Update: Using Execution History to Solve Concurrency
3221da177e4SLinus TorvaldsProblems"
3231da177e4SLinus Torvalds,Booktitle="{Parallel and Distributed Computing and Systems}"
3241da177e4SLinus Torvalds,Month="October"
3251da177e4SLinus Torvalds,Year="1998"
3261da177e4SLinus Torvalds,pages="509-518"
3271da177e4SLinus Torvalds,Address="Las Vegas, NV"
3281da177e4SLinus Torvalds}
3291da177e4SLinus Torvalds
3301da177e4SLinus Torvalds@Conference{Gamsa99
3311da177e4SLinus Torvalds,Author="Ben Gamsa and Orran Krieger and Jonathan Appavoo and Michael Stumm"
3321da177e4SLinus Torvalds,Title="Tornado: Maximizing Locality and Concurrency in a Shared Memory
3331da177e4SLinus TorvaldsMultiprocessor Operating System"
3341da177e4SLinus Torvalds,Booktitle="{Proceedings of the 3\textsuperscript{rd} Symposium on
3351da177e4SLinus TorvaldsOperating System Design and Implementation}"
3361da177e4SLinus Torvalds,Month="February"
3371da177e4SLinus Torvalds,Year="1999"
3381da177e4SLinus Torvalds,pages="87-100"
3391da177e4SLinus Torvalds,Address="New Orleans, LA"
3401da177e4SLinus Torvalds}
3411da177e4SLinus Torvalds
3421da177e4SLinus Torvalds@techreport{Slingwine01
3431da177e4SLinus Torvalds,author="John D. Slingwine and Paul E. McKenney"
3441da177e4SLinus Torvalds,title="Apparatus and method for achieving reduced overhead
3451da177e4SLinus Torvaldsmutual exclusion and maintaining coherency in a multiprocessor
3461da177e4SLinus Torvaldssystem utilizing execution history and thread monitoring"
3471da177e4SLinus Torvalds,institution="US Patent and Trademark Office"
3481da177e4SLinus Torvalds,address="Washington, DC"
3491da177e4SLinus Torvalds,year="2001"
3501da177e4SLinus Torvalds,number="US Patent 5,219,690 (contributed under GPL)"
3511da177e4SLinus Torvalds,month="April"
3521da177e4SLinus Torvalds}
3531da177e4SLinus Torvalds
3541da177e4SLinus Torvalds@Conference{McKenney01a
3551da177e4SLinus Torvalds,Author="Paul E. McKenney and Jonathan Appavoo and Andi Kleen and
3561da177e4SLinus TorvaldsOrran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
3571da177e4SLinus Torvalds,Title="Read-Copy Update"
3581da177e4SLinus Torvalds,Booktitle="{Ottawa Linux Symposium}"
3591da177e4SLinus Torvalds,Month="July"
3601da177e4SLinus Torvalds,Year="2001"
3611da177e4SLinus Torvalds,note="Available:
3621da177e4SLinus Torvalds\url{http://www.linuxsymposium.org/2001/abstracts/readcopy.php}
3631da177e4SLinus Torvalds\url{http://www.rdrop.com/users/paulmck/rclock/rclock_OLS.2001.05.01c.pdf}
3641da177e4SLinus Torvalds[Viewed June 23, 2004]"
3651da177e4SLinus Torvaldsannotation="
3661da177e4SLinus TorvaldsDescribed RCU, and presented some patches implementing and using it in
3671da177e4SLinus Torvaldsthe Linux kernel.
3681da177e4SLinus Torvalds"
3691da177e4SLinus Torvalds}
3701da177e4SLinus Torvalds
3711da177e4SLinus Torvalds@Conference{Linder02a
3721da177e4SLinus Torvalds,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni"
3731da177e4SLinus Torvalds,Title="Scalability of the Directory Entry Cache"
3741da177e4SLinus Torvalds,Booktitle="{Ottawa Linux Symposium}"
3751da177e4SLinus Torvalds,Month="June"
3761da177e4SLinus Torvalds,Year="2002"
3771da177e4SLinus Torvalds,pages="289-300"
3781da177e4SLinus Torvalds}
3791da177e4SLinus Torvalds
3801da177e4SLinus Torvalds@Conference{McKenney02a
3811da177e4SLinus Torvalds,Author="Paul E. McKenney and Dipankar Sarma and
3821da177e4SLinus TorvaldsAndrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
3831da177e4SLinus Torvalds,Title="Read-Copy Update"
3841da177e4SLinus Torvalds,Booktitle="{Ottawa Linux Symposium}"
3851da177e4SLinus Torvalds,Month="June"
3861da177e4SLinus Torvalds,Year="2002"
3871da177e4SLinus Torvalds,pages="338-367"
3881da177e4SLinus Torvalds,note="Available:
3891da177e4SLinus Torvalds\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz}
3901da177e4SLinus Torvalds[Viewed June 23, 2004]"
3911da177e4SLinus Torvalds}
3921da177e4SLinus Torvalds
393f85d6c71SPaul E. McKenney@conference{Michael02a
394f85d6c71SPaul E. McKenney,author="Maged M. Michael"
395f85d6c71SPaul E. McKenney,title="Safe Memory Reclamation for Dynamic Lock-Free Objects Using Atomic
396f85d6c71SPaul E. McKenneyReads and Writes"
397f85d6c71SPaul E. McKenney,Year="2002"
398f85d6c71SPaul E. McKenney,Month="August"
399f85d6c71SPaul E. McKenney,booktitle="{Proceedings of the 21\textsuperscript{st} Annual ACM
400f85d6c71SPaul E. McKenneySymposium on Principles of Distributed Computing}"
401f85d6c71SPaul E. McKenney,pages="21-30"
402f85d6c71SPaul E. McKenney,annotation="
403f85d6c71SPaul E. McKenney	Each thread keeps an array of pointers to items that it is
404f85d6c71SPaul E. McKenney	currently referencing.	Sort of an inside-out garbage collection
405f85d6c71SPaul E. McKenney	mechanism, but one that requires the accessing code to explicitly
406f85d6c71SPaul E. McKenney	state its needs.  Also requires read-side memory barriers on
407f85d6c71SPaul E. McKenney	most architectures.
408f85d6c71SPaul E. McKenney"
409f85d6c71SPaul E. McKenney}
410f85d6c71SPaul E. McKenney
411f85d6c71SPaul E. McKenney@conference{Michael02b
412f85d6c71SPaul E. McKenney,author="Maged M. Michael"
413f85d6c71SPaul E. McKenney,title="High Performance Dynamic Lock-Free Hash Tables and List-Based Sets"
414f85d6c71SPaul E. McKenney,Year="2002"
415f85d6c71SPaul E. McKenney,Month="August"
416f85d6c71SPaul E. McKenney,booktitle="{Proceedings of the 14\textsuperscript{th} Annual ACM
417f85d6c71SPaul E. McKenneySymposium on Parallel
418f85d6c71SPaul E. McKenneyAlgorithms and Architecture}"
419f85d6c71SPaul E. McKenney,pages="73-82"
420f85d6c71SPaul E. McKenney,annotation="
421f85d6c71SPaul E. McKenney	Like the title says...
422f85d6c71SPaul E. McKenney"
423f85d6c71SPaul E. McKenney}
424f85d6c71SPaul E. McKenney
425f85d6c71SPaul E. McKenney@InProceedings{HerlihyLM02
426f85d6c71SPaul E. McKenney,author={Maurice Herlihy and Victor Luchangco and Mark Moir}
427f85d6c71SPaul E. McKenney,title="The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized,
428f85d6c71SPaul E. McKenneyLock-Free Data Structures"
429f85d6c71SPaul E. McKenney,booktitle={Proceedings of 16\textsuperscript{th} International
430f85d6c71SPaul E. McKenneySymposium on Distributed Computing}
431f85d6c71SPaul E. McKenney,year=2002
432f85d6c71SPaul E. McKenney,month="October"
433f85d6c71SPaul E. McKenney,pages="339-353"
434f85d6c71SPaul E. McKenney}
435f85d6c71SPaul E. McKenney
4361da177e4SLinus Torvalds@article{Appavoo03a
4371da177e4SLinus Torvalds,author="J. Appavoo and K. Hui and C. A. N. Soules and R. W. Wisniewski and
4381da177e4SLinus TorvaldsD. M. {Da Silva} and O. Krieger and M. A. Auslander and D. J. Edelsohn and
4391da177e4SLinus TorvaldsB. Gamsa and G. R. Ganger and P. McKenney and M. Ostrowski and
4401da177e4SLinus TorvaldsB. Rosenburg and M. Stumm and J. Xenidis"
4411da177e4SLinus Torvalds,title="Enabling Autonomic Behavior in Systems Software With Hot Swapping"
4421da177e4SLinus Torvalds,Year="2003"
4431da177e4SLinus Torvalds,Month="January"
4441da177e4SLinus Torvalds,journal="IBM Systems Journal"
4451da177e4SLinus Torvalds,volume="42"
4461da177e4SLinus Torvalds,number="1"
4471da177e4SLinus Torvalds,pages="60-76"
4481da177e4SLinus Torvalds}
4491da177e4SLinus Torvalds
4501da177e4SLinus Torvalds@Conference{Arcangeli03
4511da177e4SLinus Torvalds,Author="Andrea Arcangeli and Mingming Cao and Paul E. McKenney and
4521da177e4SLinus TorvaldsDipankar Sarma"
4531da177e4SLinus Torvalds,Title="Using Read-Copy Update Techniques for {System V IPC} in the
4541da177e4SLinus Torvalds{Linux} 2.5 Kernel"
4551da177e4SLinus Torvalds,Booktitle="Proceedings of the 2003 USENIX Annual Technical Conference
4561da177e4SLinus Torvalds(FREENIX Track)"
4571da177e4SLinus Torvalds,Publisher="USENIX Association"
4581da177e4SLinus Torvalds,year="2003"
4591da177e4SLinus Torvalds,month="June"
4601da177e4SLinus Torvalds,pages="297-310"
4611da177e4SLinus Torvalds}
4621da177e4SLinus Torvalds
4631da177e4SLinus Torvalds@article{McKenney03a
4641da177e4SLinus Torvalds,author="Paul E. McKenney"
4651da177e4SLinus Torvalds,title="Using {RCU} in the {Linux} 2.5 Kernel"
4661da177e4SLinus Torvalds,Year="2003"
4671da177e4SLinus Torvalds,Month="October"
4681da177e4SLinus Torvalds,journal="Linux Journal"
4691da177e4SLinus Torvalds,volume="1"
4701da177e4SLinus Torvalds,number="114"
4711da177e4SLinus Torvalds,pages="18-26"
4721da177e4SLinus Torvalds}
4731da177e4SLinus Torvalds
474a83f1fe2SPaul E. McKenney@techreport{Friedberg03a
475a83f1fe2SPaul E. McKenney,author="Stuart A. Friedberg"
476a83f1fe2SPaul E. McKenney,title="Lock-Free Wild Card Search Data Structure and Method"
477a83f1fe2SPaul E. McKenney,institution="US Patent and Trademark Office"
478a83f1fe2SPaul E. McKenney,address="Washington, DC"
479a83f1fe2SPaul E. McKenney,year="2003"
480a83f1fe2SPaul E. McKenney,number="US Patent 6,662,184 (contributed under GPL)"
481a83f1fe2SPaul E. McKenney,month="December"
482a83f1fe2SPaul E. McKenney,pages="112"
483a83f1fe2SPaul E. McKenney}
484a83f1fe2SPaul E. McKenney
4851da177e4SLinus Torvalds@article{McKenney04a
4861da177e4SLinus Torvalds,author="Paul E. McKenney and Dipankar Sarma and Maneesh Soni"
4871da177e4SLinus Torvalds,title="Scaling dcache with {RCU}"
4881da177e4SLinus Torvalds,Year="2004"
4891da177e4SLinus Torvalds,Month="January"
4901da177e4SLinus Torvalds,journal="Linux Journal"
4911da177e4SLinus Torvalds,volume="1"
4921da177e4SLinus Torvalds,number="118"
4931da177e4SLinus Torvalds,pages="38-46"
4941da177e4SLinus Torvalds}
4951da177e4SLinus Torvalds
4961da177e4SLinus Torvalds@Conference{McKenney04b
4971da177e4SLinus Torvalds,Author="Paul E. McKenney"
4981da177e4SLinus Torvalds,Title="{RCU} vs. Locking Performance on Different {CPUs}"
4991da177e4SLinus Torvalds,Booktitle="{linux.conf.au}"
5001da177e4SLinus Torvalds,Month="January"
5011da177e4SLinus Torvalds,Year="2004"
5021da177e4SLinus Torvalds,Address="Adelaide, Australia"
5031da177e4SLinus Torvalds,note="Available:
5041da177e4SLinus Torvalds\url{http://www.linux.org.au/conf/2004/abstracts.html#90}
5051da177e4SLinus Torvalds\url{http://www.rdrop.com/users/paulmck/rclock/lockperf.2004.01.17a.pdf}
5061da177e4SLinus Torvalds[Viewed June 23, 2004]"
5071da177e4SLinus Torvalds}
5081da177e4SLinus Torvalds
5091da177e4SLinus Torvalds@phdthesis{PaulEdwardMcKenneyPhD
5101da177e4SLinus Torvalds,author="Paul E. McKenney"
5111da177e4SLinus Torvalds,title="Exploiting Deferred Destruction:
5121da177e4SLinus TorvaldsAn Analysis of Read-Copy-Update Techniques
5131da177e4SLinus Torvaldsin Operating System Kernels"
5141da177e4SLinus Torvalds,school="OGI School of Science and Engineering at
5151da177e4SLinus TorvaldsOregon Health and Sciences University"
5161da177e4SLinus Torvalds,year="2004"
517a83f1fe2SPaul E. McKenney,note="Available:
518a83f1fe2SPaul E. McKenney\url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf}
519a83f1fe2SPaul E. McKenney[Viewed October 15, 2004]"
5201da177e4SLinus Torvalds}
5211da177e4SLinus Torvalds
5221da177e4SLinus Torvalds@Conference{Sarma04c
5231da177e4SLinus Torvalds,Author="Dipankar Sarma and Paul E. McKenney"
5241da177e4SLinus Torvalds,Title="Making RCU Safe for Deep Sub-Millisecond Response Realtime Applications"
5251da177e4SLinus Torvalds,Booktitle="Proceedings of the 2004 USENIX Annual Technical Conference
5261da177e4SLinus Torvalds(FREENIX Track)"
5271da177e4SLinus Torvalds,Publisher="USENIX Association"
5281da177e4SLinus Torvalds,year="2004"
5291da177e4SLinus Torvalds,month="June"
5301da177e4SLinus Torvalds,pages="182-191"
5311da177e4SLinus Torvalds}
532a83f1fe2SPaul E. McKenney
533a83f1fe2SPaul E. McKenney@unpublished{JamesMorris04b
534a83f1fe2SPaul E. McKenney,Author="James Morris"
535a83f1fe2SPaul E. McKenney,Title="Recent Developments in {SELinux} Kernel Performance"
536a83f1fe2SPaul E. McKenney,month="December"
537a83f1fe2SPaul E. McKenney,year="2004"
538a83f1fe2SPaul E. McKenney,note="Available:
539a83f1fe2SPaul E. McKenney\url{http://www.livejournal.com/users/james_morris/2153.html}
540a83f1fe2SPaul E. McKenney[Viewed December 10, 2004]"
541a83f1fe2SPaul E. McKenney}
542dd81eca8SPaul E. McKenney
543dd81eca8SPaul E. McKenney@unpublished{PaulMcKenney05a
544dd81eca8SPaul E. McKenney,Author="Paul E. McKenney"
545dd81eca8SPaul E. McKenney,Title="{[RFC]} {RCU} and {CONFIG\_PREEMPT\_RT} progress"
546dd81eca8SPaul E. McKenney,month="May"
547dd81eca8SPaul E. McKenney,year="2005"
548dd81eca8SPaul E. McKenney,note="Available:
549dd81eca8SPaul E. McKenney\url{http://lkml.org/lkml/2005/5/9/185}
550dd81eca8SPaul E. McKenney[Viewed May 13, 2005]"
551dd81eca8SPaul E. McKenney,annotation="
552dd81eca8SPaul E. McKenney	First publication of working lock-based deferred free patches
553dd81eca8SPaul E. McKenney	for the CONFIG_PREEMPT_RT environment.
554dd81eca8SPaul E. McKenney"
555dd81eca8SPaul E. McKenney}
556dd81eca8SPaul E. McKenney
557dd81eca8SPaul E. McKenney@conference{PaulMcKenney05b
558dd81eca8SPaul E. McKenney,Author="Paul E. McKenney and Dipankar Sarma"
559dd81eca8SPaul E. McKenney,Title="Towards Hard Realtime Response from the Linux Kernel on SMP Hardware"
560dd81eca8SPaul E. McKenney,Booktitle="linux.conf.au 2005"
561dd81eca8SPaul E. McKenney,month="April"
562dd81eca8SPaul E. McKenney,year="2005"
563dd81eca8SPaul E. McKenney,address="Canberra, Australia"
564dd81eca8SPaul E. McKenney,note="Available:
565dd81eca8SPaul E. McKenney\url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf}
566dd81eca8SPaul E. McKenney[Viewed May 13, 2005]"
567dd81eca8SPaul E. McKenney,annotation="
568dd81eca8SPaul E. McKenney	Realtime turns into making RCU yet more realtime friendly.
569dd81eca8SPaul E. McKenney"
570dd81eca8SPaul E. McKenney}
571f85d6c71SPaul E. McKenney
572f85d6c71SPaul E. McKenney@conference{ThomasEHart2006a
573f85d6c71SPaul E. McKenney,Author="Thomas E. Hart and Paul E. McKenney and Angela Demke Brown"
574f85d6c71SPaul E. McKenney,Title="Making Lockless Synchronization Fast: Performance Implications
575f85d6c71SPaul E. McKenneyof Memory Reclamation"
576f85d6c71SPaul E. McKenney,Booktitle="20\textsuperscript{th} {IEEE} International Parallel and
577f85d6c71SPaul E. McKenneyDistributed Processing Symposium"
578f85d6c71SPaul E. McKenney,month="April"
579f85d6c71SPaul E. McKenney,year="2006"
580f85d6c71SPaul E. McKenney,day="25-29"
581f85d6c71SPaul E. McKenney,address="Rhodes, Greece"
582f85d6c71SPaul E. McKenney,annotation="
583f85d6c71SPaul E. McKenney	Compares QSBR (AKA "classic RCU"), HPBR, EBR, and lock-free
584f85d6c71SPaul E. McKenney	reference counting.
585f85d6c71SPaul E. McKenney"
586f85d6c71SPaul E. McKenney}
587f85d6c71SPaul E. McKenney
588f85d6c71SPaul E. McKenney@Conference{PaulEMcKenney2006b
589f85d6c71SPaul E. McKenney,Author="Paul E. McKenney and Dipankar Sarma and Ingo Molnar and
590f85d6c71SPaul E. McKenneySuparna Bhattacharya"
591f85d6c71SPaul E. McKenney,Title="Extending RCU for Realtime and Embedded Workloads"
592f85d6c71SPaul E. McKenney,Booktitle="{Ottawa Linux Symposium}"
593f85d6c71SPaul E. McKenney,Month="July"
594f85d6c71SPaul E. McKenney,Year="2006"
595f85d6c71SPaul E. McKenney,pages="v2 123-138"
596f85d6c71SPaul E. McKenney,note="Available:
597f85d6c71SPaul E. McKenney\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
598f85d6c71SPaul E. McKenney\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf}
599f85d6c71SPaul E. McKenney[Viewed January 1, 2007]"
600f85d6c71SPaul E. McKenney,annotation="
601f85d6c71SPaul E. McKenney	Described how to improve the -rt implementation of realtime RCU.
602f85d6c71SPaul E. McKenney"
603f85d6c71SPaul E. McKenney}
604f85d6c71SPaul E. McKenney
605f85d6c71SPaul E. McKenney@unpublished{PaulEMcKenney2006c
606f85d6c71SPaul E. McKenney,Author="Paul E. McKenney"
607f85d6c71SPaul E. McKenney,Title="Sleepable {RCU}"
608f85d6c71SPaul E. McKenney,month="October"
609f85d6c71SPaul E. McKenney,day="9"
610f85d6c71SPaul E. McKenney,year="2006"
611f85d6c71SPaul E. McKenney,note="Available:
612f85d6c71SPaul E. McKenney\url{http://lwn.net/Articles/202847/}
613f85d6c71SPaul E. McKenneyRevised:
614f85d6c71SPaul E. McKenney\url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf}
615f85d6c71SPaul E. McKenney[Viewed August 21, 2006]"
616f85d6c71SPaul E. McKenney,annotation="
617f85d6c71SPaul E. McKenney	LWN article introducing SRCU.
618f85d6c71SPaul E. McKenney"
619f85d6c71SPaul E. McKenney}
620f85d6c71SPaul E. McKenney
621f85d6c71SPaul E. McKenney@unpublished{RobertOlsson2006a
622f85d6c71SPaul E. McKenney,Author="Robert Olsson and Stefan Nilsson"
623f85d6c71SPaul E. McKenney,Title="{TRASH}: A dynamic {LC}-trie and hash data structure"
624f85d6c71SPaul E. McKenney,month="August"
625f85d6c71SPaul E. McKenney,day="18"
626f85d6c71SPaul E. McKenney,year="2006"
627f85d6c71SPaul E. McKenney,note="Available:
628f85d6c71SPaul E. McKenney\url{http://www.nada.kth.se/~snilsson/public/papers/trash/trash.pdf}
629f85d6c71SPaul E. McKenney[Viewed February 24, 2007]"
630f85d6c71SPaul E. McKenney,annotation="
631f85d6c71SPaul E. McKenney	RCU-protected dynamic trie-hash combination.
632f85d6c71SPaul E. McKenney"
633f85d6c71SPaul E. McKenney}
634f85d6c71SPaul E. McKenney
635f85d6c71SPaul E. McKenney@unpublished{ThomasEHart2007a
636f85d6c71SPaul E. McKenney,Author="Thomas E. Hart and Paul E. McKenney and Angela Demke Brown and Jonathan Walpole"
637f85d6c71SPaul E. McKenney,Title="Performance of memory reclamation for lockless synchronization"
638f85d6c71SPaul E. McKenney,journal="J. Parallel Distrib. Comput."
639f85d6c71SPaul E. McKenney,year="2007"
640f85d6c71SPaul E. McKenney,note="To appear in J. Parallel Distrib. Comput.
641f85d6c71SPaul E. McKenney       \url{doi=10.1016/j.jpdc.2007.04.010}"
642f85d6c71SPaul E. McKenney,annotation={
643f85d6c71SPaul E. McKenney	Compares QSBR (AKA "classic RCU"), HPBR, EBR, and lock-free
644f85d6c71SPaul E. McKenney	reference counting.  Journal version of ThomasEHart2006a.
645f85d6c71SPaul E. McKenney}
646f85d6c71SPaul E. McKenney}
647f85d6c71SPaul E. McKenney
648f85d6c71SPaul E. McKenney@unpublished{PaulEMcKenney2007QRCUspin
649f85d6c71SPaul E. McKenney,Author="Paul E. McKenney"
650f85d6c71SPaul E. McKenney,Title="Using Promela and Spin to verify parallel algorithms"
651f85d6c71SPaul E. McKenney,month="August"
652f85d6c71SPaul E. McKenney,day="1"
653f85d6c71SPaul E. McKenney,year="2007"
654f85d6c71SPaul E. McKenney,note="Available:
655f85d6c71SPaul E. McKenney\url{http://lwn.net/Articles/243851/}
656f85d6c71SPaul E. McKenney[Viewed September 8, 2007]"
657f85d6c71SPaul E. McKenney,annotation="
658f85d6c71SPaul E. McKenney	LWN article describing Promela and spin, and also using Oleg
659f85d6c71SPaul E. McKenney	Nesterov's QRCU as an example (with Paul McKenney's fastpath).
660f85d6c71SPaul E. McKenney"
661f85d6c71SPaul E. McKenney}
662f85d6c71SPaul E. McKenney
663*32300751SPaul E. McKenney@unpublished{PaulEMcKenney2007PreemptibleRCU
664*32300751SPaul E. McKenney,Author="Paul E. McKenney"
665*32300751SPaul E. McKenney,Title="The design of preemptible read-copy-update"
666*32300751SPaul E. McKenney,month="October"
667*32300751SPaul E. McKenney,day="8"
668*32300751SPaul E. McKenney,year="2007"
669*32300751SPaul E. McKenney,note="Available:
670*32300751SPaul E. McKenney\url{http://lwn.net/Articles/253651/}
671*32300751SPaul E. McKenney[Viewed October 25, 2007]"
672*32300751SPaul E. McKenney,annotation="
673*32300751SPaul E. McKenney	LWN article describing the design of preemptible RCU.
674*32300751SPaul E. McKenney"
675*32300751SPaul E. McKenney}
676*32300751SPaul E. McKenney
677*32300751SPaul E. McKenney########################################################################
678*32300751SPaul E. McKenney#
679*32300751SPaul E. McKenney#	"What is RCU?" LWN series.
680*32300751SPaul E. McKenney#
681*32300751SPaul E. McKenney
682*32300751SPaul E. McKenney@unpublished{PaulEMcKenney2007WhatIsRCUFundamentally
683*32300751SPaul E. McKenney,Author="Paul E. McKenney and Jonathan Walpole"
684*32300751SPaul E. McKenney,Title="What is {RCU}, Fundamentally?"
685*32300751SPaul E. McKenney,month="December"
686*32300751SPaul E. McKenney,day="17"
687*32300751SPaul E. McKenney,year="2007"
688*32300751SPaul E. McKenney,note="Available:
689*32300751SPaul E. McKenney\url{http://lwn.net/Articles/262464/}
690*32300751SPaul E. McKenney[Viewed December 27, 2007]"
691*32300751SPaul E. McKenney,annotation="
692*32300751SPaul E. McKenney	Lays out the three basic components of RCU: (1) publish-subscribe,
693*32300751SPaul E. McKenney	(2) wait for pre-existing readers to complete, and (2) maintain
694*32300751SPaul E. McKenney	multiple versions.
695*32300751SPaul E. McKenney"
696*32300751SPaul E. McKenney}
697*32300751SPaul E. McKenney
698*32300751SPaul E. McKenney@unpublished{PaulEMcKenney2008WhatIsRCUUsage
699*32300751SPaul E. McKenney,Author="Paul E. McKenney"
700*32300751SPaul E. McKenney,Title="What is {RCU}? Part 2: Usage"
701*32300751SPaul E. McKenney,month="January"
702*32300751SPaul E. McKenney,day="4"
703*32300751SPaul E. McKenney,year="2008"
704*32300751SPaul E. McKenney,note="Available:
705*32300751SPaul E. McKenney\url{http://lwn.net/Articles/263130/}
706*32300751SPaul E. McKenney[Viewed January 4, 2008]"
707*32300751SPaul E. McKenney,annotation="
708*32300751SPaul E. McKenney	Lays out six uses of RCU:
709*32300751SPaul E. McKenney	1. RCU is a Reader-Writer Lock Replacement
710*32300751SPaul E. McKenney	2. RCU is a Restricted Reference-Counting Mechanism
711*32300751SPaul E. McKenney	3. RCU is a Bulk Reference-Counting Mechanism
712*32300751SPaul E. McKenney	4. RCU is a Poor Man's Garbage Collector
713*32300751SPaul E. McKenney	5. RCU is a Way of Providing Existence Guarantees
714*32300751SPaul E. McKenney	6. RCU is a Way of Waiting for Things to Finish
715*32300751SPaul E. McKenney"
716*32300751SPaul E. McKenney}
717*32300751SPaul E. McKenney
718*32300751SPaul E. McKenney@unpublished{PaulEMcKenney2008WhatIsRCUAPI
719*32300751SPaul E. McKenney,Author="Paul E. McKenney"
720*32300751SPaul E. McKenney,Title="{RCU} part 3: the {RCU} {API}"
721*32300751SPaul E. McKenney,month="January"
722*32300751SPaul E. McKenney,day="17"
723*32300751SPaul E. McKenney,year="2008"
724*32300751SPaul E. McKenney,note="Available:
725*32300751SPaul E. McKenney\url{http://lwn.net/Articles/264090/}
726*32300751SPaul E. McKenney[Viewed January 10, 2008]"
727*32300751SPaul E. McKenney,annotation="
728*32300751SPaul E. McKenney	Gives an overview of the Linux-kernel RCU API and a brief annotated RCU
729*32300751SPaul E. McKenney	bibliography.
730*32300751SPaul E. McKenney"
731*32300751SPaul E. McKenney}
732*32300751SPaul E. McKenney
733*32300751SPaul E. McKenney@article{DinakarGuniguntala2008IBMSysJ
734*32300751SPaul E. McKenney,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole"
735*32300751SPaul E. McKenney,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}"
736*32300751SPaul E. McKenney,Year="2008"
737*32300751SPaul E. McKenney,Month="April"
738*32300751SPaul E. McKenney,journal="IBM Systems Journal"
739*32300751SPaul E. McKenney,volume="47"
740*32300751SPaul E. McKenney,number="2"
741*32300751SPaul E. McKenney,pages="@@-@@"
742*32300751SPaul E. McKenney,annotation="
743*32300751SPaul E. McKenney	RCU, realtime RCU, sleepable RCU, performance.
744*32300751SPaul E. McKenney"
745*32300751SPaul E. McKenney}
746