aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/RCU
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2013-05-01 13:05:01 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2013-08-20 00:39:27 -0400
commit6ae3771850910018c89b4ce063c52008bf2c8d6a (patch)
treef7ad31aa03b0b87da3186af48102175bb38fa7d0 /Documentation/RCU
parentd84297c99bd9f63baf92c9f2d36582f879858664 (diff)
rcu: Update RTFP documentation
Note that this commit also updates the formatting of serveral of the bibtex entries to conform to that of my .bib files. I started accumulating entries back in the 1980s, back when bibtex insisted that comma (",") was a separator, not a terminator. This rule forced commas to the fronts of lines. 25 years later, bibtex allows commas to be terminators, but I am too lazy to rework all my .bib files. Keeping the same format as my .bib files allows my to simply incorporate my RCU.bib file into Documentation/RCU/RTFP.txt, which is much easier than my earlier practice of keeping track of what had changed and adding individual entries. (I sometimes find relevant papers that were published some years back, for example.) In addition, this change adds entries for papers published in the last year or so. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Diffstat (limited to 'Documentation/RCU')
-rw-r--r--Documentation/RCU/RTFP.txt858
1 files changed, 553 insertions, 305 deletions
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt
index 7f40c72a9c51..273e654d7d08 100644
--- a/Documentation/RCU/RTFP.txt
+++ b/Documentation/RCU/RTFP.txt
@@ -39,7 +39,7 @@ in read-mostly situations. This algorithm does take pains to avoid
39write-side contention and parallelize the other write-side overheads by 39write-side contention and parallelize the other write-side overheads by
40providing a fine-grained locking design, however, it would be interesting 40providing a fine-grained locking design, however, it would be interesting
41to see how much of the performance advantage reported in 1990 remains 41to see how much of the performance advantage reported in 1990 remains
42in 2004. 42today.
43 43
44At about this same time, Adams [Adams91] described ``chaotic relaxation'', 44At about this same time, Adams [Adams91] described ``chaotic relaxation'',
45where the normal barriers between successive iterations of convergent 45where the normal barriers between successive iterations of convergent
@@ -86,9 +86,9 @@ DYNIX/ptx kernel. The corresponding conference paper appeared in 1998
86[McKenney98]. 86[McKenney98].
87 87
88In 1999, the Tornado and K42 groups described their "generations" 88In 1999, the Tornado and K42 groups described their "generations"
89mechanism, which quite similar to RCU [Gamsa99]. These operating systems 89mechanism, which is quite similar to RCU [Gamsa99]. These operating
90made pervasive use of RCU in place of "existence locks", which greatly 90systems made pervasive use of RCU in place of "existence locks", which
91simplifies locking hierarchies. 91greatly simplifies locking hierarchies and helps avoid deadlocks.
92 92
932001 saw the first RCU presentation involving Linux [McKenney01a] 932001 saw the first RCU presentation involving Linux [McKenney01a]
94at OLS. The resulting abundance of RCU patches was presented the 94at OLS. The resulting abundance of RCU patches was presented the
@@ -106,8 +106,11 @@ these techniques still impose significant read-side overhead in the
106form of memory barriers. Researchers at Sun worked along similar lines 106form of memory barriers. Researchers at Sun worked along similar lines
107in the same timeframe [HerlihyLM02]. These techniques can be thought 107in the same timeframe [HerlihyLM02]. These techniques can be thought
108of as inside-out reference counts, where the count is represented by the 108of as inside-out reference counts, where the count is represented by the
109number of hazard pointers referencing a given data structure (rather than 109number of hazard pointers referencing a given data structure rather than
110the more conventional counter field within the data structure itself). 110the more conventional counter field within the data structure itself.
111The key advantage of inside-out reference counts is that they can be
112stored in immortal variables, thus allowing races between access and
113deletion to be avoided.
111 114
112By the same token, RCU can be thought of as a "bulk reference count", 115By the same token, RCU can be thought of as a "bulk reference count",
113where some form of reference counter covers all reference by a given CPU 116where some form of reference counter covers all reference by a given CPU
@@ -179,7 +182,25 @@ tree using software transactional memory to protect concurrent updates
179(strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of 182(strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of
180RCU-protected resizeable hash tables [Triplett:2011:RPHash], the 3.0 RCU 183RCU-protected resizeable hash tables [Triplett:2011:RPHash], the 3.0 RCU
181trainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the 184trainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the
182Lockers" LWN article [NeilBrown2011MeetTheLockers]. 185Lockers" LWN article [NeilBrown2011MeetTheLockers]. Some academic
186work looked at debugging uses of RCU [Seyster:2011:RFA:2075416.2075425].
187
188In 2012, Josh Triplett received his Ph.D. with his dissertation
189covering RCU-protected resizable hash tables and the relationship
190between memory barriers and read-side traversal order: If the updater
191is making changes in the opposite direction from the read-side traveral
192order, the updater need only execute a memory-barrier instruction,
193but if in the same direction, the updater needs to wait for a grace
194period between the individual updates [JoshTriplettPhD]. Also in 2012,
195after seventeen years of attempts, an RCU paper made it into a top-flight
196academic journal, IEEE Transactions on Parallel and Distributed Systems
197[MathieuDesnoyers2012URCU]. A group of researchers in Spain applied
198user-level RCU to crowd simulation [GuillermoVigueras2012RCUCrowd], and
199another group of researchers in Europe produced a formal description of
200RCU based on separation logic [AlexeyGotsman2012VerifyGraceExtended],
201which was published in the 2013 European Symposium on Programming
202[AlexeyGotsman2013ESOPRCU].
203
183 204
184 205
185Bibtex Entries 206Bibtex Entries
@@ -193,13 +214,12 @@ Bibtex Entries
193,volume="5" 214,volume="5"
194,number="3" 215,number="3"
195,pages="354-382" 216,pages="354-382"
196,note="Available:
197\url{http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE,}
198[Viewed December 3, 2007]"
199,annotation={ 217,annotation={
200 Use garbage collector to clean up data after everyone is done with it. 218 Use garbage collector to clean up data after everyone is done with it.
201 . 219 .
202 Oldest use of something vaguely resembling RCU that I have found. 220 Oldest use of something vaguely resembling RCU that I have found.
221 http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE,
222 [Viewed December 3, 2007]
203} 223}
204} 224}
205 225
@@ -309,7 +329,7 @@ for Programming Languages and Operating Systems}"
309,doi = {http://doi.acm.org/10.1145/42392.42399} 329,doi = {http://doi.acm.org/10.1145/42392.42399}
310,publisher = {ACM} 330,publisher = {ACM}
311,address = {New York, NY, USA} 331,address = {New York, NY, USA}
312,annotation= { 332,annotation={
313 At the top of page 307: "Conflicts with deposits and withdrawals 333 At the top of page 307: "Conflicts with deposits and withdrawals
314 are necessary if the reported total is to be up to date. They 334 are necessary if the reported total is to be up to date. They
315 could be avoided by having total return a sum that is slightly 335 could be avoided by having total return a sum that is slightly
@@ -346,8 +366,9 @@ for Programming Languages and Operating Systems}"
346} 366}
347} 367}
348 368
349@Book{Adams91 369# Was Adams91, see also syncrefs.bib.
350,Author="Gregory R. Adams" 370@Book{Andrews91textbook
371,Author="Gregory R. Andrews"
351,title="Concurrent Programming, Principles, and Practices" 372,title="Concurrent Programming, Principles, and Practices"
352,Publisher="Benjamin Cummins" 373,Publisher="Benjamin Cummins"
353,Year="1991" 374,Year="1991"
@@ -398,39 +419,39 @@ for Programming Languages and Operating Systems}"
398} 419}
399} 420}
400 421
401@conference{Pu95a, 422@conference{Pu95a
402Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and 423,Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and
403Crispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and 424Crispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and
404Ke Zhang", 425Ke Zhang"
405Title = "Optimistic Incremental Specialization: Streamlining a Commercial 426,Title = "Optimistic Incremental Specialization: Streamlining a Commercial
406Operating System", 427,Operating System"
407Booktitle = "15\textsuperscript{th} ACM Symposium on 428,Booktitle = "15\textsuperscript{th} ACM Symposium on
408Operating Systems Principles (SOSP'95)", 429,Operating Systems Principles (SOSP'95)"
409address = "Copper Mountain, CO", 430,address = "Copper Mountain, CO"
410month="December", 431,month="December"
411year="1995", 432,year="1995"
412pages="314-321", 433,pages="314-321"
413annotation=" 434,annotation={
414 Uses a replugger, but with a flag to signal when people are 435 Uses a replugger, but with a flag to signal when people are
415 using the resource at hand. Only one reader at a time. 436 using the resource at hand. Only one reader at a time.
416" 437}
417} 438}
418 439
419@conference{Cowan96a, 440@conference{Cowan96a
420Author = "Crispin Cowan and Tito Autrey and Charles Krasic and 441,Author = "Crispin Cowan and Tito Autrey and Charles Krasic and
421Calton Pu and Jonathan Walpole", 442,Calton Pu and Jonathan Walpole"
422Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System", 443,Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System"
423Booktitle = "International Conference on Configurable Distributed Systems 444,Booktitle = "International Conference on Configurable Distributed Systems
424(ICCDS'96)", 445(ICCDS'96)"
425address = "Annapolis, MD", 446,address = "Annapolis, MD"
426month="May", 447,month="May"
427year="1996", 448,year="1996"
428pages="108", 449,pages="108"
429isbn="0-8186-7395-8", 450,isbn="0-8186-7395-8"
430annotation=" 451,annotation={
431 Uses a replugger, but with a counter to signal when people are 452 Uses a replugger, but with a counter to signal when people are
432 using the resource at hand. Allows multiple readers. 453 using the resource at hand. Allows multiple readers.
433" 454}
434} 455}
435 456
436@techreport{Slingwine95 457@techreport{Slingwine95
@@ -493,14 +514,13 @@ Problems"
493,Year="1998" 514,Year="1998"
494,pages="509-518" 515,pages="509-518"
495,Address="Las Vegas, NV" 516,Address="Las Vegas, NV"
496,note="Available:
497\url{http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf}
498[Viewed December 3, 2007]"
499,annotation={ 517,annotation={
500 Describes and analyzes RCU mechanism in DYNIX/ptx. Describes 518 Describes and analyzes RCU mechanism in DYNIX/ptx. Describes
501 application to linked list update and log-buffer flushing. 519 application to linked list update and log-buffer flushing.
502 Defines 'quiescent state'. Includes both measured and analytic 520 Defines 'quiescent state'. Includes both measured and analytic
503 evaluation. 521 evaluation.
522 http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf
523 [Viewed December 3, 2007]
504} 524}
505} 525}
506 526
@@ -514,13 +534,12 @@ Operating System Design and Implementation}"
514,Year="1999" 534,Year="1999"
515,pages="87-100" 535,pages="87-100"
516,Address="New Orleans, LA" 536,Address="New Orleans, LA"
517,note="Available:
518\url{http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf}
519[Viewed August 30, 2006]"
520,annotation={ 537,annotation={
521 Use of RCU-like facility in K42/Tornado. Another independent 538 Use of RCU-like facility in K42/Tornado. Another independent
522 invention of RCU. 539 invention of RCU.
523 See especially pages 7-9 (Section 5). 540 See especially pages 7-9 (Section 5).
541 http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf
542 [Viewed August 30, 2006]
524} 543}
525} 544}
526 545
@@ -611,9 +630,9 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
611,note="Available: 630,note="Available:
612\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2} 631\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2}
613[Viewed June 23, 2004]" 632[Viewed June 23, 2004]"
614,annotation=" 633,annotation={
615 Memory-barrier and Alpha thread. 100 messages, not too bad... 634 Memory-barrier and Alpha thread. 100 messages, not too bad...
616" 635}
617} 636}
618 637
619@unpublished{Spraul01 638@unpublished{Spraul01
@@ -624,10 +643,10 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
624,note="Available: 643,note="Available:
625\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2} 644\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2}
626[Viewed June 23, 2004]" 645[Viewed June 23, 2004]"
627,annotation=" 646,annotation={
628 Suggested burying memory barriers in Linux's list-manipulation 647 Suggested burying memory barriers in Linux's list-manipulation
629 primitives. 648 primitives.
630" 649}
631} 650}
632 651
633@unpublished{LinusTorvalds2001a 652@unpublished{LinusTorvalds2001a
@@ -638,6 +657,8 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
638,note="Available: 657,note="Available:
639\url{http://lkml.org/lkml/2001/10/13/105} 658\url{http://lkml.org/lkml/2001/10/13/105}
640[Viewed August 21, 2004]" 659[Viewed August 21, 2004]"
660,annotation={
661}
641} 662}
642 663
643@unpublished{Blanchard02a 664@unpublished{Blanchard02a
@@ -657,10 +678,10 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni"
657,Month="June" 678,Month="June"
658,Year="2002" 679,Year="2002"
659,pages="289-300" 680,pages="289-300"
660,annotation=" 681,annotation={
661 Measured scalability of Linux 2.4 kernel's directory-entry cache 682 Measured scalability of Linux 2.4 kernel's directory-entry cache
662 (dcache), and measured some scalability enhancements. 683 (dcache), and measured some scalability enhancements.
663" 684}
664} 685}
665 686
666@Conference{McKenney02a 687@Conference{McKenney02a
@@ -674,10 +695,10 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
674,note="Available: 695,note="Available:
675\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz} 696\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz}
676[Viewed June 23, 2004]" 697[Viewed June 23, 2004]"
677,annotation=" 698,annotation={
678 Presented and compared a number of RCU implementations for the 699 Presented and compared a number of RCU implementations for the
679 Linux kernel. 700 Linux kernel.
680" 701}
681} 702}
682 703
683@unpublished{Sarma02a 704@unpublished{Sarma02a
@@ -688,9 +709,9 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
688,note="Available: 709,note="Available:
689\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2} 710\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2}
690[Viewed June 23, 2004]" 711[Viewed June 23, 2004]"
691,annotation=" 712,annotation={
692 Compare fastwalk and RCU for dcache. RCU won. 713 Compare fastwalk and RCU for dcache. RCU won.
693" 714}
694} 715}
695 716
696@unpublished{Barbieri02 717@unpublished{Barbieri02
@@ -701,9 +722,9 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
701,note="Available: 722,note="Available:
702\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2} 723\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2}
703[Viewed: June 23, 2004]" 724[Viewed: June 23, 2004]"
704,annotation=" 725,annotation={
705 Suggested RCU for vfs\_shared\_cred. 726 Suggested RCU for vfs\_shared\_cred.
706" 727}
707} 728}
708 729
709@unpublished{Dickins02a 730@unpublished{Dickins02a
@@ -722,10 +743,10 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
722,note="Available: 743,note="Available:
723\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2} 744\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2}
724[Viewed June 23, 2004]" 745[Viewed June 23, 2004]"
725,annotation=" 746,annotation={
726 Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x, 747 Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x,
727 2x, and 4x systems. RCU does no harm, and helps on 16x. 748 2x, and 4x systems. RCU does no harm, and helps on 16x.
728" 749}
729} 750}
730 751
731@unpublished{LinusTorvalds2003a 752@unpublished{LinusTorvalds2003a
@@ -736,14 +757,14 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell"
736,note="Available: 757,note="Available:
737\url{http://lkml.org/lkml/2003/3/9/205} 758\url{http://lkml.org/lkml/2003/3/9/205}
738[Viewed March 13, 2006]" 759[Viewed March 13, 2006]"
739,annotation=" 760,annotation={
740 Linus suggests replacing brlock with RCU and/or seqlocks: 761 Linus suggests replacing brlock with RCU and/or seqlocks:
741 . 762 .
742 'It's entirely possible that the current user could be replaced 763 'It's entirely possible that the current user could be replaced
743 by RCU and/or seqlocks, and we could get rid of brlocks entirely.' 764 by RCU and/or seqlocks, and we could get rid of brlocks entirely.'
744 . 765 .
745 Steve Hemminger responds by replacing them with RCU. 766 Steve Hemminger responds by replacing them with RCU.
746" 767}
747} 768}
748 769
749@article{Appavoo03a 770@article{Appavoo03a
@@ -758,9 +779,9 @@ B. Rosenburg and M. Stumm and J. Xenidis"
758,volume="42" 779,volume="42"
759,number="1" 780,number="1"
760,pages="60-76" 781,pages="60-76"
761,annotation=" 782,annotation={
762 Use of RCU to enable hot-swapping for autonomic behavior in K42. 783 Use of RCU to enable hot-swapping for autonomic behavior in K42.
763" 784}
764} 785}
765 786
766@unpublished{Seigh03 787@unpublished{Seigh03
@@ -769,9 +790,9 @@ B. Rosenburg and M. Stumm and J. Xenidis"
769,Year="2003" 790,Year="2003"
770,Month="March" 791,Month="March"
771,note="email correspondence" 792,note="email correspondence"
772,annotation=" 793,annotation={
773 Described the relationship of the VM/XA passive serialization to RCU. 794 Described the relationship of the VM/XA passive serialization to RCU.
774" 795}
775} 796}
776 797
777@Conference{Arcangeli03 798@Conference{Arcangeli03
@@ -785,14 +806,12 @@ Dipankar Sarma"
785,year="2003" 806,year="2003"
786,month="June" 807,month="June"
787,pages="297-310" 808,pages="297-310"
788,note="Available: 809,annotation={
789\url{http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf}
790[Viewed November 21, 2007]"
791,annotation="
792 Compared updated RCU implementations for the Linux kernel, and 810 Compared updated RCU implementations for the Linux kernel, and
793 described System V IPC use of RCU, including order-of-magnitude 811 described System V IPC use of RCU, including order-of-magnitude
794 performance improvements. 812 performance improvements.
795" 813 http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf
814}
796} 815}
797 816
798@Conference{Soules03a 817@Conference{Soules03a
@@ -820,10 +839,10 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
820,note="Available: 839,note="Available:
821\url{http://www.linuxjournal.com/article/6993} 840\url{http://www.linuxjournal.com/article/6993}
822[Viewed November 14, 2007]" 841[Viewed November 14, 2007]"
823,annotation=" 842,annotation={
824 Reader-friendly intro to RCU, with the infamous old-man-and-brat 843 Reader-friendly intro to RCU, with the infamous old-man-and-brat
825 cartoon. 844 cartoon.
826" 845}
827} 846}
828 847
829@unpublished{Sarma03a 848@unpublished{Sarma03a
@@ -832,7 +851,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
832,month="December" 851,month="December"
833,year="2003" 852,year="2003"
834,note="Message ID: 20031222180114.GA2248@in.ibm.com" 853,note="Message ID: 20031222180114.GA2248@in.ibm.com"
835,annotation="dipankar/ct.2004.03.27/RCUll.2003.12.22.patch" 854,annotation={
855 dipankar/ct.2004.03.27/RCUll.2003.12.22.patch
856}
836} 857}
837 858
838@techreport{Friedberg03a 859@techreport{Friedberg03a
@@ -844,11 +865,11 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
844,number="US Patent 6,662,184" 865,number="US Patent 6,662,184"
845,month="December" 866,month="December"
846,pages="112" 867,pages="112"
847,annotation=" 868,annotation={
848 Applies RCU to a wildcard-search Patricia tree in order to permit 869 Applies RCU to a wildcard-search Patricia tree in order to permit
849 synchronization-free lookup. RCU is used to retain removed nodes 870 synchronization-free lookup. RCU is used to retain removed nodes
850 for a grace period before freeing them. 871 for a grace period before freeing them.
851" 872}
852} 873}
853 874
854@article{McKenney04a 875@article{McKenney04a
@@ -860,12 +881,11 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
860,volume="1" 881,volume="1"
861,number="118" 882,number="118"
862,pages="38-46" 883,pages="38-46"
863,note="Available: 884,annotation={
864\url{http://www.linuxjournal.com/node/7124}
865[Viewed December 26, 2010]"
866,annotation="
867 Reader friendly intro to dcache and RCU. 885 Reader friendly intro to dcache and RCU.
868" 886 http://www.linuxjournal.com/node/7124
887 [Viewed December 26, 2010]
888}
869} 889}
870 890
871@Conference{McKenney04b 891@Conference{McKenney04b
@@ -879,10 +899,10 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
879\url{http://www.linux.org.au/conf/2004/abstracts.html#90} 899\url{http://www.linux.org.au/conf/2004/abstracts.html#90}
880\url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf} 900\url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf}
881[Viewed June 23, 2004]" 901[Viewed June 23, 2004]"
882,annotation=" 902,annotation={
883 Compares performance of RCU to that of other locking primitives 903 Compares performance of RCU to that of other locking primitives
884 over a number of CPUs (x86, Opteron, Itanium, and PPC). 904 over a number of CPUs (x86, Opteron, Itanium, and PPC).
885" 905}
886} 906}
887 907
888@unpublished{Sarma04a 908@unpublished{Sarma04a
@@ -891,7 +911,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
891,month="March" 911,month="March"
892,year="2004" 912,year="2004"
893,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}" 913,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}"
894,annotation="Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch" 914,annotation={
915 Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch
916}
895} 917}
896 918
897@unpublished{Sarma04b 919@unpublished{Sarma04b
@@ -900,7 +922,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
900,month="March" 922,month="March"
901,year="2004" 923,year="2004"
902,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}" 924,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}"
903,annotation="dipankar/rcuth.2004.03.24/rcu-throttle.patch" 925,annotation={
926 dipankar/rcuth.2004.03.24/rcu-throttle.patch
927}
904} 928}
905 929
906@unpublished{Spraul04a 930@unpublished{Spraul04a
@@ -911,9 +935,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis"
911,note="Available: 935,note="Available:
912\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2} 936\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2}
913[Viewed June 23, 2004]" 937[Viewed June 23, 2004]"
914,annotation=" 938,annotation={
915 Hierarchical-bitmap patch for RCU infrastructure. 939 Hierarchical-bitmap patch for RCU infrastructure.
916" 940}
917} 941}
918 942
919@unpublished{Steiner04a 943@unpublished{Steiner04a
@@ -950,10 +974,12 @@ Realtime Applications"
950,year="2004" 974,year="2004"
951,month="June" 975,month="June"
952,pages="182-191" 976,pages="182-191"
953,annotation=" 977,annotation={
954 Describes and compares a number of modifications to the Linux RCU 978 Describes and compares a number of modifications to the Linux RCU
955 implementation that make it friendly to realtime applications. 979 implementation that make it friendly to realtime applications.
956" 980 https://www.usenix.org/conference/2004-usenix-annual-technical-conference/making-rcu-safe-deep-sub-millisecond-response
981 [Viewed July 26, 2012]
982}
957} 983}
958 984
959@phdthesis{PaulEdwardMcKenneyPhD 985@phdthesis{PaulEdwardMcKenneyPhD
@@ -964,14 +990,13 @@ in Operating System Kernels"
964,school="OGI School of Science and Engineering at 990,school="OGI School of Science and Engineering at
965Oregon Health and Sciences University" 991Oregon Health and Sciences University"
966,year="2004" 992,year="2004"
967,note="Available: 993,annotation={
968\url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf}
969[Viewed October 15, 2004]"
970,annotation="
971 Describes RCU implementations and presents design patterns 994 Describes RCU implementations and presents design patterns
972 corresponding to common uses of RCU in several operating-system 995 corresponding to common uses of RCU in several operating-system
973 kernels. 996 kernels.
974" 997 http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf
998 [Viewed October 15, 2004]
999}
975} 1000}
976 1001
977@unpublished{PaulEMcKenney2004rcu:dereference 1002@unpublished{PaulEMcKenney2004rcu:dereference
@@ -982,9 +1007,9 @@ Oregon Health and Sciences University"
982,note="Available: 1007,note="Available:
983\url{http://lkml.org/lkml/2004/8/6/237} 1008\url{http://lkml.org/lkml/2004/8/6/237}
984[Viewed June 8, 2010]" 1009[Viewed June 8, 2010]"
985,annotation=" 1010,annotation={
986 Introduce rcu_dereference(). 1011 Introduce rcu_dereference().
987" 1012}
988} 1013}
989 1014
990@unpublished{JimHouston04a 1015@unpublished{JimHouston04a
@@ -995,11 +1020,11 @@ Oregon Health and Sciences University"
995,note="Available: 1020,note="Available:
996\url{http://lkml.org/lkml/2004/8/30/87} 1021\url{http://lkml.org/lkml/2004/8/30/87}
997[Viewed February 17, 2005]" 1022[Viewed February 17, 2005]"
998,annotation=" 1023,annotation={
999 Uses active code in rcu_read_lock() and rcu_read_unlock() to 1024 Uses active code in rcu_read_lock() and rcu_read_unlock() to
1000 make RCU happen, allowing RCU to function on CPUs that do not 1025 make RCU happen, allowing RCU to function on CPUs that do not
1001 receive a scheduling-clock interrupt. 1026 receive a scheduling-clock interrupt.
1002" 1027}
1003} 1028}
1004 1029
1005@unpublished{TomHart04a 1030@unpublished{TomHart04a
@@ -1010,9 +1035,9 @@ Oregon Health and Sciences University"
1010,note="Available: 1035,note="Available:
1011\url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html} 1036\url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html}
1012[Viewed October 15, 2004]" 1037[Viewed October 15, 2004]"
1013,annotation=" 1038,annotation={
1014 Proposes comparing RCU to lock-free methods for the Linux kernel. 1039 Proposes comparing RCU to lock-free methods for the Linux kernel.
1015" 1040}
1016} 1041}
1017 1042
1018@unpublished{Vaddagiri04a 1043@unpublished{Vaddagiri04a
@@ -1023,9 +1048,9 @@ Oregon Health and Sciences University"
1023,note="Available: 1048,note="Available:
1024\url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2} 1049\url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2}
1025[Viewed October 18, 2004]" 1050[Viewed October 18, 2004]"
1026,annotation=" 1051,annotation={
1027 Srivatsa's RCU patch for tcp_ehash lookup. 1052 Srivatsa's RCU patch for tcp_ehash lookup.
1028" 1053}
1029} 1054}
1030 1055
1031@unpublished{Thirumalai04a 1056@unpublished{Thirumalai04a
@@ -1036,9 +1061,9 @@ Oregon Health and Sciences University"
1036,note="Available: 1061,note="Available:
1037\url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2} 1062\url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2}
1038[Viewed October 18, 2004]" 1063[Viewed October 18, 2004]"
1039,annotation=" 1064,annotation={
1040 Ravikiran's lockfree FD patch. 1065 Ravikiran's lockfree FD patch.
1041" 1066}
1042} 1067}
1043 1068
1044@unpublished{Thirumalai04b 1069@unpublished{Thirumalai04b
@@ -1049,9 +1074,9 @@ Oregon Health and Sciences University"
1049,note="Available: 1074,note="Available:
1050\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2} 1075\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2}
1051[Viewed October 18, 2004]" 1076[Viewed October 18, 2004]"
1052,annotation=" 1077,annotation={
1053 Ravikiran's lockfree FD patch. 1078 Ravikiran's lockfree FD patch.
1054" 1079}
1055} 1080}
1056 1081
1057@unpublished{PaulEMcKenney2004rcu:assign:pointer 1082@unpublished{PaulEMcKenney2004rcu:assign:pointer
@@ -1062,9 +1087,9 @@ Oregon Health and Sciences University"
1062,note="Available: 1087,note="Available:
1063\url{http://lkml.org/lkml/2004/10/23/241} 1088\url{http://lkml.org/lkml/2004/10/23/241}
1064[Viewed June 8, 2010]" 1089[Viewed June 8, 2010]"
1065,annotation=" 1090,annotation={
1066 Introduce rcu_assign_pointer(). 1091 Introduce rcu_assign_pointer().
1067" 1092}
1068} 1093}
1069 1094
1070@unpublished{JamesMorris04a 1095@unpublished{JamesMorris04a
@@ -1073,12 +1098,12 @@ Oregon Health and Sciences University"
1073,day="15" 1098,day="15"
1074,month="November" 1099,month="November"
1075,year="2004" 1100,year="2004"
1076,note="Available: 1101,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2}"
1077\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2} 1102,annotation={
1078[Viewed December 10, 2004]"
1079,annotation="
1080 James Morris posts Kaigai Kohei's patch to LKML. 1103 James Morris posts Kaigai Kohei's patch to LKML.
1081" 1104 [Viewed December 10, 2004]
1105 Kaigai's patch is at https://lkml.org/lkml/2004/9/27/52
1106}
1082} 1107}
1083 1108
1084@unpublished{JamesMorris04b 1109@unpublished{JamesMorris04b
@@ -1089,9 +1114,9 @@ Oregon Health and Sciences University"
1089,note="Available: 1114,note="Available:
1090\url{http://www.livejournal.com/users/james_morris/2153.html} 1115\url{http://www.livejournal.com/users/james_morris/2153.html}
1091[Viewed December 10, 2004]" 1116[Viewed December 10, 2004]"
1092,annotation=" 1117,annotation={
1093 RCU helps SELinux performance. ;-) Made LWN. 1118 RCU helps SELinux performance. ;-) Made LWN.
1094" 1119}
1095} 1120}
1096 1121
1097@unpublished{PaulMcKenney2005RCUSemantics 1122@unpublished{PaulMcKenney2005RCUSemantics
@@ -1103,9 +1128,9 @@ Oregon Health and Sciences University"
1103,note="Available: 1128,note="Available:
1104\url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf} 1129\url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf}
1105[Viewed December 6, 2009]" 1130[Viewed December 6, 2009]"
1106,annotation=" 1131,annotation={
1107 Early derivation of RCU semantics. 1132 Early derivation of RCU semantics.
1108" 1133}
1109} 1134}
1110 1135
1111@unpublished{PaulMcKenney2005e 1136@unpublished{PaulMcKenney2005e
@@ -1117,10 +1142,10 @@ Oregon Health and Sciences University"
1117,note="Available: 1142,note="Available:
1118\url{http://lkml.org/lkml/2005/3/17/199} 1143\url{http://lkml.org/lkml/2005/3/17/199}
1119[Viewed September 5, 2005]" 1144[Viewed September 5, 2005]"
1120,annotation=" 1145,annotation={
1121 First posting showing how RCU can be safely adapted for 1146 First posting showing how RCU can be safely adapted for
1122 preemptable RCU read side critical sections. 1147 preemptable RCU read side critical sections.
1123" 1148}
1124} 1149}
1125 1150
1126@unpublished{EsbenNeilsen2005a 1151@unpublished{EsbenNeilsen2005a
@@ -1132,12 +1157,12 @@ Oregon Health and Sciences University"
1132,note="Available: 1157,note="Available:
1133\url{http://lkml.org/lkml/2005/3/18/122} 1158\url{http://lkml.org/lkml/2005/3/18/122}
1134[Viewed March 30, 2006]" 1159[Viewed March 30, 2006]"
1135,annotation=" 1160,annotation={
1136 Esben Neilsen suggests read-side suppression of grace-period 1161 Esben Neilsen suggests read-side suppression of grace-period
1137 processing for crude-but-workable realtime RCU. The downside 1162 processing for crude-but-workable realtime RCU. The downside
1138 is indefinite grace periods...But this is OK for experimentation 1163 is indefinite grace periods... But this is OK for experimentation
1139 and testing. 1164 and testing.
1140" 1165}
1141} 1166}
1142 1167
1143@unpublished{TomHart05a 1168@unpublished{TomHart05a
@@ -1149,10 +1174,10 @@ Data Structures"
1149,note="Available: 1174,note="Available:
1150\url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/} 1175\url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/}
1151[Viewed March 4, 2005]" 1176[Viewed March 4, 2005]"
1152,annotation=" 1177,annotation={
1153 Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly 1178 Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly
1154 workloads. ;-) 1179 workloads. ;-)
1155" 1180}
1156} 1181}
1157 1182
1158@unpublished{JonCorbet2005DeprecateSyncKernel 1183@unpublished{JonCorbet2005DeprecateSyncKernel
@@ -1164,10 +1189,10 @@ Data Structures"
1164,note="Available: 1189,note="Available:
1165\url{http://lwn.net/Articles/134484/} 1190\url{http://lwn.net/Articles/134484/}
1166[Viewed May 3, 2005]" 1191[Viewed May 3, 2005]"
1167,annotation=" 1192,annotation={
1168 Jon Corbet describes deprecation of synchronize_kernel() 1193 Jon Corbet describes deprecation of synchronize_kernel()
1169 in favor of synchronize_rcu() and synchronize_sched(). 1194 in favor of synchronize_rcu() and synchronize_sched().
1170" 1195}
1171} 1196}
1172 1197
1173@unpublished{PaulMcKenney05a 1198@unpublished{PaulMcKenney05a
@@ -1178,10 +1203,10 @@ Data Structures"
1178,note="Available: 1203,note="Available:
1179\url{http://lkml.org/lkml/2005/5/9/185} 1204\url{http://lkml.org/lkml/2005/5/9/185}
1180[Viewed May 13, 2005]" 1205[Viewed May 13, 2005]"
1181,annotation=" 1206,annotation={
1182 First publication of working lock-based deferred free patches 1207 First publication of working lock-based deferred free patches
1183 for the CONFIG_PREEMPT_RT environment. 1208 for the CONFIG_PREEMPT_RT environment.
1184" 1209}
1185} 1210}
1186 1211
1187@conference{PaulMcKenney05b 1212@conference{PaulMcKenney05b
@@ -1194,10 +1219,10 @@ Data Structures"
1194,note="Available: 1219,note="Available:
1195\url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf} 1220\url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf}
1196[Viewed May 13, 2005]" 1221[Viewed May 13, 2005]"
1197,annotation=" 1222,annotation={
1198 Realtime turns into making RCU yet more realtime friendly. 1223 Realtime turns into making RCU yet more realtime friendly.
1199 http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf 1224 http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf
1200" 1225}
1201} 1226}
1202 1227
1203@unpublished{PaulEMcKenneyHomePage 1228@unpublished{PaulEMcKenneyHomePage
@@ -1208,9 +1233,9 @@ Data Structures"
1208,note="Available: 1233,note="Available:
1209\url{http://www.rdrop.com/users/paulmck/} 1234\url{http://www.rdrop.com/users/paulmck/}
1210[Viewed May 25, 2005]" 1235[Viewed May 25, 2005]"
1211,annotation=" 1236,annotation={
1212 Paul McKenney's home page. 1237 Paul McKenney's home page.
1213" 1238}
1214} 1239}
1215 1240
1216@unpublished{PaulEMcKenneyRCUPage 1241@unpublished{PaulEMcKenneyRCUPage
@@ -1221,9 +1246,9 @@ Data Structures"
1221,note="Available: 1246,note="Available:
1222\url{http://www.rdrop.com/users/paulmck/RCU} 1247\url{http://www.rdrop.com/users/paulmck/RCU}
1223[Viewed May 25, 2005]" 1248[Viewed May 25, 2005]"
1224,annotation=" 1249,annotation={
1225 Paul McKenney's RCU page. 1250 Paul McKenney's RCU page.
1226" 1251}
1227} 1252}
1228 1253
1229@unpublished{JosephSeigh2005a 1254@unpublished{JosephSeigh2005a
@@ -1232,10 +1257,10 @@ Data Structures"
1232,month="July" 1257,month="July"
1233,year="2005" 1258,year="2005"
1234,note="Personal communication" 1259,note="Personal communication"
1235,annotation=" 1260,annotation={
1236 Joe Seigh announcing his atomic-ptr-plus project. 1261 Joe Seigh announcing his atomic-ptr-plus project.
1237 http://sourceforge.net/projects/atomic-ptr-plus/ 1262 http://sourceforge.net/projects/atomic-ptr-plus/
1238" 1263}
1239} 1264}
1240 1265
1241@unpublished{JosephSeigh2005b 1266@unpublished{JosephSeigh2005b
@@ -1247,9 +1272,9 @@ Data Structures"
1247,note="Available: 1272,note="Available:
1248\url{http://sourceforge.net/projects/atomic-ptr-plus/} 1273\url{http://sourceforge.net/projects/atomic-ptr-plus/}
1249[Viewed August 8, 2005]" 1274[Viewed August 8, 2005]"
1250,annotation=" 1275,annotation={
1251 Joe Seigh's atomic-ptr-plus project. 1276 Joe Seigh's atomic-ptr-plus project.
1252" 1277}
1253} 1278}
1254 1279
1255@unpublished{PaulMcKenney2005c 1280@unpublished{PaulMcKenney2005c
@@ -1261,9 +1286,9 @@ Data Structures"
1261,note="Available: 1286,note="Available:
1262\url{http://lkml.org/lkml/2005/8/1/155} 1287\url{http://lkml.org/lkml/2005/8/1/155}
1263[Viewed March 14, 2006]" 1288[Viewed March 14, 2006]"
1264,annotation=" 1289,annotation={
1265 First operating counter-based realtime RCU patch posted to LKML. 1290 First operating counter-based realtime RCU patch posted to LKML.
1266" 1291}
1267} 1292}
1268 1293
1269@unpublished{PaulMcKenney2005d 1294@unpublished{PaulMcKenney2005d
@@ -1275,11 +1300,11 @@ Data Structures"
1275,note="Available: 1300,note="Available:
1276\url{http://lkml.org/lkml/2005/8/8/108} 1301\url{http://lkml.org/lkml/2005/8/8/108}
1277[Viewed March 14, 2006]" 1302[Viewed March 14, 2006]"
1278,annotation=" 1303,annotation={
1279 First operating counter-based realtime RCU patch posted to LKML, 1304 First operating counter-based realtime RCU patch posted to LKML,
1280 but fixed so that various unusual combinations of configuration 1305 but fixed so that various unusual combinations of configuration
1281 parameters all function properly. 1306 parameters all function properly.
1282" 1307}
1283} 1308}
1284 1309
1285@unpublished{PaulMcKenney2005rcutorture 1310@unpublished{PaulMcKenney2005rcutorture
@@ -1291,9 +1316,25 @@ Data Structures"
1291,note="Available: 1316,note="Available:
1292\url{http://lkml.org/lkml/2005/10/1/70} 1317\url{http://lkml.org/lkml/2005/10/1/70}
1293[Viewed March 14, 2006]" 1318[Viewed March 14, 2006]"
1294,annotation=" 1319,annotation={
1295 First rcutorture patch. 1320 First rcutorture patch.
1296" 1321}
1322}
1323
1324@unpublished{DavidSMiller2006HashedLocking
1325,Author="David S. Miller"
1326,Title="Re: [{PATCH}, {RFC}] {RCU} : {OOM} avoidance and lower latency"
1327,month="January"
1328,day="6"
1329,year="2006"
1330,note="Available:
1331\url{https://lkml.org/lkml/2006/1/7/22}
1332[Viewed February 29, 2012]"
1333,annotation={
1334 David Miller's view on hashed arrays of locks: used to really
1335 like it, but time he saw an opportunity for this technique,
1336 something else always proved superior. Partitioning or RCU. ;-)
1337}
1297} 1338}
1298 1339
1299@conference{ThomasEHart2006a 1340@conference{ThomasEHart2006a
@@ -1309,10 +1350,10 @@ Distributed Processing Symposium"
1309,note="Available: 1350,note="Available:
1310\url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf} 1351\url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf}
1311[Viewed April 28, 2008]" 1352[Viewed April 28, 2008]"
1312,annotation=" 1353,annotation={
1313 Compares QSBR, HPBR, EBR, and lock-free reference counting. 1354 Compares QSBR, HPBR, EBR, and lock-free reference counting.
1314 http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz 1355 http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz
1315" 1356}
1316} 1357}
1317 1358
1318@unpublished{NickPiggin2006radixtree 1359@unpublished{NickPiggin2006radixtree
@@ -1324,9 +1365,9 @@ Distributed Processing Symposium"
1324,note="Available: 1365,note="Available:
1325\url{http://lkml.org/lkml/2006/6/20/238} 1366\url{http://lkml.org/lkml/2006/6/20/238}
1326[Viewed March 25, 2008]" 1367[Viewed March 25, 2008]"
1327,annotation=" 1368,annotation={
1328 RCU-protected radix tree. 1369 RCU-protected radix tree.
1329" 1370}
1330} 1371}
1331 1372
1332@Conference{PaulEMcKenney2006b 1373@Conference{PaulEMcKenney2006b
@@ -1341,9 +1382,9 @@ Suparna Bhattacharya"
1341\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} 1382\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
1342\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf} 1383\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf}
1343[Viewed January 1, 2007]" 1384[Viewed January 1, 2007]"
1344,annotation=" 1385,annotation={
1345 Described how to improve the -rt implementation of realtime RCU. 1386 Described how to improve the -rt implementation of realtime RCU.
1346" 1387}
1347} 1388}
1348 1389
1349@unpublished{WikipediaRCU 1390@unpublished{WikipediaRCU
@@ -1354,12 +1395,11 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
1354,month="July" 1395,month="July"
1355,day="8" 1396,day="8"
1356,year="2006" 1397,year="2006"
1357,note="Available: 1398,note="\url{http://en.wikipedia.org/wiki/Read-copy-update}"
1358\url{http://en.wikipedia.org/wiki/Read-copy-update} 1399,annotation={
1359[Viewed August 21, 2006]"
1360,annotation="
1361 Wikipedia RCU page as of July 8 2006. 1400 Wikipedia RCU page as of July 8 2006.
1362" 1401 [Viewed August 21, 2006]
1402}
1363} 1403}
1364 1404
1365@Conference{NickPiggin2006LocklessPageCache 1405@Conference{NickPiggin2006LocklessPageCache
@@ -1372,9 +1412,9 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
1372,note="Available: 1412,note="Available:
1373\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} 1413\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184}
1374[Viewed January 11, 2009]" 1414[Viewed January 11, 2009]"
1375,annotation=" 1415,annotation={
1376 Uses RCU-protected radix tree for a lockless page cache. 1416 Uses RCU-protected radix tree for a lockless page cache.
1377" 1417}
1378} 1418}
1379 1419
1380@unpublished{PaulEMcKenney2006c 1420@unpublished{PaulEMcKenney2006c
@@ -1388,9 +1428,9 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen"
1388Revised: 1428Revised:
1389\url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf} 1429\url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf}
1390[Viewed August 21, 2006]" 1430[Viewed August 21, 2006]"
1391,annotation=" 1431,annotation={
1392 LWN article introducing SRCU. 1432 LWN article introducing SRCU.
1393" 1433}
1394} 1434}
1395 1435
1396@unpublished{RobertOlsson2006a 1436@unpublished{RobertOlsson2006a
@@ -1399,12 +1439,11 @@ Revised:
1399,month="August" 1439,month="August"
1400,day="18" 1440,day="18"
1401,year="2006" 1441,year="2006"
1402,note="Available: 1442,note="\url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf}"
1403\url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf} 1443,annotation={
1404[Viewed March 4, 2011]"
1405,annotation="
1406 RCU-protected dynamic trie-hash combination. 1444 RCU-protected dynamic trie-hash combination.
1407" 1445 [Viewed March 4, 2011]
1446}
1408} 1447}
1409 1448
1410@unpublished{ChristophHellwig2006RCU2SRCU 1449@unpublished{ChristophHellwig2006RCU2SRCU
@@ -1426,10 +1465,10 @@ Revised:
1426,note="Available: 1465,note="Available:
1427\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html} 1466\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html}
1428[Viewed January 14, 2007]" 1467[Viewed January 14, 2007]"
1429,annotation=" 1468,annotation={
1430 Paul McKenney's RCU page showing graphs plotting Linux-kernel 1469 Paul McKenney's RCU page showing graphs plotting Linux-kernel
1431 usage of RCU. 1470 usage of RCU.
1432" 1471}
1433} 1472}
1434 1473
1435@unpublished{PaulEMcKenneyRCUusageRawDataPage 1474@unpublished{PaulEMcKenneyRCUusageRawDataPage
@@ -1440,10 +1479,10 @@ Revised:
1440,note="Available: 1479,note="Available:
1441\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html} 1480\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html}
1442[Viewed January 14, 2007]" 1481[Viewed January 14, 2007]"
1443,annotation=" 1482,annotation={
1444 Paul McKenney's RCU page showing Linux usage of RCU in tabular 1483 Paul McKenney's RCU page showing Linux usage of RCU in tabular
1445 form, with links to corresponding cscope databases. 1484 form, with links to corresponding cscope databases.
1446" 1485}
1447} 1486}
1448 1487
1449@unpublished{GauthamShenoy2006RCUrwlock 1488@unpublished{GauthamShenoy2006RCUrwlock
@@ -1455,13 +1494,13 @@ Revised:
1455,note="Available: 1494,note="Available:
1456\url{http://lkml.org/lkml/2006/10/26/73} 1495\url{http://lkml.org/lkml/2006/10/26/73}
1457[Viewed January 26, 2009]" 1496[Viewed January 26, 2009]"
1458,annotation=" 1497,annotation={
1459 RCU-based reader-writer lock that allows readers to proceed with 1498 RCU-based reader-writer lock that allows readers to proceed with
1460 no memory barriers or atomic instruction in absence of writers. 1499 no memory barriers or atomic instruction in absence of writers.
1461 If writer do show up, readers must of course wait as required by 1500 If writer do show up, readers must of course wait as required by
1462 the semantics of reader-writer locking. This is a recursive 1501 the semantics of reader-writer locking. This is a recursive
1463 lock. 1502 lock.
1464" 1503}
1465} 1504}
1466 1505
1467@unpublished{JensAxboe2006SlowSRCU 1506@unpublished{JensAxboe2006SlowSRCU
@@ -1474,11 +1513,11 @@ Revised:
1474,note="Available: 1513,note="Available:
1475\url{http://lkml.org/lkml/2006/11/17/56} 1514\url{http://lkml.org/lkml/2006/11/17/56}
1476[Viewed May 28, 2007]" 1515[Viewed May 28, 2007]"
1477,annotation=" 1516,annotation={
1478 SRCU's grace periods are too slow for Jens, even after a 1517 SRCU's grace periods are too slow for Jens, even after a
1479 factor-of-three speedup. 1518 factor-of-three speedup.
1480 Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359. 1519 Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359.
1481" 1520}
1482} 1521}
1483 1522
1484@unpublished{OlegNesterov2006QRCU 1523@unpublished{OlegNesterov2006QRCU
@@ -1491,10 +1530,10 @@ Revised:
1491,note="Available: 1530,note="Available:
1492\url{http://lkml.org/lkml/2006/11/19/69} 1531\url{http://lkml.org/lkml/2006/11/19/69}
1493[Viewed May 28, 2007]" 1532[Viewed May 28, 2007]"
1494,annotation=" 1533,annotation={
1495 First cut of QRCU. Expanded/corrected versions followed. 1534 First cut of QRCU. Expanded/corrected versions followed.
1496 Used to be OlegNesterov2007QRCU, now time-corrected. 1535 Used to be OlegNesterov2007QRCU, now time-corrected.
1497" 1536}
1498} 1537}
1499 1538
1500@unpublished{OlegNesterov2006aQRCU 1539@unpublished{OlegNesterov2006aQRCU
@@ -1506,10 +1545,10 @@ Revised:
1506,note="Available: 1545,note="Available:
1507\url{http://lkml.org/lkml/2006/11/29/330} 1546\url{http://lkml.org/lkml/2006/11/29/330}
1508[Viewed November 26, 2008]" 1547[Viewed November 26, 2008]"
1509,annotation=" 1548,annotation={
1510 Expanded/corrected version of QRCU. 1549 Expanded/corrected version of QRCU.
1511 Used to be OlegNesterov2007aQRCU, now time-corrected. 1550 Used to be OlegNesterov2007aQRCU, now time-corrected.
1512" 1551}
1513} 1552}
1514 1553
1515@unpublished{EvgeniyPolyakov2006RCUslowdown 1554@unpublished{EvgeniyPolyakov2006RCUslowdown
@@ -1521,10 +1560,10 @@ Revised:
1521,note="Available: 1560,note="Available:
1522\url{http://www.ioremap.net/node/41} 1561\url{http://www.ioremap.net/node/41}
1523[Viewed October 28, 2008]" 1562[Viewed October 28, 2008]"
1524,annotation=" 1563,annotation={
1525 Using RCU as a pure delay leads to a 2.5x slowdown in skbs in 1564 Using RCU as a pure delay leads to a 2.5x slowdown in skbs in
1526 the Linux kernel. 1565 the Linux kernel.
1527" 1566}
1528} 1567}
1529 1568
1530@inproceedings{ChrisMatthews2006ClusteredObjectsRCU 1569@inproceedings{ChrisMatthews2006ClusteredObjectsRCU
@@ -1541,7 +1580,8 @@ Revised:
1541,annotation={ 1580,annotation={
1542 Uses K42's RCU-like functionality to manage clustered-object 1581 Uses K42's RCU-like functionality to manage clustered-object
1543 lifetimes. 1582 lifetimes.
1544}} 1583}
1584}
1545 1585
1546@article{DilmaDaSilva2006K42 1586@article{DilmaDaSilva2006K42
1547,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew} 1587,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew}
@@ -1557,7 +1597,8 @@ Revised:
1557,address = {New York, NY, USA} 1597,address = {New York, NY, USA}
1558,annotation={ 1598,annotation={
1559 Describes relationship of K42 generations to RCU. 1599 Describes relationship of K42 generations to RCU.
1560}} 1600}
1601}
1561 1602
1562# CoreyMinyard2007list_splice_rcu 1603# CoreyMinyard2007list_splice_rcu
1563@unpublished{CoreyMinyard2007list:splice:rcu 1604@unpublished{CoreyMinyard2007list:splice:rcu
@@ -1569,9 +1610,9 @@ Revised:
1569,note="Available: 1610,note="Available:
1570\url{http://lkml.org/lkml/2007/1/3/112} 1611\url{http://lkml.org/lkml/2007/1/3/112}
1571[Viewed May 28, 2007]" 1612[Viewed May 28, 2007]"
1572,annotation=" 1613,annotation={
1573 Patch for list_splice_rcu(). 1614 Patch for list_splice_rcu().
1574" 1615}
1575} 1616}
1576 1617
1577@unpublished{PaulEMcKenney2007rcubarrier 1618@unpublished{PaulEMcKenney2007rcubarrier
@@ -1583,9 +1624,9 @@ Revised:
1583,note="Available: 1624,note="Available:
1584\url{http://lwn.net/Articles/217484/} 1625\url{http://lwn.net/Articles/217484/}
1585[Viewed November 22, 2007]" 1626[Viewed November 22, 2007]"
1586,annotation=" 1627,annotation={
1587 LWN article introducing the rcu_barrier() primitive. 1628 LWN article introducing the rcu_barrier() primitive.
1588" 1629}
1589} 1630}
1590 1631
1591@unpublished{PeterZijlstra2007SyncBarrier 1632@unpublished{PeterZijlstra2007SyncBarrier
@@ -1597,10 +1638,10 @@ Revised:
1597,note="Available: 1638,note="Available:
1598\url{http://lkml.org/lkml/2007/1/28/34} 1639\url{http://lkml.org/lkml/2007/1/28/34}
1599[Viewed March 27, 2008]" 1640[Viewed March 27, 2008]"
1600,annotation=" 1641,annotation={
1601 RCU-like implementation for frequent updaters and rare readers(!). 1642 RCU-like implementation for frequent updaters and rare readers(!).
1602 Subsumed into QRCU. Maybe... 1643 Subsumed into QRCU. Maybe...
1603" 1644}
1604} 1645}
1605 1646
1606@unpublished{PaulEMcKenney2007BoostRCU 1647@unpublished{PaulEMcKenney2007BoostRCU
@@ -1609,14 +1650,13 @@ Revised:
1609,month="February" 1650,month="February"
1610,day="5" 1651,day="5"
1611,year="2007" 1652,year="2007"
1612,note="Available: 1653,note="\url{http://lwn.net/Articles/220677/}"
1613\url{http://lwn.net/Articles/220677/} 1654,annotation={
1614Revised:
1615\url{http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf}
1616[Viewed September 7, 2007]"
1617,annotation="
1618 LWN article introducing RCU priority boosting. 1655 LWN article introducing RCU priority boosting.
1619" 1656 Revised:
1657 http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf
1658 [Viewed September 7, 2007]
1659}
1620} 1660}
1621 1661
1622@unpublished{PaulMcKenney2007QRCUpatch 1662@unpublished{PaulMcKenney2007QRCUpatch
@@ -1628,9 +1668,9 @@ Revised:
1628,note="Available: 1668,note="Available:
1629\url{http://lkml.org/lkml/2007/2/25/18} 1669\url{http://lkml.org/lkml/2007/2/25/18}
1630[Viewed March 27, 2008]" 1670[Viewed March 27, 2008]"
1631,annotation=" 1671,annotation={
1632 Patch for QRCU supplying lock-free fast path. 1672 Patch for QRCU supplying lock-free fast path.
1633" 1673}
1634} 1674}
1635 1675
1636@article{JonathanAppavoo2007K42RCU 1676@article{JonathanAppavoo2007K42RCU
@@ -1647,7 +1687,8 @@ Revised:
1647,address = {New York, NY, USA} 1687,address = {New York, NY, USA}
1648,annotation={ 1688,annotation={
1649 Role of RCU in K42. 1689 Role of RCU in K42.
1650}} 1690}
1691}
1651 1692
1652@conference{RobertOlsson2007Trash 1693@conference{RobertOlsson2007Trash
1653,Author="Robert Olsson and Stefan Nilsson" 1694,Author="Robert Olsson and Stefan Nilsson"
@@ -1658,9 +1699,9 @@ Revised:
1658,note="Available: 1699,note="Available:
1659\url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239} 1700\url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239}
1660[Viewed October 1, 2010]" 1701[Viewed October 1, 2010]"
1661,annotation=" 1702,annotation={
1662 RCU-protected dynamic trie-hash combination. 1703 RCU-protected dynamic trie-hash combination.
1663" 1704}
1664} 1705}
1665 1706
1666@conference{PeterZijlstra2007ConcurrentPagecacheRCU 1707@conference{PeterZijlstra2007ConcurrentPagecacheRCU
@@ -1673,10 +1714,10 @@ Revised:
1673,note="Available: 1714,note="Available:
1674\url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf} 1715\url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf}
1675[Viewed April 14, 2008]" 1716[Viewed April 14, 2008]"
1676,annotation=" 1717,annotation={
1677 Page-cache modifications permitting RCU readers and concurrent 1718 Page-cache modifications permitting RCU readers and concurrent
1678 updates. 1719 updates.
1679" 1720}
1680} 1721}
1681 1722
1682@unpublished{PaulEMcKenney2007whatisRCU 1723@unpublished{PaulEMcKenney2007whatisRCU
@@ -1701,11 +1742,11 @@ Revised:
1701,note="Available: 1742,note="Available:
1702\url{http://lwn.net/Articles/243851/} 1743\url{http://lwn.net/Articles/243851/}
1703[Viewed September 8, 2007]" 1744[Viewed September 8, 2007]"
1704,annotation=" 1745,annotation={
1705 LWN article describing Promela and spin, and also using Oleg 1746 LWN article describing Promela and spin, and also using Oleg
1706 Nesterov's QRCU as an example (with Paul McKenney's fastpath). 1747 Nesterov's QRCU as an example (with Paul McKenney's fastpath).
1707 Merged patch at: http://lkml.org/lkml/2007/2/25/18 1748 Merged patch at: http://lkml.org/lkml/2007/2/25/18
1708" 1749}
1709} 1750}
1710 1751
1711@unpublished{PaulEMcKenney2007WG21DDOatomics 1752@unpublished{PaulEMcKenney2007WG21DDOatomics
@@ -1714,12 +1755,12 @@ Revised:
1714,month="August" 1755,month="August"
1715,day="3" 1756,day="3"
1716,year="2007" 1757,year="2007"
1717,note="Preprint: 1758,note="Available:
1718\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm} 1759\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm}
1719[Viewed December 7, 2009]" 1760[Viewed December 7, 2009]"
1720,annotation=" 1761,annotation={
1721 RCU for C++, parts 1 and 2. 1762 RCU for C++, parts 1 and 2.
1722" 1763}
1723} 1764}
1724 1765
1725@unpublished{PaulEMcKenney2007WG21DDOannotation 1766@unpublished{PaulEMcKenney2007WG21DDOannotation
@@ -1728,12 +1769,12 @@ Revised:
1728,month="September" 1769,month="September"
1729,day="18" 1770,day="18"
1730,year="2008" 1771,year="2008"
1731,note="Preprint: 1772,note="Available:
1732\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm} 1773\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm}
1733[Viewed December 7, 2009]" 1774[Viewed December 7, 2009]"
1734,annotation=" 1775,annotation={
1735 RCU for C++, part 2, updated many times. 1776 RCU for C++, part 2, updated many times.
1736" 1777}
1737} 1778}
1738 1779
1739@unpublished{PaulEMcKenney2007PreemptibleRCUPatch 1780@unpublished{PaulEMcKenney2007PreemptibleRCUPatch
@@ -1745,10 +1786,10 @@ Revised:
1745,note="Available: 1786,note="Available:
1746\url{http://lkml.org/lkml/2007/9/10/213} 1787\url{http://lkml.org/lkml/2007/9/10/213}
1747[Viewed October 25, 2007]" 1788[Viewed October 25, 2007]"
1748,annotation=" 1789,annotation={
1749 Final patch for preemptable RCU to -rt. (Later patches were 1790 Final patch for preemptable RCU to -rt. (Later patches were
1750 to mainline, eventually incorporated.) 1791 to mainline, eventually incorporated.)
1751" 1792}
1752} 1793}
1753 1794
1754@unpublished{PaulEMcKenney2007PreemptibleRCU 1795@unpublished{PaulEMcKenney2007PreemptibleRCU
@@ -1760,9 +1801,9 @@ Revised:
1760,note="Available: 1801,note="Available:
1761\url{http://lwn.net/Articles/253651/} 1802\url{http://lwn.net/Articles/253651/}
1762[Viewed October 25, 2007]" 1803[Viewed October 25, 2007]"
1763,annotation=" 1804,annotation={
1764 LWN article describing the design of preemptible RCU. 1805 LWN article describing the design of preemptible RCU.
1765" 1806}
1766} 1807}
1767 1808
1768@article{ThomasEHart2007a 1809@article{ThomasEHart2007a
@@ -1783,6 +1824,7 @@ Revised:
1783} 1824}
1784} 1825}
1785 1826
1827# MathieuDesnoyers2007call_rcu_schedNeeded
1786@unpublished{MathieuDesnoyers2007call:rcu:schedNeeded 1828@unpublished{MathieuDesnoyers2007call:rcu:schedNeeded
1787,Author="Mathieu Desnoyers" 1829,Author="Mathieu Desnoyers"
1788,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes" 1830,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes"
@@ -1792,9 +1834,9 @@ Revised:
1792,note="Available: 1834,note="Available:
1793\url{http://lkml.org/lkml/2007/12/20/244} 1835\url{http://lkml.org/lkml/2007/12/20/244}
1794[Viewed March 27, 2008]" 1836[Viewed March 27, 2008]"
1795,annotation=" 1837,annotation={
1796 Request for call_rcu_sched() and rcu_barrier_sched(). 1838 Request for call_rcu_sched() and rcu_barrier_sched().
1797" 1839}
1798} 1840}
1799 1841
1800 1842
@@ -1815,11 +1857,11 @@ Revised:
1815,note="Available: 1857,note="Available:
1816\url{http://lwn.net/Articles/262464/} 1858\url{http://lwn.net/Articles/262464/}
1817[Viewed December 27, 2007]" 1859[Viewed December 27, 2007]"
1818,annotation=" 1860,annotation={
1819 Lays out the three basic components of RCU: (1) publish-subscribe, 1861 Lays out the three basic components of RCU: (1) publish-subscribe,
1820 (2) wait for pre-existing readers to complete, and (2) maintain 1862 (2) wait for pre-existing readers to complete, and (2) maintain
1821 multiple versions. 1863 multiple versions.
1822" 1864}
1823} 1865}
1824 1866
1825@unpublished{PaulEMcKenney2008WhatIsRCUUsage 1867@unpublished{PaulEMcKenney2008WhatIsRCUUsage
@@ -1831,7 +1873,7 @@ Revised:
1831,note="Available: 1873,note="Available:
1832\url{http://lwn.net/Articles/263130/} 1874\url{http://lwn.net/Articles/263130/}
1833[Viewed January 4, 2008]" 1875[Viewed January 4, 2008]"
1834,annotation=" 1876,annotation={
1835 Lays out six uses of RCU: 1877 Lays out six uses of RCU:
1836 1. RCU is a Reader-Writer Lock Replacement 1878 1. RCU is a Reader-Writer Lock Replacement
1837 2. RCU is a Restricted Reference-Counting Mechanism 1879 2. RCU is a Restricted Reference-Counting Mechanism
@@ -1839,7 +1881,7 @@ Revised:
1839 4. RCU is a Poor Man's Garbage Collector 1881 4. RCU is a Poor Man's Garbage Collector
1840 5. RCU is a Way of Providing Existence Guarantees 1882 5. RCU is a Way of Providing Existence Guarantees
1841 6. RCU is a Way of Waiting for Things to Finish 1883 6. RCU is a Way of Waiting for Things to Finish
1842" 1884}
1843} 1885}
1844 1886
1845@unpublished{PaulEMcKenney2008WhatIsRCUAPI 1887@unpublished{PaulEMcKenney2008WhatIsRCUAPI
@@ -1851,10 +1893,10 @@ Revised:
1851,note="Available: 1893,note="Available:
1852\url{http://lwn.net/Articles/264090/} 1894\url{http://lwn.net/Articles/264090/}
1853[Viewed January 10, 2008]" 1895[Viewed January 10, 2008]"
1854,annotation=" 1896,annotation={
1855 Gives an overview of the Linux-kernel RCU API and a brief annotated RCU 1897 Gives an overview of the Linux-kernel RCU API and a brief annotated RCU
1856 bibliography. 1898 bibliography.
1857" 1899}
1858} 1900}
1859 1901
1860# 1902#
@@ -1872,10 +1914,10 @@ Revised:
1872,note="Available: 1914,note="Available:
1873\url{http://lkml.org/lkml/2008/1/29/208} 1915\url{http://lkml.org/lkml/2008/1/29/208}
1874[Viewed March 27, 2008]" 1916[Viewed March 27, 2008]"
1875,annotation=" 1917,annotation={
1876 Patch that prevents preemptible RCU from unnecessarily waking 1918 Patch that prevents preemptible RCU from unnecessarily waking
1877 up dynticks-idle CPUs. 1919 up dynticks-idle CPUs.
1878" 1920}
1879} 1921}
1880 1922
1881@unpublished{PaulEMcKenney2008LKMLDependencyOrdering 1923@unpublished{PaulEMcKenney2008LKMLDependencyOrdering
@@ -1887,9 +1929,9 @@ Revised:
1887,note="Available: 1929,note="Available:
1888\url{http://lkml.org/lkml/2008/2/2/255} 1930\url{http://lkml.org/lkml/2008/2/2/255}
1889[Viewed October 18, 2008]" 1931[Viewed October 18, 2008]"
1890,annotation=" 1932,annotation={
1891 Explanation of compilers violating dependency ordering. 1933 Explanation of compilers violating dependency ordering.
1892" 1934}
1893} 1935}
1894 1936
1895@Conference{PaulEMcKenney2008Beijing 1937@Conference{PaulEMcKenney2008Beijing
@@ -1916,24 +1958,26 @@ lot of {Linux} into your technology!!!"
1916,note="Available: 1958,note="Available:
1917\url{http://lwn.net/Articles/279077/} 1959\url{http://lwn.net/Articles/279077/}
1918[Viewed April 24, 2008]" 1960[Viewed April 24, 2008]"
1919,annotation=" 1961,annotation={
1920 Describes use of Promela and Spin to validate (and fix!) the 1962 Describes use of Promela and Spin to validate (and fix!) the
1921 dynticks/RCU interface. 1963 dynticks/RCU interface.
1922" 1964}
1923} 1965}
1924 1966
1925@article{DinakarGuniguntala2008IBMSysJ 1967@article{DinakarGuniguntala2008IBMSysJ
1926,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole" 1968,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole"
1927,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}" 1969,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}"
1928,Year="2008" 1970,Year="2008"
1929,Month="April-June" 1971,Month="May"
1930,journal="IBM Systems Journal" 1972,journal="IBM Systems Journal"
1931,volume="47" 1973,volume="47"
1932,number="2" 1974,number="2"
1933,pages="221-236" 1975,pages="221-236"
1934,annotation=" 1976,annotation={
1935 RCU, realtime RCU, sleepable RCU, performance. 1977 RCU, realtime RCU, sleepable RCU, performance.
1936" 1978 http://www.research.ibm.com/journal/sj/472/guniguntala.pdf
1979 [Viewed April 24, 2008]
1980}
1937} 1981}
1938 1982
1939@unpublished{LaiJiangshan2008NewClassicAlgorithm 1983@unpublished{LaiJiangshan2008NewClassicAlgorithm
@@ -1945,11 +1989,11 @@ lot of {Linux} into your technology!!!"
1945,note="Available: 1989,note="Available:
1946\url{http://lkml.org/lkml/2008/6/2/539} 1990\url{http://lkml.org/lkml/2008/6/2/539}
1947[Viewed December 10, 2008]" 1991[Viewed December 10, 2008]"
1948,annotation=" 1992,annotation={
1949 Updated RCU classic algorithm. Introduced multi-tailed list 1993 Updated RCU classic algorithm. Introduced multi-tailed list
1950 for RCU callbacks and also pulling common code into 1994 for RCU callbacks and also pulling common code into
1951 __call_rcu(). 1995 __call_rcu().
1952" 1996}
1953} 1997}
1954 1998
1955@article{PaulEMcKenney2008RCUOSR 1999@article{PaulEMcKenney2008RCUOSR
@@ -1966,6 +2010,7 @@ lot of {Linux} into your technology!!!"
1966,address="New York, NY, USA" 2010,address="New York, NY, USA"
1967,annotation={ 2011,annotation={
1968 Linux changed RCU to a far greater degree than RCU has changed Linux. 2012 Linux changed RCU to a far greater degree than RCU has changed Linux.
2013 http://portal.acm.org/citation.cfm?doid=1400097.1400099
1969} 2014}
1970} 2015}
1971 2016
@@ -1978,10 +2023,10 @@ lot of {Linux} into your technology!!!"
1978,note="Available: 2023,note="Available:
1979\url{http://lkml.org/lkml/2008/8/21/336} 2024\url{http://lkml.org/lkml/2008/8/21/336}
1980[Viewed December 8, 2008]" 2025[Viewed December 8, 2008]"
1981,annotation=" 2026,annotation={
1982 State-based RCU. One key thing that this patch does is to 2027 State-based RCU. One key thing that this patch does is to
1983 separate the dynticks handling of NMIs and IRQs. 2028 separate the dynticks handling of NMIs and IRQs.
1984" 2029}
1985} 2030}
1986 2031
1987@unpublished{ManfredSpraul2008dyntickIRQNMI 2032@unpublished{ManfredSpraul2008dyntickIRQNMI
@@ -1993,12 +2038,13 @@ lot of {Linux} into your technology!!!"
1993,note="Available: 2038,note="Available:
1994\url{http://lkml.org/lkml/2008/9/6/86} 2039\url{http://lkml.org/lkml/2008/9/6/86}
1995[Viewed December 8, 2008]" 2040[Viewed December 8, 2008]"
1996,annotation=" 2041,annotation={
1997 Manfred notes a fix required to my attempt to separate irq 2042 Manfred notes a fix required to my attempt to separate irq
1998 and NMI processing for hierarchical RCU's dynticks interface. 2043 and NMI processing for hierarchical RCU's dynticks interface.
1999" 2044}
2000} 2045}
2001 2046
2047# Was PaulEMcKenney2011cyclicRCU
2002@techreport{PaulEMcKenney2008cyclicRCU 2048@techreport{PaulEMcKenney2008cyclicRCU
2003,author="Paul E. McKenney" 2049,author="Paul E. McKenney"
2004,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update" 2050,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update"
@@ -2008,11 +2054,11 @@ lot of {Linux} into your technology!!!"
2008,number="US Patent 7,426,511" 2054,number="US Patent 7,426,511"
2009,month="September" 2055,month="September"
2010,pages="23" 2056,pages="23"
2011,annotation=" 2057,annotation={
2012 Maintains an additional level of indirection to allow 2058 Maintains an additional level of indirection to allow
2013 readers to confine themselves to the desired snapshot of the 2059 readers to confine themselves to the desired snapshot of the
2014 data structure. Only permits one update at a time. 2060 data structure. Only permits one update at a time.
2015" 2061}
2016} 2062}
2017 2063
2018@unpublished{PaulEMcKenney2008HierarchicalRCU 2064@unpublished{PaulEMcKenney2008HierarchicalRCU
@@ -2021,13 +2067,12 @@ lot of {Linux} into your technology!!!"
2021,month="November" 2067,month="November"
2022,day="3" 2068,day="3"
2023,year="2008" 2069,year="2008"
2024,note="Available: 2070,note="\url{http://lwn.net/Articles/305782/}"
2025\url{http://lwn.net/Articles/305782/} 2071,annotation={
2026[Viewed November 6, 2008]"
2027,annotation="
2028 RCU with combining-tree-based grace-period detection, 2072 RCU with combining-tree-based grace-period detection,
2029 permitting it to handle thousands of CPUs. 2073 permitting it to handle thousands of CPUs.
2030" 2074 [Viewed November 6, 2008]
2075}
2031} 2076}
2032 2077
2033@unpublished{PaulEMcKenney2009BloatwatchRCU 2078@unpublished{PaulEMcKenney2009BloatwatchRCU
@@ -2039,10 +2084,10 @@ lot of {Linux} into your technology!!!"
2039,note="Available: 2084,note="Available:
2040\url{http://lkml.org/lkml/2009/1/14/449} 2085\url{http://lkml.org/lkml/2009/1/14/449}
2041[Viewed January 15, 2009]" 2086[Viewed January 15, 2009]"
2042,annotation=" 2087,annotation={
2043 Small-footprint implementation of RCU for uniprocessor 2088 Small-footprint implementation of RCU for uniprocessor
2044 embedded applications -- and also for exposition purposes. 2089 embedded applications -- and also for exposition purposes.
2045" 2090}
2046} 2091}
2047 2092
2048@conference{PaulEMcKenney2009MaliciousURCU 2093@conference{PaulEMcKenney2009MaliciousURCU
@@ -2055,9 +2100,9 @@ lot of {Linux} into your technology!!!"
2055,note="Available: 2100,note="Available:
2056\url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf} 2101\url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf}
2057[Viewed February 2, 2009]" 2102[Viewed February 2, 2009]"
2058,annotation=" 2103,annotation={
2059 Realtime RCU and torture-testing RCU uses. 2104 Realtime RCU and torture-testing RCU uses.
2060" 2105}
2061} 2106}
2062 2107
2063@unpublished{MathieuDesnoyers2009URCU 2108@unpublished{MathieuDesnoyers2009URCU
@@ -2066,16 +2111,14 @@ lot of {Linux} into your technology!!!"
2066,month="February" 2111,month="February"
2067,day="5" 2112,day="5"
2068,year="2009" 2113,year="2009"
2069,note="Available: 2114,note="\url{http://lttng.org/urcu}"
2070\url{http://lkml.org/lkml/2009/2/5/572} 2115,annotation={
2071\url{http://lttng.org/urcu}
2072[Viewed February 20, 2009]"
2073,annotation="
2074 Mathieu Desnoyers's user-space RCU implementation. 2116 Mathieu Desnoyers's user-space RCU implementation.
2075 git://lttng.org/userspace-rcu.git 2117 git://lttng.org/userspace-rcu.git
2076 http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git 2118 http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git
2077 http://lttng.org/urcu 2119 http://lttng.org/urcu
2078" 2120 http://lkml.org/lkml/2009/2/5/572
2121}
2079} 2122}
2080 2123
2081@unpublished{PaulEMcKenney2009LWNBloatWatchRCU 2124@unpublished{PaulEMcKenney2009LWNBloatWatchRCU
@@ -2087,9 +2130,24 @@ lot of {Linux} into your technology!!!"
2087,note="Available: 2130,note="Available:
2088\url{http://lwn.net/Articles/323929/} 2131\url{http://lwn.net/Articles/323929/}
2089[Viewed March 20, 2009]" 2132[Viewed March 20, 2009]"
2090,annotation=" 2133,annotation={
2091 Uniprocessor assumptions allow simplified RCU implementation. 2134 Uniprocessor assumptions allow simplified RCU implementation.
2092" 2135}
2136}
2137
2138@unpublished{EvgeniyPolyakov2009EllipticsNetwork
2139,Author="Evgeniy Polyakov"
2140,Title="The Elliptics Network"
2141,month="April"
2142,day="17"
2143,year="2009"
2144,note="Available:
2145\url{http://www.ioremap.net/projects/elliptics}
2146[Viewed April 30, 2009]"
2147,annotation={
2148 Distributed hash table with transactions, using elliptic
2149 hash functions to distribute data.
2150}
2093} 2151}
2094 2152
2095@unpublished{PaulEMcKenney2009expeditedRCU 2153@unpublished{PaulEMcKenney2009expeditedRCU
@@ -2101,9 +2159,9 @@ lot of {Linux} into your technology!!!"
2101,note="Available: 2159,note="Available:
2102\url{http://lkml.org/lkml/2009/6/25/306} 2160\url{http://lkml.org/lkml/2009/6/25/306}
2103[Viewed August 16, 2009]" 2161[Viewed August 16, 2009]"
2104,annotation=" 2162,annotation={
2105 First posting of expedited RCU to be accepted into -tip. 2163 First posting of expedited RCU to be accepted into -tip.
2106" 2164}
2107} 2165}
2108 2166
2109@unpublished{PaulEMcKenney2009fastRTRCU 2167@unpublished{PaulEMcKenney2009fastRTRCU
@@ -2115,21 +2173,21 @@ lot of {Linux} into your technology!!!"
2115,note="Available: 2173,note="Available:
2116\url{http://lkml.org/lkml/2009/7/23/294} 2174\url{http://lkml.org/lkml/2009/7/23/294}
2117[Viewed August 15, 2009]" 2175[Viewed August 15, 2009]"
2118,annotation=" 2176,annotation={
2119 First posting of simple and fast preemptable RCU. 2177 First posting of simple and fast preemptable RCU.
2120" 2178}
2121} 2179}
2122 2180
2123@InProceedings{JoshTriplett2009RPHash 2181@unpublished{JoshTriplett2009RPHash
2124,Author="Josh Triplett" 2182,Author="Josh Triplett"
2125,Title="Scalable concurrent hash tables via relativistic programming" 2183,Title="Scalable concurrent hash tables via relativistic programming"
2126,month="September" 2184,month="September"
2127,year="2009" 2185,year="2009"
2128,booktitle="Linux Plumbers Conference 2009" 2186,note="Linux Plumbers Conference presentation"
2129,annotation=" 2187,annotation={
2130 RP fun with hash tables. 2188 RP fun with hash tables.
2131 See also JoshTriplett2010RPHash 2189 Superseded by JoshTriplett2010RPHash
2132" 2190}
2133} 2191}
2134 2192
2135@phdthesis{MathieuDesnoyersPhD 2193@phdthesis{MathieuDesnoyersPhD
@@ -2154,9 +2212,9 @@ lot of {Linux} into your technology!!!"
2154,note="Available: 2212,note="Available:
2155\url{http://wiki.cs.pdx.edu/rp/} 2213\url{http://wiki.cs.pdx.edu/rp/}
2156[Viewed December 9, 2009]" 2214[Viewed December 9, 2009]"
2157,annotation=" 2215,annotation={
2158 Main Relativistic Programming Wiki. 2216 Main Relativistic Programming Wiki.
2159" 2217}
2160} 2218}
2161 2219
2162@conference{PaulEMcKenney2009DeterministicRCU 2220@conference{PaulEMcKenney2009DeterministicRCU
@@ -2180,9 +2238,9 @@ lot of {Linux} into your technology!!!"
2180,note="Available: 2238,note="Available:
2181\url{http://paulmck.livejournal.com/14639.html} 2239\url{http://paulmck.livejournal.com/14639.html}
2182[Viewed June 4, 2010]" 2240[Viewed June 4, 2010]"
2183,annotation=" 2241,annotation={
2184 Day-one bug in Tree RCU that took forever to track down. 2242 Day-one bug in Tree RCU that took forever to track down.
2185" 2243}
2186} 2244}
2187 2245
2188@unpublished{MathieuDesnoyers2009defer:rcu 2246@unpublished{MathieuDesnoyers2009defer:rcu
@@ -2193,10 +2251,10 @@ lot of {Linux} into your technology!!!"
2193,note="Available: 2251,note="Available:
2194\url{http://lkml.org/lkml/2009/10/18/129} 2252\url{http://lkml.org/lkml/2009/10/18/129}
2195[Viewed December 29, 2009]" 2253[Viewed December 29, 2009]"
2196,annotation=" 2254,annotation={
2197 Mathieu proposed defer_rcu() with fixed-size per-thread pool 2255 Mathieu proposed defer_rcu() with fixed-size per-thread pool
2198 of RCU callbacks. 2256 of RCU callbacks.
2199" 2257}
2200} 2258}
2201 2259
2202@unpublished{MathieuDesnoyers2009VerifPrePub 2260@unpublished{MathieuDesnoyers2009VerifPrePub
@@ -2205,10 +2263,10 @@ lot of {Linux} into your technology!!!"
2205,month="December" 2263,month="December"
2206,year="2009" 2264,year="2009"
2207,note="Submitted to IEEE TPDS" 2265,note="Submitted to IEEE TPDS"
2208,annotation=" 2266,annotation={
2209 OOMem model for Mathieu's user-level RCU mechanical proof of 2267 OOMem model for Mathieu's user-level RCU mechanical proof of
2210 correctness. 2268 correctness.
2211" 2269}
2212} 2270}
2213 2271
2214@unpublished{MathieuDesnoyers2009URCUPrePub 2272@unpublished{MathieuDesnoyers2009URCUPrePub
@@ -2216,15 +2274,15 @@ lot of {Linux} into your technology!!!"
2216,Title="User-Level Implementations of Read-Copy Update" 2274,Title="User-Level Implementations of Read-Copy Update"
2217,month="December" 2275,month="December"
2218,year="2010" 2276,year="2010"
2219,url=\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html} 2277,url={\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html}}
2220,annotation=" 2278,annotation={
2221 RCU overview, desiderata, semi-formal semantics, user-level RCU 2279 RCU overview, desiderata, semi-formal semantics, user-level RCU
2222 usage scenarios, three classes of RCU implementation, wait-free 2280 usage scenarios, three classes of RCU implementation, wait-free
2223 RCU updates, RCU grace-period batching, update overhead, 2281 RCU updates, RCU grace-period batching, update overhead,
2224 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf 2282 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf
2225 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf 2283 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf
2226 Superseded by MathieuDesnoyers2012URCU. 2284 Superseded by MathieuDesnoyers2012URCU.
2227" 2285}
2228} 2286}
2229 2287
2230@inproceedings{HariKannan2009DynamicAnalysisRCU 2288@inproceedings{HariKannan2009DynamicAnalysisRCU
@@ -2240,7 +2298,8 @@ lot of {Linux} into your technology!!!"
2240,address = {New York, NY, USA} 2298,address = {New York, NY, USA}
2241,annotation={ 2299,annotation={
2242 Uses RCU to protect metadata used in dynamic analysis. 2300 Uses RCU to protect metadata used in dynamic analysis.
2243}} 2301}
2302}
2244 2303
2245@conference{PaulEMcKenney2010SimpleOptRCU 2304@conference{PaulEMcKenney2010SimpleOptRCU
2246,Author="Paul E. McKenney" 2305,Author="Paul E. McKenney"
@@ -2252,10 +2311,10 @@ lot of {Linux} into your technology!!!"
2252,note="Available: 2311,note="Available:
2253\url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf} 2312\url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf}
2254[Viewed October 10, 2010]" 2313[Viewed October 10, 2010]"
2255,annotation=" 2314,annotation={
2256 TREE_PREEMPT_RCU optimizations greatly simplified the old 2315 TREE_PREEMPT_RCU optimizations greatly simplified the old
2257 PREEMPT_RCU implementation. 2316 PREEMPT_RCU implementation.
2258" 2317}
2259} 2318}
2260 2319
2261@unpublished{PaulEMcKenney2010LockdepRCU 2320@unpublished{PaulEMcKenney2010LockdepRCU
@@ -2264,12 +2323,11 @@ lot of {Linux} into your technology!!!"
2264,month="February" 2323,month="February"
2265,year="2010" 2324,year="2010"
2266,day="1" 2325,day="1"
2267,note="Available: 2326,note="\url{https://lwn.net/Articles/371986/}"
2268\url{https://lwn.net/Articles/371986/} 2327,annotation={
2269[Viewed June 4, 2010]"
2270,annotation="
2271 CONFIG_PROVE_RCU, or at least an early version. 2328 CONFIG_PROVE_RCU, or at least an early version.
2272" 2329 [Viewed June 4, 2010]
2330}
2273} 2331}
2274 2332
2275@unpublished{AviKivity2010KVM2RCU 2333@unpublished{AviKivity2010KVM2RCU
@@ -2280,10 +2338,10 @@ lot of {Linux} into your technology!!!"
2280,note="Available: 2338,note="Available:
2281\url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html} 2339\url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html}
2282[Viewed March 20, 2010]" 2340[Viewed March 20, 2010]"
2283,annotation=" 2341,annotation={
2284 Use of RCU permits KVM to increase the size of guest OSes from 2342 Use of RCU permits KVM to increase the size of guest OSes from
2285 16 CPUs to 64 CPUs. 2343 16 CPUs to 64 CPUs.
2286" 2344}
2287} 2345}
2288 2346
2289@unpublished{HerbertXu2010RCUResizeHash 2347@unpublished{HerbertXu2010RCUResizeHash
@@ -2297,7 +2355,19 @@ lot of {Linux} into your technology!!!"
2297,annotation={ 2355,annotation={
2298 Use a pair of list_head structures to support RCU-protected 2356 Use a pair of list_head structures to support RCU-protected
2299 resizable hash tables. 2357 resizable hash tables.
2300}} 2358}
2359}
2360
2361@mastersthesis{AbhinavDuggal2010Masters
2362,author="Abhinav Duggal"
2363,title="Stopping Data Races Using Redflag"
2364,school="Stony Brook University"
2365,year="2010"
2366,annotation={
2367 Data-race detector incorporating RCU.
2368 http://www.filesystems.org/docs/abhinav-thesis/abhinav_thesis.pdf
2369}
2370}
2301 2371
2302@article{JoshTriplett2010RPHash 2372@article{JoshTriplett2010RPHash
2303,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole" 2373,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole"
@@ -2310,7 +2380,8 @@ lot of {Linux} into your technology!!!"
2310,annotation={ 2380,annotation={
2311 RP fun with hash tables. 2381 RP fun with hash tables.
2312 http://portal.acm.org/citation.cfm?id=1842733.1842750 2382 http://portal.acm.org/citation.cfm?id=1842733.1842750
2313}} 2383}
2384}
2314 2385
2315@unpublished{PaulEMcKenney2010RCUAPI 2386@unpublished{PaulEMcKenney2010RCUAPI
2316,Author="Paul E. McKenney" 2387,Author="Paul E. McKenney"
@@ -2318,12 +2389,11 @@ lot of {Linux} into your technology!!!"
2318,month="December" 2389,month="December"
2319,day="8" 2390,day="8"
2320,year="2010" 2391,year="2010"
2321,note="Available: 2392,note="\url{http://lwn.net/Articles/418853/}"
2322\url{http://lwn.net/Articles/418853/} 2393,annotation={
2323[Viewed December 8, 2010]"
2324,annotation="
2325 Includes updated software-engineering features. 2394 Includes updated software-engineering features.
2326" 2395 [Viewed December 8, 2010]
2396}
2327} 2397}
2328 2398
2329@mastersthesis{AndrejPodzimek2010masters 2399@mastersthesis{AndrejPodzimek2010masters
@@ -2338,7 +2408,8 @@ lot of {Linux} into your technology!!!"
2338 Reviews RCU implementations and creates a few for OpenSolaris. 2408 Reviews RCU implementations and creates a few for OpenSolaris.
2339 Drives quiescent-state detection from RCU read-side primitives, 2409 Drives quiescent-state detection from RCU read-side primitives,
2340 in a manner roughly similar to that of Jim Houston. 2410 in a manner roughly similar to that of Jim Houston.
2341}} 2411}
2412}
2342 2413
2343@unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS 2414@unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS
2344,Author="Linus Torvalds" 2415,Author="Linus Torvalds"
@@ -2358,7 +2429,8 @@ lot of {Linux} into your technology!!!"
2358 of the most expensive parts of path component lookup, which was the 2429 of the most expensive parts of path component lookup, which was the
2359 d_lock on every component lookup. So I'm seeing improvements of 30-50% 2430 d_lock on every component lookup. So I'm seeing improvements of 30-50%
2360 on some seriously pathname-lookup intensive loads." 2431 on some seriously pathname-lookup intensive loads."
2361}} 2432}
2433}
2362 2434
2363@techreport{JoshTriplett2011RPScalableCorrectOrdering 2435@techreport{JoshTriplett2011RPScalableCorrectOrdering
2364,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole} 2436,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole}
@@ -2392,12 +2464,12 @@ lot of {Linux} into your technology!!!"
2392,number="US Patent 7,953,778" 2464,number="US Patent 7,953,778"
2393,month="May" 2465,month="May"
2394,pages="34" 2466,pages="34"
2395,annotation=" 2467,annotation={
2396 Maintains an array of generation numbers to track in-flight 2468 Maintains an array of generation numbers to track in-flight
2397 updates and keeps an additional level of indirection to allow 2469 updates and keeps an additional level of indirection to allow
2398 readers to confine themselves to the desired snapshot of the 2470 readers to confine themselves to the desired snapshot of the
2399 data structure. 2471 data structure.
2400" 2472}
2401} 2473}
2402 2474
2403@inproceedings{Triplett:2011:RPHash 2475@inproceedings{Triplett:2011:RPHash
@@ -2408,7 +2480,7 @@ lot of {Linux} into your technology!!!"
2408,year = {2011} 2480,year = {2011}
2409,pages = {145--158} 2481,pages = {145--158}
2410,numpages = {14} 2482,numpages = {14}
2411,url={http://www.usenix.org/event/atc11/tech/final_files/atc11_proceedings.pdf} 2483,url={http://www.usenix.org/event/atc11/tech/final_files/Triplett.pdf}
2412,publisher = {The USENIX Association} 2484,publisher = {The USENIX Association}
2413,address = {Portland, OR USA} 2485,address = {Portland, OR USA}
2414} 2486}
@@ -2419,27 +2491,58 @@ lot of {Linux} into your technology!!!"
2419,month="July" 2491,month="July"
2420,day="27" 2492,day="27"
2421,year="2011" 2493,year="2011"
2422,note="Available: 2494,note="\url{http://lwn.net/Articles/453002/}"
2423\url{http://lwn.net/Articles/453002/} 2495,annotation={
2424[Viewed July 27, 2011]"
2425,annotation="
2426 Analysis of the RCU trainwreck in Linux kernel 3.0. 2496 Analysis of the RCU trainwreck in Linux kernel 3.0.
2427" 2497 [Viewed July 27, 2011]
2498}
2428} 2499}
2429 2500
2430@unpublished{NeilBrown2011MeetTheLockers 2501@unpublished{NeilBrown2011MeetTheLockers
2431,Author="Neil Brown" 2502,Author="Neil Brown"
2432,Title="Meet the Lockers" 2503,Title="Meet the {Lockers}"
2433,month="August" 2504,month="August"
2434,day="3" 2505,day="3"
2435,year="2011" 2506,year="2011"
2436,note="Available: 2507,note="Available:
2437\url{http://lwn.net/Articles/453685/} 2508\url{http://lwn.net/Articles/453685/}
2438[Viewed September 2, 2011]" 2509[Viewed September 2, 2011]"
2439,annotation=" 2510,annotation={
2440 The Locker family as an analogy for locking, reference counting, 2511 The Locker family as an analogy for locking, reference counting,
2441 RCU, and seqlock. 2512 RCU, and seqlock.
2442" 2513}
2514}
2515
2516@inproceedings{Seyster:2011:RFA:2075416.2075425
2517,author = {Seyster, Justin and Radhakrishnan, Prabakar and Katoch, Samriti and Duggal, Abhinav and Stoller, Scott D. and Zadok, Erez}
2518,title = {Redflag: a framework for analysis of Kernel-level concurrency}
2519,booktitle = {Proceedings of the 11th international conference on Algorithms and architectures for parallel processing - Volume Part I}
2520,series = {ICA3PP'11}
2521,year = {2011}
2522,isbn = {978-3-642-24649-4}
2523,location = {Melbourne, Australia}
2524,pages = {66--79}
2525,numpages = {14}
2526,url = {http://dl.acm.org/citation.cfm?id=2075416.2075425}
2527,acmid = {2075425}
2528,publisher = {Springer-Verlag}
2529,address = {Berlin, Heidelberg}
2530}
2531
2532@phdthesis{JoshTriplettPhD
2533,author="Josh Triplett"
2534,title="Relativistic Causal Ordering: A Memory Model for Scalable Concurrent Data Structures"
2535,school="Portland State University"
2536,year="2012"
2537,annotation={
2538 RCU-protected hash tables, barriers vs. read-side traversal order.
2539 .
2540 If the updater is making changes in the opposite direction from
2541 the read-side traveral order, the updater need only execute a
2542 memory-barrier instruction, but if in the same direction, the
2543 updater needs to wait for a grace period between the individual
2544 updates.
2545}
2443} 2546}
2444 2547
2445@article{MathieuDesnoyers2012URCU 2548@article{MathieuDesnoyers2012URCU
@@ -2459,5 +2562,150 @@ lot of {Linux} into your technology!!!"
2459 RCU updates, RCU grace-period batching, update overhead, 2562 RCU updates, RCU grace-period batching, update overhead,
2460 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf 2563 http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf
2461 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf 2564 http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf
2565 http://www.computer.org/cms/Computer.org/dl/trans/td/2012/02/extras/ttd2012020375s.pdf
2566}
2567}
2568
2569@inproceedings{AustinClements2012RCULinux:mmapsem
2570,author = {Austin Clements and Frans Kaashoek and Nickolai Zeldovich}
2571,title = {Scalable Address Spaces Using {RCU} Balanced Trees}
2572,booktitle = {Architectural Support for Programming Languages and Operating Systems (ASPLOS 2012)}
2573,month = {March}
2574,year = {2012}
2575,pages = {199--210}
2576,numpages = {12}
2577,publisher = {ACM}
2578,address = {London, UK}
2579,url="http://people.csail.mit.edu/nickolai/papers/clements-bonsai.pdf"
2580}
2581
2582@unpublished{PaulEMcKenney2012ELCbattery
2583,Author="Paul E. McKenney"
2584,Title="Making {RCU} Safe For Battery-Powered Devices"
2585,month="February"
2586,day="15"
2587,year="2012"
2588,note="Available:
2589\url{http://www.rdrop.com/users/paulmck/RCU/RCUdynticks.2012.02.15b.pdf}
2590[Viewed March 1, 2012]"
2591,annotation={
2592 RCU_FAST_NO_HZ, round 2.
2593}
2594}
2595
2596@article{GuillermoVigueras2012RCUCrowd
2597,author = {Vigueras, Guillermo and Ordu\~{n}a, Juan M. and Lozano, Miguel}
2598,day = {25}
2599,doi = {10.1007/s11227-012-0766-x}
2600,issn = {0920-8542}
2601,journal = {The Journal of Supercomputing}
2602,keywords = {linux, simulation}
2603,month = apr
2604,posted-at = {2012-05-03 09:12:04}
2605,priority = {2}
2606,title = {{A Read-Copy Update based parallel server for distributed crowd simulations}}
2607,url = {http://dx.doi.org/10.1007/s11227-012-0766-x}
2608,year = {2012}
2609}
2610
2611
2612@unpublished{JonCorbet2012ACCESS:ONCE
2613,Author="Jon Corbet"
2614,Title="{ACCESS\_ONCE()}"
2615,month="August"
2616,day="1"
2617,year="2012"
2618,note="\url{http://lwn.net/Articles/508991/}"
2619,annotation={
2620 A couple of simple specific compiler optimizations that motivate
2621 ACCESS_ONCE().
2622}
2623}
2624
2625@unpublished{AlexeyGotsman2012VerifyGraceExtended
2626,Author="Alexey Gotsman and Noam Rinetzky and Hongseok Yang"
2627,Title="Verifying Highly Concurrent Algorithms with Grace (extended version)"
2628,month="July"
2629,day="10"
2630,year="2012"
2631,note="\url{http://software.imdea.org/~gotsman/papers/recycling-esop13-ext.pdf}"
2632,annotation={
2633 Separation-logic formulation of RCU uses.
2634}
2635}
2636
2637@unpublished{PaulMcKenney2012RCUUsage
2638,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole"
2639,Title="{RCU} Usage In the Linux Kernel: One Decade Later"
2640,month="September"
2641,day="17"
2642,year="2012"
2643,url=http://rdrop.com/users/paulmck/techreports/survey.2012.09.17a.pdf
2644,note="Technical report paulmck.2012.09.17"
2645,annotation={
2646 Overview of the first variant of no-CBs CPUs for RCU.
2647}
2648}
2649
2650@unpublished{JonCorbet2012NOCB
2651,Author="Jon Corbet"
2652,Title="Relocating RCU callbacks"
2653,month="October"
2654,day="31"
2655,year="2012"
2656,note="\url{http://lwn.net/Articles/522262/}"
2657,annotation={
2658 Overview of the first variant of no-CBs CPUs for RCU.
2659}
2660}
2661
2662@phdthesis{JustinSeyster2012PhD
2663,author="Justin Seyster"
2664,title="Runtime Verification of Kernel-Level Concurrency Using Compiler-Based Instrumentation"
2665,school="Stony Brook University"
2666,year="2012"
2667,annotation={
2668 Looking for data races, including those involving RCU.
2669 Proposal:
2670 http://www.fsl.cs.sunysb.edu/docs/jseyster-proposal/redflag.pdf
2671 Dissertation:
2672 http://www.fsl.cs.sunysb.edu/docs/jseyster-dissertation/redflag.pdf
2673}
2674}
2675
2676@unpublished{PaulEMcKenney2013RCUUsage
2677,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole"
2678,Title="{RCU} Usage in the {Linux} Kernel: One Decade Later"
2679,month="February"
2680,day="24"
2681,year="2013"
2682,note="\url{http://rdrop.com/users/paulmck/techreports/RCUUsage.2013.02.24a.pdf}"
2683,annotation={
2684 Usage of RCU within the Linux kernel.
2685}
2686}
2687
2688@inproceedings{AlexeyGotsman2013ESOPRCU
2689,author = {Alexey Gotsman and Noam Rinetzky and Hongseok Yang}
2690,title = {Verifying concurrent memory reclamation algorithms with grace}
2691,booktitle = {ESOP'13: European Symposium on Programming}
2692,year = {2013}
2693,pages = {249--269}
2694,publisher = {Springer}
2695,address = {Rome, Italy}
2696,annotation={
2697 http://software.imdea.org/~gotsman/papers/recycling-esop13.pdf
2698}
2699}
2700
2701@unpublished{PaulEMcKenney2013NoTinyPreempt
2702,Author="Paul E. McKenney"
2703,Title="Simplifying RCU"
2704,month="March"
2705,day="6"
2706,year="2013"
2707,note="\url{http://lwn.net/Articles/541037/}"
2708,annotation={
2709 Getting rid of TINY_PREEMPT_RCU.
2462} 2710}
2463} 2711}