1*4882a593SmuzhiyunRead the Fscking Papers! 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunThis document describes RCU-related publications, and is followed by 5*4882a593Smuzhiyunthe corresponding bibtex entries. A number of the publications may 6*4882a593Smuzhiyunbe found at http://www.rdrop.com/users/paulmck/RCU/. For others, browsers 7*4882a593Smuzhiyunand search engines will usually find what you are looking for. 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunThe first thing resembling RCU was published in 1980, when Kung and Lehman 10*4882a593Smuzhiyun[Kung80] recommended use of a garbage collector to defer destruction 11*4882a593Smuzhiyunof nodes in a parallel binary search tree in order to simplify its 12*4882a593Smuzhiyunimplementation. This works well in environments that have garbage 13*4882a593Smuzhiyuncollectors, but most production garbage collectors incur significant 14*4882a593Smuzhiyunoverhead. 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunIn 1982, Manber and Ladner [Manber82,Manber84] recommended deferring 17*4882a593Smuzhiyundestruction until all threads running at that time have terminated, again 18*4882a593Smuzhiyunfor a parallel binary search tree. This approach works well in systems 19*4882a593Smuzhiyunwith short-lived threads, such as the K42 research operating system. 20*4882a593SmuzhiyunHowever, Linux has long-lived tasks, so more is needed. 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunIn 1986, Hennessy, Osisek, and Seigh [Hennessy89] introduced passive 23*4882a593Smuzhiyunserialization, which is an RCU-like mechanism that relies on the presence 24*4882a593Smuzhiyunof "quiescent states" in the VM/XA hypervisor that are guaranteed not 25*4882a593Smuzhiyunto be referencing the data structure. However, this mechanism was not 26*4882a593Smuzhiyunoptimized for modern computer systems, which is not surprising given 27*4882a593Smuzhiyunthat these overheads were not so expensive in the mid-80s. Nonetheless, 28*4882a593Smuzhiyunpassive serialization appears to be the first deferred-destruction 29*4882a593Smuzhiyunmechanism to be used in production. Furthermore, the relevant patent 30*4882a593Smuzhiyunhas lapsed, so this approach may be used in non-GPL software, if desired. 31*4882a593Smuzhiyun(In contrast, implementation of RCU is permitted only in software licensed 32*4882a593Smuzhiyununder either GPL or LGPL. Sorry!!!) 33*4882a593Smuzhiyun 34*4882a593SmuzhiyunIn 1987, Rashid et al. described lazy TLB-flush [RichardRashid87a]. 35*4882a593SmuzhiyunAt first glance, this has nothing to do with RCU, but nevertheless 36*4882a593Smuzhiyunthis paper helped inspire the update-side batching used in the later 37*4882a593SmuzhiyunRCU implementation in DYNIX/ptx. In 1988, Barbara Liskov published 38*4882a593Smuzhiyuna description of Argus that noted that use of out-of-date values can 39*4882a593Smuzhiyunbe tolerated in some situations. Thus, this paper provides some early 40*4882a593Smuzhiyuntheoretical justification for use of stale data. 41*4882a593Smuzhiyun 42*4882a593SmuzhiyunIn 1990, Pugh [Pugh90] noted that explicitly tracking which threads 43*4882a593Smuzhiyunwere reading a given data structure permitted deferred free to operate 44*4882a593Smuzhiyunin the presence of non-terminating threads. However, this explicit 45*4882a593Smuzhiyuntracking imposes significant read-side overhead, which is undesirable 46*4882a593Smuzhiyunin read-mostly situations. This algorithm does take pains to avoid 47*4882a593Smuzhiyunwrite-side contention and parallelize the other write-side overheads by 48*4882a593Smuzhiyunproviding a fine-grained locking design, however, it would be interesting 49*4882a593Smuzhiyunto see how much of the performance advantage reported in 1990 remains 50*4882a593Smuzhiyuntoday. 51*4882a593Smuzhiyun 52*4882a593SmuzhiyunAt about this same time, Andrews [Andrews91textbook] described ``chaotic 53*4882a593Smuzhiyunrelaxation'', where the normal barriers between successive iterations 54*4882a593Smuzhiyunof convergent numerical algorithms are relaxed, so that iteration $n$ 55*4882a593Smuzhiyunmight use data from iteration $n-1$ or even $n-2$. This introduces 56*4882a593Smuzhiyunerror, which typically slows convergence and thus increases the number of 57*4882a593Smuzhiyuniterations required. However, this increase is sometimes more than made 58*4882a593Smuzhiyunup for by a reduction in the number of expensive barrier operations, 59*4882a593Smuzhiyunwhich are otherwise required to synchronize the threads at the end 60*4882a593Smuzhiyunof each iteration. Unfortunately, chaotic relaxation requires highly 61*4882a593Smuzhiyunstructured data, such as the matrices used in scientific programs, and 62*4882a593Smuzhiyunis thus inapplicable to most data structures in operating-system kernels. 63*4882a593Smuzhiyun 64*4882a593SmuzhiyunIn 1992, Henry (now Alexia) Massalin completed a dissertation advising 65*4882a593Smuzhiyunparallel programmers to defer processing when feasible to simplify 66*4882a593Smuzhiyunsynchronization [HMassalinPhD]. RCU makes extremely heavy use of 67*4882a593Smuzhiyunthis advice. 68*4882a593Smuzhiyun 69*4882a593SmuzhiyunIn 1993, Jacobson [Jacobson93] verbally described what is perhaps the 70*4882a593Smuzhiyunsimplest deferred-free technique: simply waiting a fixed amount of time 71*4882a593Smuzhiyunbefore freeing blocks awaiting deferred free. Jacobson did not describe 72*4882a593Smuzhiyunany write-side changes he might have made in this work using SGI's Irix 73*4882a593Smuzhiyunkernel. Aju John published a similar technique in 1995 [AjuJohn95]. 74*4882a593SmuzhiyunThis works well if there is a well-defined upper bound on the length of 75*4882a593Smuzhiyuntime that reading threads can hold references, as there might well be in 76*4882a593Smuzhiyunhard real-time systems. However, if this time is exceeded, perhaps due 77*4882a593Smuzhiyunto preemption, excessive interrupts, or larger-than-anticipated load, 78*4882a593Smuzhiyunmemory corruption can ensue, with no reasonable means of diagnosis. 79*4882a593SmuzhiyunJacobson's technique is therefore inappropriate for use in production 80*4882a593Smuzhiyunoperating-system kernels, except when such kernels can provide hard 81*4882a593Smuzhiyunreal-time response guarantees for all operations. 82*4882a593Smuzhiyun 83*4882a593SmuzhiyunAlso in 1995, Pu et al. [Pu95a] applied a technique similar to that of Pugh's 84*4882a593Smuzhiyunread-side-tracking to permit replugging of algorithms within a commercial 85*4882a593SmuzhiyunUnix operating system. However, this replugging permitted only a single 86*4882a593Smuzhiyunreader at a time. The following year, this same group of researchers 87*4882a593Smuzhiyunextended their technique to allow for multiple readers [Cowan96a]. 88*4882a593SmuzhiyunTheir approach requires memory barriers (and thus pipeline stalls), 89*4882a593Smuzhiyunbut reduces memory latency, contention, and locking overheads. 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun1995 also saw the first publication of DYNIX/ptx's RCU mechanism 92*4882a593Smuzhiyun[Slingwine95], which was optimized for modern CPU architectures, 93*4882a593Smuzhiyunand was successfully applied to a number of situations within the 94*4882a593SmuzhiyunDYNIX/ptx kernel. The corresponding conference paper appeared in 1998 95*4882a593Smuzhiyun[McKenney98]. 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunIn 1999, the Tornado and K42 groups described their "generations" 98*4882a593Smuzhiyunmechanism, which is quite similar to RCU [Gamsa99]. These operating 99*4882a593Smuzhiyunsystems made pervasive use of RCU in place of "existence locks", which 100*4882a593Smuzhiyungreatly simplifies locking hierarchies and helps avoid deadlocks. 101*4882a593Smuzhiyun 102*4882a593SmuzhiyunThe year 2000 saw an email exchange that would likely have 103*4882a593Smuzhiyunled to yet another independent invention of something like RCU 104*4882a593Smuzhiyun[RustyRussell2000a,RustyRussell2000b]. Instead, 2001 saw the first 105*4882a593SmuzhiyunRCU presentation involving Linux [McKenney01a] at OLS. The resulting 106*4882a593Smuzhiyunabundance of RCU patches was presented the following year [McKenney02a], 107*4882a593Smuzhiyunand use of RCU in dcache was first described that same year [Linder02a]. 108*4882a593Smuzhiyun 109*4882a593SmuzhiyunAlso in 2002, Michael [Michael02b,Michael02a] presented "hazard-pointer" 110*4882a593Smuzhiyuntechniques that defer the destruction of data structures to simplify 111*4882a593Smuzhiyunnon-blocking synchronization (wait-free synchronization, lock-free 112*4882a593Smuzhiyunsynchronization, and obstruction-free synchronization are all examples of 113*4882a593Smuzhiyunnon-blocking synchronization). The corresponding journal article appeared 114*4882a593Smuzhiyunin 2004 [MagedMichael04a]. This technique eliminates locking, reduces 115*4882a593Smuzhiyuncontention, reduces memory latency for readers, and parallelizes pipeline 116*4882a593Smuzhiyunstalls and memory latency for writers. However, these techniques still 117*4882a593Smuzhiyunimpose significant read-side overhead in the form of memory barriers. 118*4882a593SmuzhiyunResearchers at Sun worked along similar lines in the same timeframe 119*4882a593Smuzhiyun[HerlihyLM02]. These techniques can be thought of as inside-out reference 120*4882a593Smuzhiyuncounts, where the count is represented by the number of hazard pointers 121*4882a593Smuzhiyunreferencing a given data structure rather than the more conventional 122*4882a593Smuzhiyuncounter field within the data structure itself. The key advantage 123*4882a593Smuzhiyunof inside-out reference counts is that they can be stored in immortal 124*4882a593Smuzhiyunvariables, thus allowing races between access and deletion to be avoided. 125*4882a593Smuzhiyun 126*4882a593SmuzhiyunBy the same token, RCU can be thought of as a "bulk reference count", 127*4882a593Smuzhiyunwhere some form of reference counter covers all reference by a given CPU 128*4882a593Smuzhiyunor thread during a set timeframe. This timeframe is related to, but 129*4882a593Smuzhiyunnot necessarily exactly the same as, an RCU grace period. In classic 130*4882a593SmuzhiyunRCU, the reference counter is the per-CPU bit in the "bitmask" field, 131*4882a593Smuzhiyunand each such bit covers all references that might have been made by 132*4882a593Smuzhiyunthe corresponding CPU during the prior grace period. Of course, RCU 133*4882a593Smuzhiyuncan be thought of in other terms as well. 134*4882a593Smuzhiyun 135*4882a593SmuzhiyunIn 2003, the K42 group described how RCU could be used to create 136*4882a593Smuzhiyunhot-pluggable implementations of operating-system functions [Appavoo03a]. 137*4882a593SmuzhiyunLater that year saw a paper describing an RCU implementation 138*4882a593Smuzhiyunof System V IPC [Arcangeli03] (following up on a suggestion by 139*4882a593SmuzhiyunHugh Dickins [Dickins02a] and an implementation by Mingming Cao 140*4882a593Smuzhiyun[MingmingCao2002IPCRCU]), and an introduction to RCU in Linux Journal 141*4882a593Smuzhiyun[McKenney03a]. 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun2004 has seen a Linux-Journal article on use of RCU in dcache 144*4882a593Smuzhiyun[McKenney04a], a performance comparison of locking to RCU on several 145*4882a593Smuzhiyundifferent CPUs [McKenney04b], a dissertation describing use of RCU in a 146*4882a593Smuzhiyunnumber of operating-system kernels [PaulEdwardMcKenneyPhD], a paper 147*4882a593Smuzhiyundescribing how to make RCU safe for soft-realtime applications [Sarma04c], 148*4882a593Smuzhiyunand a paper describing SELinux performance with RCU [JamesMorris04b]. 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun2005 brought further adaptation of RCU to realtime use, permitting 151*4882a593Smuzhiyunpreemption of RCU realtime critical sections [PaulMcKenney05a, 152*4882a593SmuzhiyunPaulMcKenney05b]. 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun2006 saw the first best-paper award for an RCU paper [ThomasEHart2006a], 155*4882a593Smuzhiyunas well as further work on efficient implementations of preemptible 156*4882a593SmuzhiyunRCU [PaulEMcKenney2006b], but priority-boosting of RCU read-side critical 157*4882a593Smuzhiyunsections proved elusive. An RCU implementation permitting general 158*4882a593Smuzhiyunblocking in read-side critical sections appeared [PaulEMcKenney2006c], 159*4882a593SmuzhiyunRobert Olsson described an RCU-protected trie-hash combination 160*4882a593Smuzhiyun[RobertOlsson2006a]. 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun2007 saw the journal version of the award-winning RCU paper from 2006 163*4882a593Smuzhiyun[ThomasEHart2007a], as well as a paper demonstrating use of Promela 164*4882a593Smuzhiyunand Spin to mechanically verify an optimization to Oleg Nesterov's 165*4882a593SmuzhiyunQRCU [PaulEMcKenney2007QRCUspin], a design document describing 166*4882a593Smuzhiyunpreemptible RCU [PaulEMcKenney2007PreemptibleRCU], and the three-part 167*4882a593SmuzhiyunLWN "What is RCU?" series [PaulEMcKenney2007WhatIsRCUFundamentally, 168*4882a593SmuzhiyunPaulEMcKenney2008WhatIsRCUUsage, and PaulEMcKenney2008WhatIsRCUAPI]. 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun2008 saw a journal paper on real-time RCU [DinakarGuniguntala2008IBMSysJ], 171*4882a593Smuzhiyuna history of how Linux changed RCU more than RCU changed Linux 172*4882a593Smuzhiyun[PaulEMcKenney2008RCUOSR], and a design overview of hierarchical RCU 173*4882a593Smuzhiyun[PaulEMcKenney2008HierarchicalRCU]. 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun2009 introduced user-level RCU algorithms [PaulEMcKenney2009MaliciousURCU], 176*4882a593Smuzhiyunwhich Mathieu Desnoyers is now maintaining [MathieuDesnoyers2009URCU] 177*4882a593Smuzhiyun[MathieuDesnoyersPhD]. TINY_RCU [PaulEMcKenney2009BloatWatchRCU] made 178*4882a593Smuzhiyunits appearance, as did expedited RCU [PaulEMcKenney2009expeditedRCU]. 179*4882a593SmuzhiyunThe problem of resizable RCU-protected hash tables may now be on a path 180*4882a593Smuzhiyunto a solution [JoshTriplett2009RPHash]. A few academic researchers are now 181*4882a593Smuzhiyunusing RCU to solve their parallel problems [HariKannan2009DynamicAnalysisRCU]. 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun2010 produced a simpler preemptible-RCU implementation 184*4882a593Smuzhiyunbased on TREE_RCU [PaulEMcKenney2010SimpleOptRCU], lockdep-RCU 185*4882a593Smuzhiyun[PaulEMcKenney2010LockdepRCU], another resizable RCU-protected hash 186*4882a593Smuzhiyuntable [HerbertXu2010RCUResizeHash] (this one consuming more memory, 187*4882a593Smuzhiyunbut allowing arbitrary changes in hash function, as required for DoS 188*4882a593Smuzhiyunavoidance in the networking code), realization of the 2009 RCU-protected 189*4882a593Smuzhiyunhash table with atomic node move [JoshTriplett2010RPHash], an update on 190*4882a593Smuzhiyunthe RCU API [PaulEMcKenney2010RCUAPI]. 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun2011 marked the inclusion of Nick Piggin's fully lockless dentry search 193*4882a593Smuzhiyun[LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS], an RCU-protected red-black 194*4882a593Smuzhiyuntree using software transactional memory to protect concurrent updates 195*4882a593Smuzhiyun(strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of 196*4882a593SmuzhiyunRCU-protected resizable hash tables [Triplett:2011:RPHash], the 3.0 RCU 197*4882a593Smuzhiyuntrainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the 198*4882a593SmuzhiyunLockers" LWN article [NeilBrown2011MeetTheLockers]. Some academic 199*4882a593Smuzhiyunwork looked at debugging uses of RCU [Seyster:2011:RFA:2075416.2075425]. 200*4882a593Smuzhiyun 201*4882a593SmuzhiyunIn 2012, Josh Triplett received his Ph.D. with his dissertation 202*4882a593Smuzhiyuncovering RCU-protected resizable hash tables and the relationship 203*4882a593Smuzhiyunbetween memory barriers and read-side traversal order: If the updater 204*4882a593Smuzhiyunis making changes in the opposite direction from the read-side traveral 205*4882a593Smuzhiyunorder, the updater need only execute a memory-barrier instruction, 206*4882a593Smuzhiyunbut if in the same direction, the updater needs to wait for a grace 207*4882a593Smuzhiyunperiod between the individual updates [JoshTriplettPhD]. Also in 2012, 208*4882a593Smuzhiyunafter seventeen years of attempts, an RCU paper made it into a top-flight 209*4882a593Smuzhiyunacademic journal, IEEE Transactions on Parallel and Distributed Systems 210*4882a593Smuzhiyun[MathieuDesnoyers2012URCU]. A group of researchers in Spain applied 211*4882a593Smuzhiyunuser-level RCU to crowd simulation [GuillermoVigueras2012RCUCrowd], and 212*4882a593Smuzhiyunanother group of researchers in Europe produced a formal description of 213*4882a593SmuzhiyunRCU based on separation logic [AlexeyGotsman2012VerifyGraceExtended], 214*4882a593Smuzhiyunwhich was published in the 2013 European Symposium on Programming 215*4882a593Smuzhiyun[AlexeyGotsman2013ESOPRCU]. 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun 219*4882a593SmuzhiyunBibtex Entries 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun@article{Kung80 222*4882a593Smuzhiyun,author="H. T. Kung and Q. Lehman" 223*4882a593Smuzhiyun,title="Concurrent Manipulation of Binary Search Trees" 224*4882a593Smuzhiyun,Year="1980" 225*4882a593Smuzhiyun,Month="September" 226*4882a593Smuzhiyun,journal="ACM Transactions on Database Systems" 227*4882a593Smuzhiyun,volume="5" 228*4882a593Smuzhiyun,number="3" 229*4882a593Smuzhiyun,pages="354-382" 230*4882a593Smuzhiyun,annotation={ 231*4882a593Smuzhiyun Use garbage collector to clean up data after everyone is done with it. 232*4882a593Smuzhiyun . 233*4882a593Smuzhiyun Oldest use of something vaguely resembling RCU that I have found. 234*4882a593Smuzhiyun http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE, 235*4882a593Smuzhiyun [Viewed December 3, 2007] 236*4882a593Smuzhiyun} 237*4882a593Smuzhiyun} 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun@techreport{Manber82 240*4882a593Smuzhiyun,author="Udi Manber and Richard E. Ladner" 241*4882a593Smuzhiyun,title="Concurrency Control in a Dynamic Search Structure" 242*4882a593Smuzhiyun,institution="Department of Computer Science, University of Washington" 243*4882a593Smuzhiyun,address="Seattle, Washington" 244*4882a593Smuzhiyun,year="1982" 245*4882a593Smuzhiyun,number="82-01-01" 246*4882a593Smuzhiyun,month="January" 247*4882a593Smuzhiyun,pages="28" 248*4882a593Smuzhiyun,annotation={ 249*4882a593Smuzhiyun . 250*4882a593Smuzhiyun Superseded by Manber84. 251*4882a593Smuzhiyun . 252*4882a593Smuzhiyun Describes concurrent AVL tree implementation. Uses a 253*4882a593Smuzhiyun garbage-collection mechanism to handle concurrent use and deletion 254*4882a593Smuzhiyun of nodes in the tree, but lacks the summary-of-execution-history 255*4882a593Smuzhiyun concept of read-copy locking. 256*4882a593Smuzhiyun . 257*4882a593Smuzhiyun Keeps full list of processes that were active when a given 258*4882a593Smuzhiyun node was to be deleted, and waits until all such processes have 259*4882a593Smuzhiyun -terminated- before allowing this node to be reused. This is 260*4882a593Smuzhiyun not described in great detail -- one could imagine using process 261*4882a593Smuzhiyun IDs for this if the ID space was large enough that overlapping 262*4882a593Smuzhiyun never occurred. 263*4882a593Smuzhiyun . 264*4882a593Smuzhiyun This restriction makes this algorithm unsuitable for use in 265*4882a593Smuzhiyun systems comprised of long-lived processes. It also produces 266*4882a593Smuzhiyun completely unacceptable overhead in systems with large numbers 267*4882a593Smuzhiyun of processes. Finally, it is specific to AVL trees. 268*4882a593Smuzhiyun . 269*4882a593Smuzhiyun Cites Kung80, so not an independent invention, but the first 270*4882a593Smuzhiyun RCU-like usage that does not rely on an automatic garbage 271*4882a593Smuzhiyun collector. 272*4882a593Smuzhiyun} 273*4882a593Smuzhiyun} 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun@article{Manber84 276*4882a593Smuzhiyun,author="Udi Manber and Richard E. Ladner" 277*4882a593Smuzhiyun,title="Concurrency Control in a Dynamic Search Structure" 278*4882a593Smuzhiyun,Year="1984" 279*4882a593Smuzhiyun,Month="September" 280*4882a593Smuzhiyun,journal="ACM Transactions on Database Systems" 281*4882a593Smuzhiyun,volume="9" 282*4882a593Smuzhiyun,number="3" 283*4882a593Smuzhiyun,pages="439-455" 284*4882a593Smuzhiyun,annotation={ 285*4882a593Smuzhiyun Describes concurrent AVL tree implementation. Uses a 286*4882a593Smuzhiyun garbage-collection mechanism to handle concurrent use and deletion 287*4882a593Smuzhiyun of nodes in the tree, but lacks the summary-of-execution-history 288*4882a593Smuzhiyun concept of read-copy locking. 289*4882a593Smuzhiyun . 290*4882a593Smuzhiyun Keeps full list of processes that were active when a given 291*4882a593Smuzhiyun node was to be deleted, and waits until all such processes have 292*4882a593Smuzhiyun -terminated- before allowing this node to be reused. This is 293*4882a593Smuzhiyun not described in great detail -- one could imagine using process 294*4882a593Smuzhiyun IDs for this if the ID space was large enough that overlapping 295*4882a593Smuzhiyun never occurred. 296*4882a593Smuzhiyun . 297*4882a593Smuzhiyun This restriction makes this algorithm unsuitable for use in 298*4882a593Smuzhiyun systems comprised of long-lived processes. It also produces 299*4882a593Smuzhiyun completely unacceptable overhead in systems with large numbers 300*4882a593Smuzhiyun of processes. Finally, it is specific to AVL trees. 301*4882a593Smuzhiyun} 302*4882a593Smuzhiyun} 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun@Conference{RichardRashid87a 305*4882a593Smuzhiyun,Author="Richard Rashid and Avadis Tevanian and Michael Young and 306*4882a593SmuzhiyunDavid Golub and Robert Baron and David Black and William Bolosky and 307*4882a593SmuzhiyunJonathan Chew" 308*4882a593Smuzhiyun,Title="Machine-Independent Virtual Memory Management for Paged 309*4882a593SmuzhiyunUniprocessor and Multiprocessor Architectures" 310*4882a593Smuzhiyun,Booktitle="{2\textsuperscript{nd} Symposium on Architectural Support 311*4882a593Smuzhiyunfor Programming Languages and Operating Systems}" 312*4882a593Smuzhiyun,Publisher="Association for Computing Machinery" 313*4882a593Smuzhiyun,Month="October" 314*4882a593Smuzhiyun,Year="1987" 315*4882a593Smuzhiyun,pages="31-39" 316*4882a593Smuzhiyun,Address="Palo Alto, CA" 317*4882a593Smuzhiyun,note="Available: 318*4882a593Smuzhiyun\url{http://www.cse.ucsc.edu/~randal/221/rashid-machvm.pdf} 319*4882a593Smuzhiyun[Viewed February 17, 2005]" 320*4882a593Smuzhiyun,annotation={ 321*4882a593Smuzhiyun Describes lazy TLB flush, where one waits for each CPU to pass 322*4882a593Smuzhiyun through a scheduling-clock interrupt before reusing a given range 323*4882a593Smuzhiyun of virtual address. Does not describe how one determines that 324*4882a593Smuzhiyun all CPUs have in fact taken such an interrupt, though there are 325*4882a593Smuzhiyun no shortage of straightforward methods for accomplishing this. 326*4882a593Smuzhiyun . 327*4882a593Smuzhiyun Note that it does not make sense to just wait a fixed amount of 328*4882a593Smuzhiyun time, since a given CPU might have interrupts disabled for an 329*4882a593Smuzhiyun extended amount of time. 330*4882a593Smuzhiyun} 331*4882a593Smuzhiyun} 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun@article{BarbaraLiskov1988ArgusCACM 334*4882a593Smuzhiyun,author = {Barbara Liskov} 335*4882a593Smuzhiyun,title = {Distributed programming in {Argus}} 336*4882a593Smuzhiyun,journal = {Commun. ACM} 337*4882a593Smuzhiyun,volume = {31} 338*4882a593Smuzhiyun,number = {3} 339*4882a593Smuzhiyun,year = {1988} 340*4882a593Smuzhiyun,issn = {0001-0782} 341*4882a593Smuzhiyun,pages = {300--312} 342*4882a593Smuzhiyun,doi = {http://doi.acm.org/10.1145/42392.42399} 343*4882a593Smuzhiyun,publisher = {ACM} 344*4882a593Smuzhiyun,address = {New York, NY, USA} 345*4882a593Smuzhiyun,annotation={ 346*4882a593Smuzhiyun At the top of page 307: "Conflicts with deposits and withdrawals 347*4882a593Smuzhiyun are necessary if the reported total is to be up to date. They 348*4882a593Smuzhiyun could be avoided by having total return a sum that is slightly 349*4882a593Smuzhiyun out of date." Relies on semantics -- approximate numerical 350*4882a593Smuzhiyun values sometimes OK. 351*4882a593Smuzhiyun} 352*4882a593Smuzhiyun} 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun@techreport{Hennessy89 355*4882a593Smuzhiyun,author="James P. Hennessy and Damian L. Osisek and Joseph W. {Seigh II}" 356*4882a593Smuzhiyun,title="Passive Serialization in a Multitasking Environment" 357*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 358*4882a593Smuzhiyun,address="Washington, DC" 359*4882a593Smuzhiyun,year="1989" 360*4882a593Smuzhiyun,number="US Patent 4,809,168 (lapsed)" 361*4882a593Smuzhiyun,month="February" 362*4882a593Smuzhiyun,pages="11" 363*4882a593Smuzhiyun} 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun@techreport{Pugh90 366*4882a593Smuzhiyun,author="William Pugh" 367*4882a593Smuzhiyun,title="Concurrent Maintenance of Skip Lists" 368*4882a593Smuzhiyun,institution="Institute of Advanced Computer Science Studies, Department of Computer Science, University of Maryland" 369*4882a593Smuzhiyun,address="College Park, Maryland" 370*4882a593Smuzhiyun,year="1990" 371*4882a593Smuzhiyun,number="CS-TR-2222.1" 372*4882a593Smuzhiyun,month="June" 373*4882a593Smuzhiyun,annotation={ 374*4882a593Smuzhiyun Concurrent access to skip lists. Has both weak and strong search. 375*4882a593Smuzhiyun Uses concept of ``garbage queue'', but has no real way of cleaning 376*4882a593Smuzhiyun the garbage efficiently. 377*4882a593Smuzhiyun . 378*4882a593Smuzhiyun Appears to be an independent invention of an RCU-like mechanism. 379*4882a593Smuzhiyun} 380*4882a593Smuzhiyun} 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun# Was Adams91, see also syncrefs.bib. 383*4882a593Smuzhiyun@Book{Andrews91textbook 384*4882a593Smuzhiyun,Author="Gregory R. Andrews" 385*4882a593Smuzhiyun,title="Concurrent Programming, Principles, and Practices" 386*4882a593Smuzhiyun,Publisher="Benjamin Cummins" 387*4882a593Smuzhiyun,Year="1991" 388*4882a593Smuzhiyun,annotation={ 389*4882a593Smuzhiyun Has a few paragraphs describing ``chaotic relaxation'', a 390*4882a593Smuzhiyun numerical analysis technique that allows multiprocessors to 391*4882a593Smuzhiyun avoid synchronization overhead by using possibly-stale data. 392*4882a593Smuzhiyun . 393*4882a593Smuzhiyun Seems like this is descended from yet another independent 394*4882a593Smuzhiyun invention of RCU-like function -- but this is restricted 395*4882a593Smuzhiyun in that reclamation is not necessary. 396*4882a593Smuzhiyun} 397*4882a593Smuzhiyun} 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun@phdthesis{HMassalinPhD 400*4882a593Smuzhiyun,author="H. Massalin" 401*4882a593Smuzhiyun,title="Synthesis: An Efficient Implementation of Fundamental Operating 402*4882a593SmuzhiyunSystem Services" 403*4882a593Smuzhiyun,school="Columbia University" 404*4882a593Smuzhiyun,address="New York, NY" 405*4882a593Smuzhiyun,year="1992" 406*4882a593Smuzhiyun,annotation={ 407*4882a593Smuzhiyun Mondo optimizing compiler. 408*4882a593Smuzhiyun Wait-free stuff. 409*4882a593Smuzhiyun Good advice: defer work to avoid synchronization. See page 90 410*4882a593Smuzhiyun (PDF page 106), Section 5.4, fourth bullet point. 411*4882a593Smuzhiyun} 412*4882a593Smuzhiyun} 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun@unpublished{Jacobson93 415*4882a593Smuzhiyun,author="Van Jacobson" 416*4882a593Smuzhiyun,title="Avoid Read-Side Locking Via Delayed Free" 417*4882a593Smuzhiyun,year="1993" 418*4882a593Smuzhiyun,month="September" 419*4882a593Smuzhiyun,note="private communication" 420*4882a593Smuzhiyun,annotation={ 421*4882a593Smuzhiyun Use fixed time delay to approximate grace period. Very simple, 422*4882a593Smuzhiyun but subject to random memory corruption under heavy load. 423*4882a593Smuzhiyun . 424*4882a593Smuzhiyun Independent invention of RCU-like mechanism. 425*4882a593Smuzhiyun} 426*4882a593Smuzhiyun} 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun@Conference{AjuJohn95 429*4882a593Smuzhiyun,Author="Aju John" 430*4882a593Smuzhiyun,Title="Dynamic vnodes -- Design and Implementation" 431*4882a593Smuzhiyun,Booktitle="{USENIX Winter 1995}" 432*4882a593Smuzhiyun,Publisher="USENIX Association" 433*4882a593Smuzhiyun,Month="January" 434*4882a593Smuzhiyun,Year="1995" 435*4882a593Smuzhiyun,pages="11-23" 436*4882a593Smuzhiyun,Address="New Orleans, LA" 437*4882a593Smuzhiyun,note="Available: 438*4882a593Smuzhiyun\url{https://www.usenix.org/publications/library/proceedings/neworl/full_papers/john.a} 439*4882a593Smuzhiyun[Viewed October 1, 2010]" 440*4882a593Smuzhiyun,annotation={ 441*4882a593Smuzhiyun Age vnodes out of the cache, and have a fixed time set by a kernel 442*4882a593Smuzhiyun parameter. Not clear that all races were in fact correctly handled. 443*4882a593Smuzhiyun Used a 20-minute time by default, which would most definitely not 444*4882a593Smuzhiyun be suitable during DoS attacks or virus scans. 445*4882a593Smuzhiyun . 446*4882a593Smuzhiyun Apparently independent invention of RCU-like mechanism. 447*4882a593Smuzhiyun} 448*4882a593Smuzhiyun} 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun@conference{Pu95a 451*4882a593Smuzhiyun,Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and 452*4882a593SmuzhiyunCrispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and 453*4882a593SmuzhiyunKe Zhang" 454*4882a593Smuzhiyun,Title = "Optimistic Incremental Specialization: Streamlining a Commercial 455*4882a593Smuzhiyun,Operating System" 456*4882a593Smuzhiyun,Booktitle = "15\textsuperscript{th} ACM Symposium on 457*4882a593Smuzhiyun,Operating Systems Principles (SOSP'95)" 458*4882a593Smuzhiyun,address = "Copper Mountain, CO" 459*4882a593Smuzhiyun,month="December" 460*4882a593Smuzhiyun,year="1995" 461*4882a593Smuzhiyun,pages="314-321" 462*4882a593Smuzhiyun,annotation={ 463*4882a593Smuzhiyun Uses a replugger, but with a flag to signal when people are 464*4882a593Smuzhiyun using the resource at hand. Only one reader at a time. 465*4882a593Smuzhiyun} 466*4882a593Smuzhiyun} 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun@conference{Cowan96a 469*4882a593Smuzhiyun,Author = "Crispin Cowan and Tito Autrey and Charles Krasic and 470*4882a593Smuzhiyun,Calton Pu and Jonathan Walpole" 471*4882a593Smuzhiyun,Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System" 472*4882a593Smuzhiyun,Booktitle = "International Conference on Configurable Distributed Systems 473*4882a593Smuzhiyun(ICCDS'96)" 474*4882a593Smuzhiyun,address = "Annapolis, MD" 475*4882a593Smuzhiyun,month="May" 476*4882a593Smuzhiyun,year="1996" 477*4882a593Smuzhiyun,pages="108" 478*4882a593Smuzhiyun,isbn="0-8186-7395-8" 479*4882a593Smuzhiyun,annotation={ 480*4882a593Smuzhiyun Uses a replugger, but with a counter to signal when people are 481*4882a593Smuzhiyun using the resource at hand. Allows multiple readers. 482*4882a593Smuzhiyun} 483*4882a593Smuzhiyun} 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun@techreport{Slingwine95 486*4882a593Smuzhiyun,author="John D. Slingwine and Paul E. McKenney" 487*4882a593Smuzhiyun,title="Apparatus and Method for Achieving Reduced Overhead Mutual 488*4882a593SmuzhiyunExclusion and Maintaining Coherency in a Multiprocessor System 489*4882a593SmuzhiyunUtilizing Execution History and Thread Monitoring" 490*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 491*4882a593Smuzhiyun,address="Washington, DC" 492*4882a593Smuzhiyun,year="1995" 493*4882a593Smuzhiyun,number="US Patent 5,442,758" 494*4882a593Smuzhiyun,month="August" 495*4882a593Smuzhiyun,annotation={ 496*4882a593Smuzhiyun Describes the parallel RCU infrastructure. Includes NUMA aspect 497*4882a593Smuzhiyun (structure of bitmap can reflect bus structure of computer system). 498*4882a593Smuzhiyun . 499*4882a593Smuzhiyun Another independent invention of an RCU-like mechanism, but the 500*4882a593Smuzhiyun "real" RCU this time! 501*4882a593Smuzhiyun} 502*4882a593Smuzhiyun} 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun@techreport{Slingwine97 505*4882a593Smuzhiyun,author="John D. Slingwine and Paul E. McKenney" 506*4882a593Smuzhiyun,title="Method for Maintaining Data Coherency Using Thread Activity 507*4882a593SmuzhiyunSummaries in a Multicomputer System" 508*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 509*4882a593Smuzhiyun,address="Washington, DC" 510*4882a593Smuzhiyun,year="1997" 511*4882a593Smuzhiyun,number="US Patent 5,608,893" 512*4882a593Smuzhiyun,month="March" 513*4882a593Smuzhiyun,pages="19" 514*4882a593Smuzhiyun,annotation={ 515*4882a593Smuzhiyun Describes use of RCU to synchronize data between a pair of 516*4882a593Smuzhiyun SMP/NUMA computer systems. 517*4882a593Smuzhiyun} 518*4882a593Smuzhiyun} 519*4882a593Smuzhiyun 520*4882a593Smuzhiyun@techreport{Slingwine98 521*4882a593Smuzhiyun,author="John D. Slingwine and Paul E. McKenney" 522*4882a593Smuzhiyun,title="Apparatus and Method for Achieving Reduced Overhead Mutual 523*4882a593SmuzhiyunExclusion and Maintaining Coherency in a Multiprocessor System 524*4882a593SmuzhiyunUtilizing Execution History and Thread Monitoring" 525*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 526*4882a593Smuzhiyun,address="Washington, DC" 527*4882a593Smuzhiyun,year="1998" 528*4882a593Smuzhiyun,number="US Patent 5,727,209" 529*4882a593Smuzhiyun,month="March" 530*4882a593Smuzhiyun,annotation={ 531*4882a593Smuzhiyun Describes doing an atomic update by copying the data item and 532*4882a593Smuzhiyun then substituting it into the data structure. 533*4882a593Smuzhiyun} 534*4882a593Smuzhiyun} 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun@Conference{McKenney98 537*4882a593Smuzhiyun,Author="Paul E. McKenney and John D. Slingwine" 538*4882a593Smuzhiyun,Title="Read-Copy Update: Using Execution History to Solve Concurrency 539*4882a593SmuzhiyunProblems" 540*4882a593Smuzhiyun,Booktitle="{Parallel and Distributed Computing and Systems}" 541*4882a593Smuzhiyun,Month="October" 542*4882a593Smuzhiyun,Year="1998" 543*4882a593Smuzhiyun,pages="509-518" 544*4882a593Smuzhiyun,Address="Las Vegas, NV" 545*4882a593Smuzhiyun,annotation={ 546*4882a593Smuzhiyun Describes and analyzes RCU mechanism in DYNIX/ptx. Describes 547*4882a593Smuzhiyun application to linked list update and log-buffer flushing. 548*4882a593Smuzhiyun Defines 'quiescent state'. Includes both measured and analytic 549*4882a593Smuzhiyun evaluation. 550*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf 551*4882a593Smuzhiyun [Viewed December 3, 2007] 552*4882a593Smuzhiyun} 553*4882a593Smuzhiyun} 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun@Conference{Gamsa99 556*4882a593Smuzhiyun,Author="Ben Gamsa and Orran Krieger and Jonathan Appavoo and Michael Stumm" 557*4882a593Smuzhiyun,Title="Tornado: Maximizing Locality and Concurrency in a Shared Memory 558*4882a593SmuzhiyunMultiprocessor Operating System" 559*4882a593Smuzhiyun,Booktitle="{Proceedings of the 3\textsuperscript{rd} Symposium on 560*4882a593SmuzhiyunOperating System Design and Implementation}" 561*4882a593Smuzhiyun,Month="February" 562*4882a593Smuzhiyun,Year="1999" 563*4882a593Smuzhiyun,pages="87-100" 564*4882a593Smuzhiyun,Address="New Orleans, LA" 565*4882a593Smuzhiyun,annotation={ 566*4882a593Smuzhiyun Use of RCU-like facility in K42/Tornado. Another independent 567*4882a593Smuzhiyun invention of RCU. 568*4882a593Smuzhiyun See especially pages 7-9 (Section 5). 569*4882a593Smuzhiyun http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf 570*4882a593Smuzhiyun [Viewed August 30, 2006] 571*4882a593Smuzhiyun} 572*4882a593Smuzhiyun} 573*4882a593Smuzhiyun 574*4882a593Smuzhiyun@unpublished{RustyRussell2000a 575*4882a593Smuzhiyun,Author="Rusty Russell" 576*4882a593Smuzhiyun,Title="Re: modular net drivers" 577*4882a593Smuzhiyun,month="June" 578*4882a593Smuzhiyun,year="2000" 579*4882a593Smuzhiyun,day="23" 580*4882a593Smuzhiyun,note="Available: 581*4882a593Smuzhiyun\url{http://oss.sgi.com/projects/netdev/archive/2000-06/msg00250.html} 582*4882a593Smuzhiyun[Viewed April 10, 2006]" 583*4882a593Smuzhiyun,annotation={ 584*4882a593Smuzhiyun Proto-RCU proposal from Phil Rumpf and Rusty Russell. 585*4882a593Smuzhiyun Yet another independent invention of RCU. 586*4882a593Smuzhiyun Outline of algorithm to unload modules... 587*4882a593Smuzhiyun . 588*4882a593Smuzhiyun Appeared on net-dev mailing list. 589*4882a593Smuzhiyun} 590*4882a593Smuzhiyun} 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun@unpublished{RustyRussell2000b 593*4882a593Smuzhiyun,Author="Rusty Russell" 594*4882a593Smuzhiyun,Title="Re: modular net drivers" 595*4882a593Smuzhiyun,month="June" 596*4882a593Smuzhiyun,year="2000" 597*4882a593Smuzhiyun,day="24" 598*4882a593Smuzhiyun,note="Available: 599*4882a593Smuzhiyun\url{http://oss.sgi.com/projects/netdev/archive/2000-06/msg00254.html} 600*4882a593Smuzhiyun[Viewed April 10, 2006]" 601*4882a593Smuzhiyun,annotation={ 602*4882a593Smuzhiyun Proto-RCU proposal from Phil Rumpf and Rusty Russell. 603*4882a593Smuzhiyun . 604*4882a593Smuzhiyun Appeared on net-dev mailing list. 605*4882a593Smuzhiyun} 606*4882a593Smuzhiyun} 607*4882a593Smuzhiyun 608*4882a593Smuzhiyun@unpublished{McKenney01b 609*4882a593Smuzhiyun,Author="Paul E. McKenney and Dipankar Sarma" 610*4882a593Smuzhiyun,Title="Read-Copy Update Mutual Exclusion in {Linux}" 611*4882a593Smuzhiyun,month="February" 612*4882a593Smuzhiyun,year="2001" 613*4882a593Smuzhiyun,note="Available: 614*4882a593Smuzhiyun\url{http://lse.sourceforge.net/locking/rcu/rcupdate_doc.html} 615*4882a593Smuzhiyun[Viewed October 18, 2004]" 616*4882a593Smuzhiyun,annotation={ 617*4882a593Smuzhiyun Prototypical Linux documentation for RCU. 618*4882a593Smuzhiyun} 619*4882a593Smuzhiyun} 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun@techreport{Slingwine01 622*4882a593Smuzhiyun,author="John D. Slingwine and Paul E. McKenney" 623*4882a593Smuzhiyun,title="Apparatus and Method for Achieving Reduced Overhead Mutual 624*4882a593SmuzhiyunExclusion and Maintaining Coherency in a Multiprocessor System 625*4882a593SmuzhiyunUtilizing Execution History and Thread Monitoring" 626*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 627*4882a593Smuzhiyun,address="Washington, DC" 628*4882a593Smuzhiyun,year="2001" 629*4882a593Smuzhiyun,number="US Patent 6,219,690" 630*4882a593Smuzhiyun,month="April" 631*4882a593Smuzhiyun,annotation={ 632*4882a593Smuzhiyun 'Change in mode' aspect of RCU. Can be thought of as a lazy barrier. 633*4882a593Smuzhiyun} 634*4882a593Smuzhiyun} 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun@Conference{McKenney01a 637*4882a593Smuzhiyun,Author="Paul E. McKenney and Jonathan Appavoo and Andi Kleen and 638*4882a593SmuzhiyunOrran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" 639*4882a593Smuzhiyun,Title="Read-Copy Update" 640*4882a593Smuzhiyun,Booktitle="{Ottawa Linux Symposium}" 641*4882a593Smuzhiyun,Month="July" 642*4882a593Smuzhiyun,Year="2001" 643*4882a593Smuzhiyun,note="Available: 644*4882a593Smuzhiyun\url{http://www.linuxsymposium.org/2001/abstracts/readcopy.php} 645*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/rclock_OLS.2001.05.01c.pdf} 646*4882a593Smuzhiyun[Viewed June 23, 2004]" 647*4882a593Smuzhiyun,annotation={ 648*4882a593Smuzhiyun Described RCU, and presented some patches implementing and using 649*4882a593Smuzhiyun it in the Linux kernel. 650*4882a593Smuzhiyun} 651*4882a593Smuzhiyun} 652*4882a593Smuzhiyun 653*4882a593Smuzhiyun@unpublished{McKenney01f 654*4882a593Smuzhiyun,Author="Paul E. McKenney" 655*4882a593Smuzhiyun,Title="{RFC:} patch to allow lock-free traversal of lists with insertion" 656*4882a593Smuzhiyun,month="October" 657*4882a593Smuzhiyun,year="2001" 658*4882a593Smuzhiyun,note="Available: 659*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2} 660*4882a593Smuzhiyun[Viewed June 23, 2004]" 661*4882a593Smuzhiyun,annotation={ 662*4882a593Smuzhiyun Memory-barrier and Alpha thread. 100 messages, not too bad... 663*4882a593Smuzhiyun} 664*4882a593Smuzhiyun} 665*4882a593Smuzhiyun 666*4882a593Smuzhiyun@unpublished{Spraul01 667*4882a593Smuzhiyun,Author="Manfred Spraul" 668*4882a593Smuzhiyun,Title="Re: {RFC:} patch to allow lock-free traversal of lists with insertion" 669*4882a593Smuzhiyun,month="October" 670*4882a593Smuzhiyun,year="2001" 671*4882a593Smuzhiyun,note="Available: 672*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2} 673*4882a593Smuzhiyun[Viewed June 23, 2004]" 674*4882a593Smuzhiyun,annotation={ 675*4882a593Smuzhiyun Suggested burying memory barriers in Linux's list-manipulation 676*4882a593Smuzhiyun primitives. 677*4882a593Smuzhiyun} 678*4882a593Smuzhiyun} 679*4882a593Smuzhiyun 680*4882a593Smuzhiyun@unpublished{LinusTorvalds2001a 681*4882a593Smuzhiyun,Author="Linus Torvalds" 682*4882a593Smuzhiyun,Title="{Re:} {[Lse-tech]} {Re:} {RFC:} patch to allow lock-free traversal of lists with insertion" 683*4882a593Smuzhiyun,month="October" 684*4882a593Smuzhiyun,year="2001" 685*4882a593Smuzhiyun,note="Available: 686*4882a593Smuzhiyun\url{http://lkml.org/lkml/2001/10/13/105} 687*4882a593Smuzhiyun[Viewed August 21, 2004]" 688*4882a593Smuzhiyun,annotation={ 689*4882a593Smuzhiyun} 690*4882a593Smuzhiyun} 691*4882a593Smuzhiyun 692*4882a593Smuzhiyun@unpublished{Blanchard02a 693*4882a593Smuzhiyun,Author="Anton Blanchard" 694*4882a593Smuzhiyun,Title="some RCU dcache and ratcache results" 695*4882a593Smuzhiyun,month="March" 696*4882a593Smuzhiyun,year="2002" 697*4882a593Smuzhiyun,note="Available: 698*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=101637107412972&w=2} 699*4882a593Smuzhiyun[Viewed October 18, 2004]" 700*4882a593Smuzhiyun} 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun@conference{Michael02b 703*4882a593Smuzhiyun,author="Maged M. Michael" 704*4882a593Smuzhiyun,title="High Performance Dynamic Lock-Free Hash Tables and List-Based Sets" 705*4882a593Smuzhiyun,Year="2002" 706*4882a593Smuzhiyun,Month="August" 707*4882a593Smuzhiyun,booktitle="{Proceedings of the 14\textsuperscript{th} Annual ACM 708*4882a593SmuzhiyunSymposium on Parallel 709*4882a593SmuzhiyunAlgorithms and Architecture}" 710*4882a593Smuzhiyun,pages="73-82" 711*4882a593Smuzhiyun,annotation={ 712*4882a593SmuzhiyunLike the title says... 713*4882a593Smuzhiyun} 714*4882a593Smuzhiyun} 715*4882a593Smuzhiyun 716*4882a593Smuzhiyun@Conference{Linder02a 717*4882a593Smuzhiyun,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni" 718*4882a593Smuzhiyun,Title="Scalability of the Directory Entry Cache" 719*4882a593Smuzhiyun,Booktitle="{Ottawa Linux Symposium}" 720*4882a593Smuzhiyun,Month="June" 721*4882a593Smuzhiyun,Year="2002" 722*4882a593Smuzhiyun,pages="289-300" 723*4882a593Smuzhiyun,annotation={ 724*4882a593Smuzhiyun Measured scalability of Linux 2.4 kernel's directory-entry cache 725*4882a593Smuzhiyun (dcache), and measured some scalability enhancements. 726*4882a593Smuzhiyun} 727*4882a593Smuzhiyun} 728*4882a593Smuzhiyun 729*4882a593Smuzhiyun@Conference{McKenney02a 730*4882a593Smuzhiyun,Author="Paul E. McKenney and Dipankar Sarma and 731*4882a593SmuzhiyunAndrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" 732*4882a593Smuzhiyun,Title="Read-Copy Update" 733*4882a593Smuzhiyun,Booktitle="{Ottawa Linux Symposium}" 734*4882a593Smuzhiyun,Month="June" 735*4882a593Smuzhiyun,Year="2002" 736*4882a593Smuzhiyun,pages="338-367" 737*4882a593Smuzhiyun,note="Available: 738*4882a593Smuzhiyun\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz} 739*4882a593Smuzhiyun[Viewed June 23, 2004]" 740*4882a593Smuzhiyun,annotation={ 741*4882a593Smuzhiyun Presented and compared a number of RCU implementations for the 742*4882a593Smuzhiyun Linux kernel. 743*4882a593Smuzhiyun} 744*4882a593Smuzhiyun} 745*4882a593Smuzhiyun 746*4882a593Smuzhiyun@unpublished{Sarma02a 747*4882a593Smuzhiyun,Author="Dipankar Sarma" 748*4882a593Smuzhiyun,Title="specweb99: dcache scalability results" 749*4882a593Smuzhiyun,month="July" 750*4882a593Smuzhiyun,year="2002" 751*4882a593Smuzhiyun,note="Available: 752*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2} 753*4882a593Smuzhiyun[Viewed June 23, 2004]" 754*4882a593Smuzhiyun,annotation={ 755*4882a593Smuzhiyun Compare fastwalk and RCU for dcache. RCU won. 756*4882a593Smuzhiyun} 757*4882a593Smuzhiyun} 758*4882a593Smuzhiyun 759*4882a593Smuzhiyun@unpublished{Barbieri02 760*4882a593Smuzhiyun,Author="Luca Barbieri" 761*4882a593Smuzhiyun,Title="Re: {[PATCH]} Initial support for struct {vfs\_cred}" 762*4882a593Smuzhiyun,month="August" 763*4882a593Smuzhiyun,year="2002" 764*4882a593Smuzhiyun,note="Available: 765*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2} 766*4882a593Smuzhiyun[Viewed: June 23, 2004]" 767*4882a593Smuzhiyun,annotation={ 768*4882a593Smuzhiyun Suggested RCU for vfs\_shared\_cred. 769*4882a593Smuzhiyun} 770*4882a593Smuzhiyun} 771*4882a593Smuzhiyun 772*4882a593Smuzhiyun@conference{Michael02a 773*4882a593Smuzhiyun,author="Maged M. Michael" 774*4882a593Smuzhiyun,title="Safe Memory Reclamation for Dynamic Lock-Free Objects Using Atomic 775*4882a593SmuzhiyunReads and Writes" 776*4882a593Smuzhiyun,Year="2002" 777*4882a593Smuzhiyun,Month="August" 778*4882a593Smuzhiyun,booktitle="{Proceedings of the 21\textsuperscript{st} Annual ACM 779*4882a593SmuzhiyunSymposium on Principles of Distributed Computing}" 780*4882a593Smuzhiyun,pages="21-30" 781*4882a593Smuzhiyun,annotation={ 782*4882a593Smuzhiyun Each thread keeps an array of pointers to items that it is 783*4882a593Smuzhiyun currently referencing. Sort of an inside-out garbage collection 784*4882a593Smuzhiyun mechanism, but one that requires the accessing code to explicitly 785*4882a593Smuzhiyun state its needs. Also requires read-side memory barriers on 786*4882a593Smuzhiyun most architectures. 787*4882a593Smuzhiyun} 788*4882a593Smuzhiyun} 789*4882a593Smuzhiyun 790*4882a593Smuzhiyun@unpublished{Dickins02a 791*4882a593Smuzhiyun,author="Hugh Dickins" 792*4882a593Smuzhiyun,title="Use RCU for System-V IPC" 793*4882a593Smuzhiyun,year="2002" 794*4882a593Smuzhiyun,month="October" 795*4882a593Smuzhiyun,note="private communication" 796*4882a593Smuzhiyun} 797*4882a593Smuzhiyun 798*4882a593Smuzhiyun@InProceedings{HerlihyLM02 799*4882a593Smuzhiyun,author={Maurice Herlihy and Victor Luchangco and Mark Moir} 800*4882a593Smuzhiyun,title="The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, 801*4882a593SmuzhiyunLock-Free Data Structures" 802*4882a593Smuzhiyun,booktitle={Proceedings of 16\textsuperscript{th} International 803*4882a593SmuzhiyunSymposium on Distributed Computing} 804*4882a593Smuzhiyun,year=2002 805*4882a593Smuzhiyun,month="October" 806*4882a593Smuzhiyun,pages="339-353" 807*4882a593Smuzhiyun} 808*4882a593Smuzhiyun 809*4882a593Smuzhiyun@unpublished{Sarma02b 810*4882a593Smuzhiyun,Author="Dipankar Sarma" 811*4882a593Smuzhiyun,Title="Some dcache\_rcu benchmark numbers" 812*4882a593Smuzhiyun,month="October" 813*4882a593Smuzhiyun,year="2002" 814*4882a593Smuzhiyun,note="Available: 815*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2} 816*4882a593Smuzhiyun[Viewed June 23, 2004]" 817*4882a593Smuzhiyun,annotation={ 818*4882a593Smuzhiyun Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x, 819*4882a593Smuzhiyun 2x, and 4x systems. RCU does no harm, and helps on 16x. 820*4882a593Smuzhiyun} 821*4882a593Smuzhiyun} 822*4882a593Smuzhiyun 823*4882a593Smuzhiyun@unpublished{MingmingCao2002IPCRCU 824*4882a593Smuzhiyun,Author="Mingming Cao" 825*4882a593Smuzhiyun,Title="[PATCH]updated ipc lock patch" 826*4882a593Smuzhiyun,month="October" 827*4882a593Smuzhiyun,year="2002" 828*4882a593Smuzhiyun,note="Available: 829*4882a593Smuzhiyun\url{https://lkml.org/lkml/2002/10/24/262} 830*4882a593Smuzhiyun[Viewed February 15, 2014]" 831*4882a593Smuzhiyun,annotation={ 832*4882a593Smuzhiyun Mingming Cao's patch to introduce RCU to SysV IPC. 833*4882a593Smuzhiyun} 834*4882a593Smuzhiyun} 835*4882a593Smuzhiyun 836*4882a593Smuzhiyun@unpublished{LinusTorvalds2003a 837*4882a593Smuzhiyun,Author="Linus Torvalds" 838*4882a593Smuzhiyun,Title="Re: {[PATCH]} small fixes in brlock.h" 839*4882a593Smuzhiyun,month="March" 840*4882a593Smuzhiyun,year="2003" 841*4882a593Smuzhiyun,note="Available: 842*4882a593Smuzhiyun\url{http://lkml.org/lkml/2003/3/9/205} 843*4882a593Smuzhiyun[Viewed March 13, 2006]" 844*4882a593Smuzhiyun,annotation={ 845*4882a593Smuzhiyun Linus suggests replacing brlock with RCU and/or seqlocks: 846*4882a593Smuzhiyun . 847*4882a593Smuzhiyun 'It's entirely possible that the current user could be replaced 848*4882a593Smuzhiyun by RCU and/or seqlocks, and we could get rid of brlocks entirely.' 849*4882a593Smuzhiyun . 850*4882a593Smuzhiyun Steve Hemminger responds by replacing them with RCU. 851*4882a593Smuzhiyun} 852*4882a593Smuzhiyun} 853*4882a593Smuzhiyun 854*4882a593Smuzhiyun@article{Appavoo03a 855*4882a593Smuzhiyun,author="J. Appavoo and K. Hui and C. A. N. Soules and R. W. Wisniewski and 856*4882a593SmuzhiyunD. M. {Da Silva} and O. Krieger and M. A. Auslander and D. J. Edelsohn and 857*4882a593SmuzhiyunB. Gamsa and G. R. Ganger and P. McKenney and M. Ostrowski and 858*4882a593SmuzhiyunB. Rosenburg and M. Stumm and J. Xenidis" 859*4882a593Smuzhiyun,title="Enabling Autonomic Behavior in Systems Software With Hot Swapping" 860*4882a593Smuzhiyun,Year="2003" 861*4882a593Smuzhiyun,Month="January" 862*4882a593Smuzhiyun,journal="IBM Systems Journal" 863*4882a593Smuzhiyun,volume="42" 864*4882a593Smuzhiyun,number="1" 865*4882a593Smuzhiyun,pages="60-76" 866*4882a593Smuzhiyun,annotation={ 867*4882a593Smuzhiyun Use of RCU to enable hot-swapping for autonomic behavior in K42. 868*4882a593Smuzhiyun} 869*4882a593Smuzhiyun} 870*4882a593Smuzhiyun 871*4882a593Smuzhiyun@unpublished{Seigh03 872*4882a593Smuzhiyun,author="Joseph W. {Seigh II}" 873*4882a593Smuzhiyun,title="Read Copy Update" 874*4882a593Smuzhiyun,Year="2003" 875*4882a593Smuzhiyun,Month="March" 876*4882a593Smuzhiyun,note="email correspondence" 877*4882a593Smuzhiyun,annotation={ 878*4882a593Smuzhiyun Described the relationship of the VM/XA passive serialization to RCU. 879*4882a593Smuzhiyun} 880*4882a593Smuzhiyun} 881*4882a593Smuzhiyun 882*4882a593Smuzhiyun@Conference{Arcangeli03 883*4882a593Smuzhiyun,Author="Andrea Arcangeli and Mingming Cao and Paul E. McKenney and 884*4882a593SmuzhiyunDipankar Sarma" 885*4882a593Smuzhiyun,Title="Using Read-Copy Update Techniques for {System V IPC} in the 886*4882a593Smuzhiyun{Linux} 2.5 Kernel" 887*4882a593Smuzhiyun,Booktitle="Proceedings of the 2003 USENIX Annual Technical Conference 888*4882a593Smuzhiyun(FREENIX Track)" 889*4882a593Smuzhiyun,Publisher="USENIX Association" 890*4882a593Smuzhiyun,year="2003" 891*4882a593Smuzhiyun,month="June" 892*4882a593Smuzhiyun,pages="297-310" 893*4882a593Smuzhiyun,annotation={ 894*4882a593Smuzhiyun Compared updated RCU implementations for the Linux kernel, and 895*4882a593Smuzhiyun described System V IPC use of RCU, including order-of-magnitude 896*4882a593Smuzhiyun performance improvements. 897*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf 898*4882a593Smuzhiyun} 899*4882a593Smuzhiyun} 900*4882a593Smuzhiyun 901*4882a593Smuzhiyun@Conference{Soules03a 902*4882a593Smuzhiyun,Author="Craig A. N. Soules and Jonathan Appavoo and Kevin Hui and 903*4882a593SmuzhiyunDilma {Da Silva} and Gregory R. Ganger and Orran Krieger and 904*4882a593SmuzhiyunMichael Stumm and Robert W. Wisniewski and Marc Auslander and 905*4882a593SmuzhiyunMichal Ostrowski and Bryan Rosenburg and Jimi Xenidis" 906*4882a593Smuzhiyun,Title="System Support for Online Reconfiguration" 907*4882a593Smuzhiyun,Booktitle="Proceedings of the 2003 USENIX Annual Technical Conference" 908*4882a593Smuzhiyun,Publisher="USENIX Association" 909*4882a593Smuzhiyun,year="2003" 910*4882a593Smuzhiyun,month="June" 911*4882a593Smuzhiyun,pages="141-154" 912*4882a593Smuzhiyun} 913*4882a593Smuzhiyun 914*4882a593Smuzhiyun@article{McKenney03a 915*4882a593Smuzhiyun,author="Paul E. McKenney" 916*4882a593Smuzhiyun,title="Using {RCU} in the {Linux} 2.5 Kernel" 917*4882a593Smuzhiyun,Year="2003" 918*4882a593Smuzhiyun,Month="October" 919*4882a593Smuzhiyun,journal="Linux Journal" 920*4882a593Smuzhiyun,volume="1" 921*4882a593Smuzhiyun,number="114" 922*4882a593Smuzhiyun,pages="18-26" 923*4882a593Smuzhiyun,note="Available: 924*4882a593Smuzhiyun\url{http://www.linuxjournal.com/article/6993} 925*4882a593Smuzhiyun[Viewed November 14, 2007]" 926*4882a593Smuzhiyun,annotation={ 927*4882a593Smuzhiyun Reader-friendly intro to RCU, with the infamous old-man-and-brat 928*4882a593Smuzhiyun cartoon. 929*4882a593Smuzhiyun} 930*4882a593Smuzhiyun} 931*4882a593Smuzhiyun 932*4882a593Smuzhiyun@unpublished{Sarma03a 933*4882a593Smuzhiyun,Author="Dipankar Sarma" 934*4882a593Smuzhiyun,Title="RCU low latency patches" 935*4882a593Smuzhiyun,month="December" 936*4882a593Smuzhiyun,year="2003" 937*4882a593Smuzhiyun,note="Message ID: 20031222180114.GA2248@in.ibm.com" 938*4882a593Smuzhiyun,annotation={ 939*4882a593Smuzhiyun dipankar/ct.2004.03.27/RCUll.2003.12.22.patch 940*4882a593Smuzhiyun} 941*4882a593Smuzhiyun} 942*4882a593Smuzhiyun 943*4882a593Smuzhiyun@techreport{Friedberg03a 944*4882a593Smuzhiyun,author="Stuart A. Friedberg" 945*4882a593Smuzhiyun,title="Lock-Free Wild Card Search Data Structure and Method" 946*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 947*4882a593Smuzhiyun,address="Washington, DC" 948*4882a593Smuzhiyun,year="2003" 949*4882a593Smuzhiyun,number="US Patent 6,662,184" 950*4882a593Smuzhiyun,month="December" 951*4882a593Smuzhiyun,pages="112" 952*4882a593Smuzhiyun,annotation={ 953*4882a593Smuzhiyun Applies RCU to a wildcard-search Patricia tree in order to permit 954*4882a593Smuzhiyun synchronization-free lookup. RCU is used to retain removed nodes 955*4882a593Smuzhiyun for a grace period before freeing them. 956*4882a593Smuzhiyun} 957*4882a593Smuzhiyun} 958*4882a593Smuzhiyun 959*4882a593Smuzhiyun@article{McKenney04a 960*4882a593Smuzhiyun,author="Paul E. McKenney and Dipankar Sarma and Maneesh Soni" 961*4882a593Smuzhiyun,title="Scaling dcache with {RCU}" 962*4882a593Smuzhiyun,Year="2004" 963*4882a593Smuzhiyun,Month="January" 964*4882a593Smuzhiyun,journal="Linux Journal" 965*4882a593Smuzhiyun,volume="1" 966*4882a593Smuzhiyun,number="118" 967*4882a593Smuzhiyun,pages="38-46" 968*4882a593Smuzhiyun,annotation={ 969*4882a593Smuzhiyun Reader friendly intro to dcache and RCU. 970*4882a593Smuzhiyun http://www.linuxjournal.com/node/7124 971*4882a593Smuzhiyun [Viewed December 26, 2010] 972*4882a593Smuzhiyun} 973*4882a593Smuzhiyun} 974*4882a593Smuzhiyun 975*4882a593Smuzhiyun@Conference{McKenney04b 976*4882a593Smuzhiyun,Author="Paul E. McKenney" 977*4882a593Smuzhiyun,Title="{RCU} vs. Locking Performance on Different {CPUs}" 978*4882a593Smuzhiyun,Booktitle="{linux.conf.au}" 979*4882a593Smuzhiyun,Month="January" 980*4882a593Smuzhiyun,Year="2004" 981*4882a593Smuzhiyun,Address="Adelaide, Australia" 982*4882a593Smuzhiyun,note="Available: 983*4882a593Smuzhiyun\url{http://www.linux.org.au/conf/2004/abstracts.html#90} 984*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf} 985*4882a593Smuzhiyun[Viewed June 23, 2004]" 986*4882a593Smuzhiyun,annotation={ 987*4882a593Smuzhiyun Compares performance of RCU to that of other locking primitives 988*4882a593Smuzhiyun over a number of CPUs (x86, Opteron, Itanium, and PPC). 989*4882a593Smuzhiyun} 990*4882a593Smuzhiyun} 991*4882a593Smuzhiyun 992*4882a593Smuzhiyun@unpublished{Sarma04a 993*4882a593Smuzhiyun,Author="Dipankar Sarma" 994*4882a593Smuzhiyun,Title="{[PATCH]} {RCU} for low latency (experimental)" 995*4882a593Smuzhiyun,month="March" 996*4882a593Smuzhiyun,year="2004" 997*4882a593Smuzhiyun,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}" 998*4882a593Smuzhiyun,annotation={ 999*4882a593Smuzhiyun Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch 1000*4882a593Smuzhiyun} 1001*4882a593Smuzhiyun} 1002*4882a593Smuzhiyun 1003*4882a593Smuzhiyun@unpublished{Sarma04b 1004*4882a593Smuzhiyun,Author="Dipankar Sarma" 1005*4882a593Smuzhiyun,Title="Re: {[PATCH]} {RCU} for low latency (experimental)" 1006*4882a593Smuzhiyun,month="March" 1007*4882a593Smuzhiyun,year="2004" 1008*4882a593Smuzhiyun,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}" 1009*4882a593Smuzhiyun,annotation={ 1010*4882a593Smuzhiyun dipankar/rcuth.2004.03.24/rcu-throttle.patch 1011*4882a593Smuzhiyun} 1012*4882a593Smuzhiyun} 1013*4882a593Smuzhiyun 1014*4882a593Smuzhiyun@unpublished{Spraul04a 1015*4882a593Smuzhiyun,Author="Manfred Spraul" 1016*4882a593Smuzhiyun,Title="[RFC] 0/5 rcu lock update" 1017*4882a593Smuzhiyun,month="May" 1018*4882a593Smuzhiyun,year="2004" 1019*4882a593Smuzhiyun,note="Available: 1020*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2} 1021*4882a593Smuzhiyun[Viewed June 23, 2004]" 1022*4882a593Smuzhiyun,annotation={ 1023*4882a593Smuzhiyun Hierarchical-bitmap patch for RCU infrastructure. 1024*4882a593Smuzhiyun} 1025*4882a593Smuzhiyun} 1026*4882a593Smuzhiyun 1027*4882a593Smuzhiyun@unpublished{Steiner04a 1028*4882a593Smuzhiyun,Author="Jack Steiner" 1029*4882a593Smuzhiyun,Title="Re: [Lse-tech] [RFC, PATCH] 1/5 rcu lock update: 1030*4882a593SmuzhiyunAdd per-cpu batch counter" 1031*4882a593Smuzhiyun,month="May" 1032*4882a593Smuzhiyun,year="2004" 1033*4882a593Smuzhiyun,note="Available: 1034*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108551764515332&w=2} 1035*4882a593Smuzhiyun[Viewed June 23, 2004]" 1036*4882a593Smuzhiyun,annotation={ 1037*4882a593Smuzhiyun RCU runs reasonably on a 512-CPU SGI using Manfred Spraul's patches, 1038*4882a593Smuzhiyun which may be found at: 1039*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/20/49 (split vars into cachelines) 1040*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/22/114 (cpu_quiet() patch) 1041*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/24 (0/5) 1042*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/23 (1/5) 1043*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/265 (works for Jack) 1044*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/20 (2/5) 1045*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/22 (3/5) 1046*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/19 (4/5) 1047*4882a593Smuzhiyun https://lkml.org/lkml/2004/5/25/21 (5/5) 1048*4882a593Smuzhiyun} 1049*4882a593Smuzhiyun} 1050*4882a593Smuzhiyun 1051*4882a593Smuzhiyun@Conference{Sarma04c 1052*4882a593Smuzhiyun,Author="Dipankar Sarma and Paul E. McKenney" 1053*4882a593Smuzhiyun,Title="Making {RCU} Safe for Deep Sub-Millisecond Response 1054*4882a593SmuzhiyunRealtime Applications" 1055*4882a593Smuzhiyun,Booktitle="Proceedings of the 2004 USENIX Annual Technical Conference 1056*4882a593Smuzhiyun(FREENIX Track)" 1057*4882a593Smuzhiyun,Publisher="USENIX Association" 1058*4882a593Smuzhiyun,year="2004" 1059*4882a593Smuzhiyun,month="June" 1060*4882a593Smuzhiyun,pages="182-191" 1061*4882a593Smuzhiyun,annotation={ 1062*4882a593Smuzhiyun Describes and compares a number of modifications to the Linux RCU 1063*4882a593Smuzhiyun implementation that make it friendly to realtime applications. 1064*4882a593Smuzhiyun https://www.usenix.org/conference/2004-usenix-annual-technical-conference/making-rcu-safe-deep-sub-millisecond-response 1065*4882a593Smuzhiyun [Viewed July 26, 2012] 1066*4882a593Smuzhiyun} 1067*4882a593Smuzhiyun} 1068*4882a593Smuzhiyun 1069*4882a593Smuzhiyun@article{MagedMichael04a 1070*4882a593Smuzhiyun,author="Maged M. Michael" 1071*4882a593Smuzhiyun,title="Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects" 1072*4882a593Smuzhiyun,Year="2004" 1073*4882a593Smuzhiyun,Month="June" 1074*4882a593Smuzhiyun,journal="IEEE Transactions on Parallel and Distributed Systems" 1075*4882a593Smuzhiyun,volume="15" 1076*4882a593Smuzhiyun,number="6" 1077*4882a593Smuzhiyun,pages="491-504" 1078*4882a593Smuzhiyun,url="Available: 1079*4882a593Smuzhiyun\url{http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf} 1080*4882a593Smuzhiyun[Viewed March 1, 2005]" 1081*4882a593Smuzhiyun,annotation={ 1082*4882a593Smuzhiyun New canonical hazard-pointer citation. 1083*4882a593Smuzhiyun} 1084*4882a593Smuzhiyun} 1085*4882a593Smuzhiyun 1086*4882a593Smuzhiyun@phdthesis{PaulEdwardMcKenneyPhD 1087*4882a593Smuzhiyun,author="Paul E. McKenney" 1088*4882a593Smuzhiyun,title="Exploiting Deferred Destruction: 1089*4882a593SmuzhiyunAn Analysis of Read-Copy-Update Techniques 1090*4882a593Smuzhiyunin Operating System Kernels" 1091*4882a593Smuzhiyun,school="OGI School of Science and Engineering at 1092*4882a593SmuzhiyunOregon Health and Sciences University" 1093*4882a593Smuzhiyun,year="2004" 1094*4882a593Smuzhiyun,annotation={ 1095*4882a593Smuzhiyun Describes RCU implementations and presents design patterns 1096*4882a593Smuzhiyun corresponding to common uses of RCU in several operating-system 1097*4882a593Smuzhiyun kernels. 1098*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf 1099*4882a593Smuzhiyun [Viewed October 15, 2004] 1100*4882a593Smuzhiyun} 1101*4882a593Smuzhiyun} 1102*4882a593Smuzhiyun 1103*4882a593Smuzhiyun@unpublished{PaulEMcKenney2004rcu:dereference 1104*4882a593Smuzhiyun,Author="Dipankar Sarma" 1105*4882a593Smuzhiyun,Title="{Re: RCU : Abstracted RCU dereferencing [5/5]}" 1106*4882a593Smuzhiyun,month="August" 1107*4882a593Smuzhiyun,year="2004" 1108*4882a593Smuzhiyun,note="Available: 1109*4882a593Smuzhiyun\url{http://lkml.org/lkml/2004/8/6/237} 1110*4882a593Smuzhiyun[Viewed June 8, 2010]" 1111*4882a593Smuzhiyun,annotation={ 1112*4882a593Smuzhiyun Introduce rcu_dereference(). 1113*4882a593Smuzhiyun} 1114*4882a593Smuzhiyun} 1115*4882a593Smuzhiyun 1116*4882a593Smuzhiyun@unpublished{JimHouston04a 1117*4882a593Smuzhiyun,Author="Jim Houston" 1118*4882a593Smuzhiyun,Title="{[RFC\&PATCH] Alternative {RCU} implementation}" 1119*4882a593Smuzhiyun,month="August" 1120*4882a593Smuzhiyun,year="2004" 1121*4882a593Smuzhiyun,note="Available: 1122*4882a593Smuzhiyun\url{http://lkml.org/lkml/2004/8/30/87} 1123*4882a593Smuzhiyun[Viewed February 17, 2005]" 1124*4882a593Smuzhiyun,annotation={ 1125*4882a593Smuzhiyun Uses active code in rcu_read_lock() and rcu_read_unlock() to 1126*4882a593Smuzhiyun make RCU happen, allowing RCU to function on CPUs that do not 1127*4882a593Smuzhiyun receive a scheduling-clock interrupt. 1128*4882a593Smuzhiyun} 1129*4882a593Smuzhiyun} 1130*4882a593Smuzhiyun 1131*4882a593Smuzhiyun@unpublished{TomHart04a 1132*4882a593Smuzhiyun,Author="Thomas E. Hart" 1133*4882a593Smuzhiyun,Title="Master's Thesis: Applying Lock-free Techniques to the {Linux} Kernel" 1134*4882a593Smuzhiyun,month="October" 1135*4882a593Smuzhiyun,year="2004" 1136*4882a593Smuzhiyun,note="Available: 1137*4882a593Smuzhiyun\url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html} 1138*4882a593Smuzhiyun[Viewed October 15, 2004]" 1139*4882a593Smuzhiyun,annotation={ 1140*4882a593Smuzhiyun Proposes comparing RCU to lock-free methods for the Linux kernel. 1141*4882a593Smuzhiyun} 1142*4882a593Smuzhiyun} 1143*4882a593Smuzhiyun 1144*4882a593Smuzhiyun@unpublished{Vaddagiri04a 1145*4882a593Smuzhiyun,Author="Srivatsa Vaddagiri" 1146*4882a593Smuzhiyun,Title="Subject: [RFC] Use RCU for tcp\_ehash lookup" 1147*4882a593Smuzhiyun,month="October" 1148*4882a593Smuzhiyun,year="2004" 1149*4882a593Smuzhiyun,note="Available: 1150*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2} 1151*4882a593Smuzhiyun[Viewed October 18, 2004]" 1152*4882a593Smuzhiyun,annotation={ 1153*4882a593Smuzhiyun Srivatsa's RCU patch for tcp_ehash lookup. 1154*4882a593Smuzhiyun} 1155*4882a593Smuzhiyun} 1156*4882a593Smuzhiyun 1157*4882a593Smuzhiyun@unpublished{Thirumalai04a 1158*4882a593Smuzhiyun,Author="Ravikiran Thirumalai" 1159*4882a593Smuzhiyun,Title="Subject: [patchset] Lockfree fd lookup 0 of 5" 1160*4882a593Smuzhiyun,month="October" 1161*4882a593Smuzhiyun,year="2004" 1162*4882a593Smuzhiyun,note="Available: 1163*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2} 1164*4882a593Smuzhiyun[Viewed October 18, 2004]" 1165*4882a593Smuzhiyun,annotation={ 1166*4882a593Smuzhiyun Ravikiran's lockfree FD patch. 1167*4882a593Smuzhiyun} 1168*4882a593Smuzhiyun} 1169*4882a593Smuzhiyun 1170*4882a593Smuzhiyun@unpublished{Thirumalai04b 1171*4882a593Smuzhiyun,Author="Ravikiran Thirumalai" 1172*4882a593Smuzhiyun,Title="Subject: Re: [patchset] Lockfree fd lookup 0 of 5" 1173*4882a593Smuzhiyun,month="October" 1174*4882a593Smuzhiyun,year="2004" 1175*4882a593Smuzhiyun,note="Available: 1176*4882a593Smuzhiyun\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2} 1177*4882a593Smuzhiyun[Viewed October 18, 2004]" 1178*4882a593Smuzhiyun,annotation={ 1179*4882a593Smuzhiyun Ravikiran's lockfree FD patch. 1180*4882a593Smuzhiyun} 1181*4882a593Smuzhiyun} 1182*4882a593Smuzhiyun 1183*4882a593Smuzhiyun@unpublished{PaulEMcKenney2004rcu:assign:pointer 1184*4882a593Smuzhiyun,Author="Paul E. McKenney" 1185*4882a593Smuzhiyun,Title="{[PATCH 1/3] RCU: \url{rcu_assign_pointer()} removal of memory barriers}" 1186*4882a593Smuzhiyun,month="October" 1187*4882a593Smuzhiyun,year="2004" 1188*4882a593Smuzhiyun,note="Available: 1189*4882a593Smuzhiyun\url{http://lkml.org/lkml/2004/10/23/241} 1190*4882a593Smuzhiyun[Viewed June 8, 2010]" 1191*4882a593Smuzhiyun,annotation={ 1192*4882a593Smuzhiyun Introduce rcu_assign_pointer(). 1193*4882a593Smuzhiyun} 1194*4882a593Smuzhiyun} 1195*4882a593Smuzhiyun 1196*4882a593Smuzhiyun@unpublished{JamesMorris04a 1197*4882a593Smuzhiyun,Author="James Morris" 1198*4882a593Smuzhiyun,Title="{[PATCH 2/3] SELinux} scalability - convert {AVC} to {RCU}" 1199*4882a593Smuzhiyun,day="15" 1200*4882a593Smuzhiyun,month="November" 1201*4882a593Smuzhiyun,year="2004" 1202*4882a593Smuzhiyun,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2}" 1203*4882a593Smuzhiyun,annotation={ 1204*4882a593Smuzhiyun James Morris posts Kaigai Kohei's patch to LKML. 1205*4882a593Smuzhiyun [Viewed December 10, 2004] 1206*4882a593Smuzhiyun Kaigai's patch is at https://lkml.org/lkml/2004/9/27/52 1207*4882a593Smuzhiyun} 1208*4882a593Smuzhiyun} 1209*4882a593Smuzhiyun 1210*4882a593Smuzhiyun@unpublished{JamesMorris04b 1211*4882a593Smuzhiyun,Author="James Morris" 1212*4882a593Smuzhiyun,Title="Recent Developments in {SELinux} Kernel Performance" 1213*4882a593Smuzhiyun,month="December" 1214*4882a593Smuzhiyun,year="2004" 1215*4882a593Smuzhiyun,note="Available: 1216*4882a593Smuzhiyun\url{http://www.livejournal.com/users/james_morris/2153.html} 1217*4882a593Smuzhiyun[Viewed December 10, 2004]" 1218*4882a593Smuzhiyun,annotation={ 1219*4882a593Smuzhiyun RCU helps SELinux performance. ;-) Made LWN. 1220*4882a593Smuzhiyun} 1221*4882a593Smuzhiyun} 1222*4882a593Smuzhiyun 1223*4882a593Smuzhiyun@unpublished{PaulMcKenney2005RCUSemantics 1224*4882a593Smuzhiyun,Author="Paul E. McKenney and Jonathan Walpole" 1225*4882a593Smuzhiyun,Title="{RCU} Semantics: A First Attempt" 1226*4882a593Smuzhiyun,month="January" 1227*4882a593Smuzhiyun,year="2005" 1228*4882a593Smuzhiyun,day="30" 1229*4882a593Smuzhiyun,note="Available: 1230*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf} 1231*4882a593Smuzhiyun[Viewed December 6, 2009]" 1232*4882a593Smuzhiyun,annotation={ 1233*4882a593Smuzhiyun Early derivation of RCU semantics. 1234*4882a593Smuzhiyun} 1235*4882a593Smuzhiyun} 1236*4882a593Smuzhiyun 1237*4882a593Smuzhiyun@unpublished{PaulMcKenney2005e 1238*4882a593Smuzhiyun,Author="Paul E. McKenney" 1239*4882a593Smuzhiyun,Title="Real-Time Preemption and {RCU}" 1240*4882a593Smuzhiyun,month="March" 1241*4882a593Smuzhiyun,year="2005" 1242*4882a593Smuzhiyun,day="17" 1243*4882a593Smuzhiyun,note="Available: 1244*4882a593Smuzhiyun\url{http://lkml.org/lkml/2005/3/17/199} 1245*4882a593Smuzhiyun[Viewed September 5, 2005]" 1246*4882a593Smuzhiyun,annotation={ 1247*4882a593Smuzhiyun First posting showing how RCU can be safely adapted for 1248*4882a593Smuzhiyun preemptable RCU read side critical sections. 1249*4882a593Smuzhiyun} 1250*4882a593Smuzhiyun} 1251*4882a593Smuzhiyun 1252*4882a593Smuzhiyun@unpublished{EsbenNeilsen2005a 1253*4882a593Smuzhiyun,Author="Esben Neilsen" 1254*4882a593Smuzhiyun,Title="Re: Real-Time Preemption and {RCU}" 1255*4882a593Smuzhiyun,month="March" 1256*4882a593Smuzhiyun,year="2005" 1257*4882a593Smuzhiyun,day="18" 1258*4882a593Smuzhiyun,note="Available: 1259*4882a593Smuzhiyun\url{http://lkml.org/lkml/2005/3/18/122} 1260*4882a593Smuzhiyun[Viewed March 30, 2006]" 1261*4882a593Smuzhiyun,annotation={ 1262*4882a593Smuzhiyun Esben Neilsen suggests read-side suppression of grace-period 1263*4882a593Smuzhiyun processing for crude-but-workable realtime RCU. The downside 1264*4882a593Smuzhiyun is indefinite grace periods... But this is OK for experimentation 1265*4882a593Smuzhiyun and testing. 1266*4882a593Smuzhiyun} 1267*4882a593Smuzhiyun} 1268*4882a593Smuzhiyun 1269*4882a593Smuzhiyun@unpublished{TomHart05a 1270*4882a593Smuzhiyun,Author="Thomas E. Hart and Paul E. McKenney and Angela Demke Brown" 1271*4882a593Smuzhiyun,Title="Efficient Memory Reclamation is Necessary for Fast Lock-Free 1272*4882a593SmuzhiyunData Structures" 1273*4882a593Smuzhiyun,month="March" 1274*4882a593Smuzhiyun,year="2005" 1275*4882a593Smuzhiyun,note="Available: 1276*4882a593Smuzhiyun\url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/} 1277*4882a593Smuzhiyun[Viewed March 4, 2005]" 1278*4882a593Smuzhiyun,annotation={ 1279*4882a593Smuzhiyun Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly 1280*4882a593Smuzhiyun workloads. ;-) 1281*4882a593Smuzhiyun} 1282*4882a593Smuzhiyun} 1283*4882a593Smuzhiyun 1284*4882a593Smuzhiyun@unpublished{JonCorbet2005DeprecateSyncKernel 1285*4882a593Smuzhiyun,Author="Jonathan Corbet" 1286*4882a593Smuzhiyun,Title="API change: synchronize_kernel() deprecated" 1287*4882a593Smuzhiyun,month="May" 1288*4882a593Smuzhiyun,day="3" 1289*4882a593Smuzhiyun,year="2005" 1290*4882a593Smuzhiyun,note="Available: 1291*4882a593Smuzhiyun\url{http://lwn.net/Articles/134484/} 1292*4882a593Smuzhiyun[Viewed May 3, 2005]" 1293*4882a593Smuzhiyun,annotation={ 1294*4882a593Smuzhiyun Jon Corbet describes deprecation of synchronize_kernel() 1295*4882a593Smuzhiyun in favor of synchronize_rcu() and synchronize_sched(). 1296*4882a593Smuzhiyun} 1297*4882a593Smuzhiyun} 1298*4882a593Smuzhiyun 1299*4882a593Smuzhiyun@unpublished{PaulMcKenney05a 1300*4882a593Smuzhiyun,Author="Paul E. McKenney" 1301*4882a593Smuzhiyun,Title="{[RFC]} {RCU} and {CONFIG\_PREEMPT\_RT} progress" 1302*4882a593Smuzhiyun,month="May" 1303*4882a593Smuzhiyun,year="2005" 1304*4882a593Smuzhiyun,note="Available: 1305*4882a593Smuzhiyun\url{http://lkml.org/lkml/2005/5/9/185} 1306*4882a593Smuzhiyun[Viewed May 13, 2005]" 1307*4882a593Smuzhiyun,annotation={ 1308*4882a593Smuzhiyun First publication of working lock-based deferred free patches 1309*4882a593Smuzhiyun for the CONFIG_PREEMPT_RT environment. 1310*4882a593Smuzhiyun} 1311*4882a593Smuzhiyun} 1312*4882a593Smuzhiyun 1313*4882a593Smuzhiyun@conference{PaulMcKenney05b 1314*4882a593Smuzhiyun,Author="Paul E. McKenney and Dipankar Sarma" 1315*4882a593Smuzhiyun,Title="Towards Hard Realtime Response from the {Linux} Kernel on {SMP} Hardware" 1316*4882a593Smuzhiyun,Booktitle="linux.conf.au 2005" 1317*4882a593Smuzhiyun,month="April" 1318*4882a593Smuzhiyun,year="2005" 1319*4882a593Smuzhiyun,address="Canberra, Australia" 1320*4882a593Smuzhiyun,note="Available: 1321*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf} 1322*4882a593Smuzhiyun[Viewed May 13, 2005]" 1323*4882a593Smuzhiyun,annotation={ 1324*4882a593Smuzhiyun Realtime turns into making RCU yet more realtime friendly. 1325*4882a593Smuzhiyun http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf 1326*4882a593Smuzhiyun} 1327*4882a593Smuzhiyun} 1328*4882a593Smuzhiyun 1329*4882a593Smuzhiyun@unpublished{PaulEMcKenneyHomePage 1330*4882a593Smuzhiyun,Author="Paul E. McKenney" 1331*4882a593Smuzhiyun,Title="{Paul} {E.} {McKenney}" 1332*4882a593Smuzhiyun,month="May" 1333*4882a593Smuzhiyun,year="2005" 1334*4882a593Smuzhiyun,note="Available: 1335*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/} 1336*4882a593Smuzhiyun[Viewed May 25, 2005]" 1337*4882a593Smuzhiyun,annotation={ 1338*4882a593Smuzhiyun Paul McKenney's home page. 1339*4882a593Smuzhiyun} 1340*4882a593Smuzhiyun} 1341*4882a593Smuzhiyun 1342*4882a593Smuzhiyun@unpublished{PaulEMcKenneyRCUPage 1343*4882a593Smuzhiyun,Author="Paul E. McKenney" 1344*4882a593Smuzhiyun,Title="Read-Copy Update {(RCU)}" 1345*4882a593Smuzhiyun,month="May" 1346*4882a593Smuzhiyun,year="2005" 1347*4882a593Smuzhiyun,note="Available: 1348*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU} 1349*4882a593Smuzhiyun[Viewed May 25, 2005]" 1350*4882a593Smuzhiyun,annotation={ 1351*4882a593Smuzhiyun Paul McKenney's RCU page. 1352*4882a593Smuzhiyun} 1353*4882a593Smuzhiyun} 1354*4882a593Smuzhiyun 1355*4882a593Smuzhiyun@unpublished{JosephSeigh2005a 1356*4882a593Smuzhiyun,Author="Joseph Seigh" 1357*4882a593Smuzhiyun,Title="{RCU}+{SMR} (hazard pointers)" 1358*4882a593Smuzhiyun,month="July" 1359*4882a593Smuzhiyun,year="2005" 1360*4882a593Smuzhiyun,note="Personal communication" 1361*4882a593Smuzhiyun,annotation={ 1362*4882a593Smuzhiyun Joe Seigh announcing his atomic-ptr-plus project. 1363*4882a593Smuzhiyun http://sourceforge.net/projects/atomic-ptr-plus/ 1364*4882a593Smuzhiyun} 1365*4882a593Smuzhiyun} 1366*4882a593Smuzhiyun 1367*4882a593Smuzhiyun@unpublished{JosephSeigh2005b 1368*4882a593Smuzhiyun,Author="Joseph Seigh" 1369*4882a593Smuzhiyun,Title="Lock-free synchronization primitives" 1370*4882a593Smuzhiyun,month="July" 1371*4882a593Smuzhiyun,day="6" 1372*4882a593Smuzhiyun,year="2005" 1373*4882a593Smuzhiyun,note="Available: 1374*4882a593Smuzhiyun\url{http://sourceforge.net/projects/atomic-ptr-plus/} 1375*4882a593Smuzhiyun[Viewed August 8, 2005]" 1376*4882a593Smuzhiyun,annotation={ 1377*4882a593Smuzhiyun Joe Seigh's atomic-ptr-plus project. 1378*4882a593Smuzhiyun} 1379*4882a593Smuzhiyun} 1380*4882a593Smuzhiyun 1381*4882a593Smuzhiyun@unpublished{PaulMcKenney2005c 1382*4882a593Smuzhiyun,Author="Paul E.McKenney" 1383*4882a593Smuzhiyun,Title="{[RFC,PATCH] RCU} and {CONFIG\_PREEMPT\_RT} sane patch" 1384*4882a593Smuzhiyun,month="August" 1385*4882a593Smuzhiyun,day="1" 1386*4882a593Smuzhiyun,year="2005" 1387*4882a593Smuzhiyun,note="Available: 1388*4882a593Smuzhiyun\url{http://lkml.org/lkml/2005/8/1/155} 1389*4882a593Smuzhiyun[Viewed March 14, 2006]" 1390*4882a593Smuzhiyun,annotation={ 1391*4882a593Smuzhiyun First operating counter-based realtime RCU patch posted to LKML. 1392*4882a593Smuzhiyun} 1393*4882a593Smuzhiyun} 1394*4882a593Smuzhiyun 1395*4882a593Smuzhiyun@unpublished{PaulMcKenney2005d 1396*4882a593Smuzhiyun,Author="Paul E. McKenney" 1397*4882a593Smuzhiyun,Title="Re: [Fwd: Re: [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01]" 1398*4882a593Smuzhiyun,month="August" 1399*4882a593Smuzhiyun,day="8" 1400*4882a593Smuzhiyun,year="2005" 1401*4882a593Smuzhiyun,note="Available: 1402*4882a593Smuzhiyun\url{http://lkml.org/lkml/2005/8/8/108} 1403*4882a593Smuzhiyun[Viewed March 14, 2006]" 1404*4882a593Smuzhiyun,annotation={ 1405*4882a593Smuzhiyun First operating counter-based realtime RCU patch posted to LKML, 1406*4882a593Smuzhiyun but fixed so that various unusual combinations of configuration 1407*4882a593Smuzhiyun parameters all function properly. 1408*4882a593Smuzhiyun} 1409*4882a593Smuzhiyun} 1410*4882a593Smuzhiyun 1411*4882a593Smuzhiyun@unpublished{PaulMcKenney2005rcutorture 1412*4882a593Smuzhiyun,Author="Paul E. McKenney" 1413*4882a593Smuzhiyun,Title="{[PATCH]} {RCU} torture testing" 1414*4882a593Smuzhiyun,month="October" 1415*4882a593Smuzhiyun,day="1" 1416*4882a593Smuzhiyun,year="2005" 1417*4882a593Smuzhiyun,note="Available: 1418*4882a593Smuzhiyun\url{http://lkml.org/lkml/2005/10/1/70} 1419*4882a593Smuzhiyun[Viewed March 14, 2006]" 1420*4882a593Smuzhiyun,annotation={ 1421*4882a593Smuzhiyun First rcutorture patch. 1422*4882a593Smuzhiyun} 1423*4882a593Smuzhiyun} 1424*4882a593Smuzhiyun 1425*4882a593Smuzhiyun@unpublished{DavidSMiller2006HashedLocking 1426*4882a593Smuzhiyun,Author="David S. Miller" 1427*4882a593Smuzhiyun,Title="Re: [{PATCH}, {RFC}] {RCU} : {OOM} avoidance and lower latency" 1428*4882a593Smuzhiyun,month="January" 1429*4882a593Smuzhiyun,day="6" 1430*4882a593Smuzhiyun,year="2006" 1431*4882a593Smuzhiyun,note="Available: 1432*4882a593Smuzhiyun\url{https://lkml.org/lkml/2006/1/7/22} 1433*4882a593Smuzhiyun[Viewed February 29, 2012]" 1434*4882a593Smuzhiyun,annotation={ 1435*4882a593Smuzhiyun David Miller's view on hashed arrays of locks: used to really 1436*4882a593Smuzhiyun like it, but time he saw an opportunity for this technique, 1437*4882a593Smuzhiyun something else always proved superior. Partitioning or RCU. ;-) 1438*4882a593Smuzhiyun} 1439*4882a593Smuzhiyun} 1440*4882a593Smuzhiyun 1441*4882a593Smuzhiyun@conference{ThomasEHart2006a 1442*4882a593Smuzhiyun,Author="Thomas E. Hart and Paul E. McKenney and Angela Demke Brown" 1443*4882a593Smuzhiyun,Title="Making Lockless Synchronization Fast: Performance Implications 1444*4882a593Smuzhiyunof Memory Reclamation" 1445*4882a593Smuzhiyun,Booktitle="20\textsuperscript{th} {IEEE} International Parallel and 1446*4882a593SmuzhiyunDistributed Processing Symposium" 1447*4882a593Smuzhiyun,month="April" 1448*4882a593Smuzhiyun,year="2006" 1449*4882a593Smuzhiyun,day="25-29" 1450*4882a593Smuzhiyun,address="Rhodes, Greece" 1451*4882a593Smuzhiyun,note="Available: 1452*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf} 1453*4882a593Smuzhiyun[Viewed April 28, 2008]" 1454*4882a593Smuzhiyun,annotation={ 1455*4882a593Smuzhiyun Compares QSBR, HPBR, EBR, and lock-free reference counting. 1456*4882a593Smuzhiyun http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz 1457*4882a593Smuzhiyun} 1458*4882a593Smuzhiyun} 1459*4882a593Smuzhiyun 1460*4882a593Smuzhiyun@unpublished{NickPiggin2006radixtree 1461*4882a593Smuzhiyun,Author="Nick Piggin" 1462*4882a593Smuzhiyun,Title="[patch 3/3] radix-tree: {RCU} lockless readside" 1463*4882a593Smuzhiyun,month="June" 1464*4882a593Smuzhiyun,day="20" 1465*4882a593Smuzhiyun,year="2006" 1466*4882a593Smuzhiyun,note="Available: 1467*4882a593Smuzhiyun\url{http://lkml.org/lkml/2006/6/20/238} 1468*4882a593Smuzhiyun[Viewed March 25, 2008]" 1469*4882a593Smuzhiyun,annotation={ 1470*4882a593Smuzhiyun RCU-protected radix tree. 1471*4882a593Smuzhiyun} 1472*4882a593Smuzhiyun} 1473*4882a593Smuzhiyun 1474*4882a593Smuzhiyun@Conference{PaulEMcKenney2006b 1475*4882a593Smuzhiyun,Author="Paul E. McKenney and Dipankar Sarma and Ingo Molnar and 1476*4882a593SmuzhiyunSuparna Bhattacharya" 1477*4882a593Smuzhiyun,Title="Extending {RCU} for Realtime and Embedded Workloads" 1478*4882a593Smuzhiyun,Booktitle="{Ottawa Linux Symposium}" 1479*4882a593Smuzhiyun,Month="July" 1480*4882a593Smuzhiyun,Year="2006" 1481*4882a593Smuzhiyun,pages="v2 123-138" 1482*4882a593Smuzhiyun,note="Available: 1483*4882a593Smuzhiyun\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} 1484*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf} 1485*4882a593Smuzhiyun[Viewed January 1, 2007]" 1486*4882a593Smuzhiyun,annotation={ 1487*4882a593Smuzhiyun Described how to improve the -rt implementation of realtime RCU. 1488*4882a593Smuzhiyun} 1489*4882a593Smuzhiyun} 1490*4882a593Smuzhiyun 1491*4882a593Smuzhiyun@unpublished{WikipediaRCU 1492*4882a593Smuzhiyun,Author="Paul E. McKenney and Chris Purcell and Algae and Ben Schumin and 1493*4882a593SmuzhiyunGaius Cornelius and Qwertyus and Neil Conway and Sbw and Blainster and 1494*4882a593SmuzhiyunCanis Rufus and Zoicon5 and Anome and Hal Eisen" 1495*4882a593Smuzhiyun,Title="Read-Copy Update" 1496*4882a593Smuzhiyun,month="July" 1497*4882a593Smuzhiyun,day="8" 1498*4882a593Smuzhiyun,year="2006" 1499*4882a593Smuzhiyun,note="\url{https://en.wikipedia.org/wiki/Read-copy-update}" 1500*4882a593Smuzhiyun,annotation={ 1501*4882a593Smuzhiyun Wikipedia RCU page as of July 8 2006. 1502*4882a593Smuzhiyun [Viewed August 21, 2006] 1503*4882a593Smuzhiyun} 1504*4882a593Smuzhiyun} 1505*4882a593Smuzhiyun 1506*4882a593Smuzhiyun@Conference{NickPiggin2006LocklessPageCache 1507*4882a593Smuzhiyun,Author="Nick Piggin" 1508*4882a593Smuzhiyun,Title="A Lockless Pagecache in Linux---Introduction, Progress, Performance" 1509*4882a593Smuzhiyun,Booktitle="{Ottawa Linux Symposium}" 1510*4882a593Smuzhiyun,Month="July" 1511*4882a593Smuzhiyun,Year="2006" 1512*4882a593Smuzhiyun,pages="v2 249-254" 1513*4882a593Smuzhiyun,note="Available: 1514*4882a593Smuzhiyun\url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} 1515*4882a593Smuzhiyun[Viewed January 11, 2009]" 1516*4882a593Smuzhiyun,annotation={ 1517*4882a593Smuzhiyun Uses RCU-protected radix tree for a lockless page cache. 1518*4882a593Smuzhiyun} 1519*4882a593Smuzhiyun} 1520*4882a593Smuzhiyun 1521*4882a593Smuzhiyun@unpublished{PaulEMcKenney2006c 1522*4882a593Smuzhiyun,Author="Paul E. McKenney" 1523*4882a593Smuzhiyun,Title="Sleepable {RCU}" 1524*4882a593Smuzhiyun,month="October" 1525*4882a593Smuzhiyun,day="9" 1526*4882a593Smuzhiyun,year="2006" 1527*4882a593Smuzhiyun,note="Available: 1528*4882a593Smuzhiyun\url{http://lwn.net/Articles/202847/} 1529*4882a593SmuzhiyunRevised: 1530*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf} 1531*4882a593Smuzhiyun[Viewed August 21, 2006]" 1532*4882a593Smuzhiyun,annotation={ 1533*4882a593Smuzhiyun LWN article introducing SRCU. 1534*4882a593Smuzhiyun} 1535*4882a593Smuzhiyun} 1536*4882a593Smuzhiyun 1537*4882a593Smuzhiyun@unpublished{RobertOlsson2006a 1538*4882a593Smuzhiyun,Author="Robert Olsson and Stefan Nilsson" 1539*4882a593Smuzhiyun,Title="{TRASH}: A dynamic {LC}-trie and hash data structure" 1540*4882a593Smuzhiyun,month="August" 1541*4882a593Smuzhiyun,day="18" 1542*4882a593Smuzhiyun,year="2006" 1543*4882a593Smuzhiyun,note="\url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf}" 1544*4882a593Smuzhiyun,annotation={ 1545*4882a593Smuzhiyun RCU-protected dynamic trie-hash combination. 1546*4882a593Smuzhiyun [Viewed March 4, 2011] 1547*4882a593Smuzhiyun} 1548*4882a593Smuzhiyun} 1549*4882a593Smuzhiyun 1550*4882a593Smuzhiyun@unpublished{ChristophHellwig2006RCU2SRCU 1551*4882a593Smuzhiyun,Author="Christoph Hellwig" 1552*4882a593Smuzhiyun,Title="Re: {[-mm PATCH 1/4]} {RCU}: split classic rcu" 1553*4882a593Smuzhiyun,month="September" 1554*4882a593Smuzhiyun,day="28" 1555*4882a593Smuzhiyun,year="2006" 1556*4882a593Smuzhiyun,note="Available: 1557*4882a593Smuzhiyun\url{http://lkml.org/lkml/2006/9/28/160} 1558*4882a593Smuzhiyun[Viewed March 27, 2008]" 1559*4882a593Smuzhiyun} 1560*4882a593Smuzhiyun 1561*4882a593Smuzhiyun@unpublished{PaulEMcKenneyRCUusagePage 1562*4882a593Smuzhiyun,Author="Paul E. McKenney" 1563*4882a593Smuzhiyun,Title="{RCU} {Linux} Usage" 1564*4882a593Smuzhiyun,month="October" 1565*4882a593Smuzhiyun,year="2006" 1566*4882a593Smuzhiyun,note="Available: 1567*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html} 1568*4882a593Smuzhiyun[Viewed January 14, 2007]" 1569*4882a593Smuzhiyun,annotation={ 1570*4882a593Smuzhiyun Paul McKenney's RCU page showing graphs plotting Linux-kernel 1571*4882a593Smuzhiyun usage of RCU. 1572*4882a593Smuzhiyun} 1573*4882a593Smuzhiyun} 1574*4882a593Smuzhiyun 1575*4882a593Smuzhiyun@unpublished{PaulEMcKenneyRCUusageRawDataPage 1576*4882a593Smuzhiyun,Author="Paul E. McKenney" 1577*4882a593Smuzhiyun,Title="Read-Copy Update {(RCU)} Usage in {Linux} Kernel" 1578*4882a593Smuzhiyun,month="October" 1579*4882a593Smuzhiyun,year="2006" 1580*4882a593Smuzhiyun,note="Available: 1581*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html} 1582*4882a593Smuzhiyun[Viewed January 14, 2007]" 1583*4882a593Smuzhiyun,annotation={ 1584*4882a593Smuzhiyun Paul McKenney's RCU page showing Linux usage of RCU in tabular 1585*4882a593Smuzhiyun form, with links to corresponding cscope databases. 1586*4882a593Smuzhiyun} 1587*4882a593Smuzhiyun} 1588*4882a593Smuzhiyun 1589*4882a593Smuzhiyun@unpublished{GauthamShenoy2006RCUrwlock 1590*4882a593Smuzhiyun,Author="Gautham R. Shenoy" 1591*4882a593Smuzhiyun,Title="[PATCH 4/5] lock\_cpu\_hotplug: Redesign - Lightweight implementation of lock\_cpu\_hotplug" 1592*4882a593Smuzhiyun,month="October" 1593*4882a593Smuzhiyun,year="2006" 1594*4882a593Smuzhiyun,day=26 1595*4882a593Smuzhiyun,note="Available: 1596*4882a593Smuzhiyun\url{http://lkml.org/lkml/2006/10/26/73} 1597*4882a593Smuzhiyun[Viewed January 26, 2009]" 1598*4882a593Smuzhiyun,annotation={ 1599*4882a593Smuzhiyun RCU-based reader-writer lock that allows readers to proceed with 1600*4882a593Smuzhiyun no memory barriers or atomic instruction in absence of writers. 1601*4882a593Smuzhiyun If writer do show up, readers must of course wait as required by 1602*4882a593Smuzhiyun the semantics of reader-writer locking. This is a recursive 1603*4882a593Smuzhiyun lock. 1604*4882a593Smuzhiyun} 1605*4882a593Smuzhiyun} 1606*4882a593Smuzhiyun 1607*4882a593Smuzhiyun@unpublished{JensAxboe2006SlowSRCU 1608*4882a593Smuzhiyun,Author="Jens Axboe" 1609*4882a593Smuzhiyun,Title="Re: [patch] cpufreq: mark \url{cpufreq_tsc()} as 1610*4882a593Smuzhiyun\url{core_initcall_sync}" 1611*4882a593Smuzhiyun,month="November" 1612*4882a593Smuzhiyun,year="2006" 1613*4882a593Smuzhiyun,day=17 1614*4882a593Smuzhiyun,note="Available: 1615*4882a593Smuzhiyun\url{http://lkml.org/lkml/2006/11/17/56} 1616*4882a593Smuzhiyun[Viewed May 28, 2007]" 1617*4882a593Smuzhiyun,annotation={ 1618*4882a593Smuzhiyun SRCU's grace periods are too slow for Jens, even after a 1619*4882a593Smuzhiyun factor-of-three speedup. 1620*4882a593Smuzhiyun Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359. 1621*4882a593Smuzhiyun} 1622*4882a593Smuzhiyun} 1623*4882a593Smuzhiyun 1624*4882a593Smuzhiyun@unpublished{OlegNesterov2006QRCU 1625*4882a593Smuzhiyun,Author="Oleg Nesterov" 1626*4882a593Smuzhiyun,Title="Re: [patch] cpufreq: mark {\tt cpufreq\_tsc()} as 1627*4882a593Smuzhiyun{\tt core\_initcall\_sync}" 1628*4882a593Smuzhiyun,month="November" 1629*4882a593Smuzhiyun,year="2006" 1630*4882a593Smuzhiyun,day=19 1631*4882a593Smuzhiyun,note="Available: 1632*4882a593Smuzhiyun\url{http://lkml.org/lkml/2006/11/19/69} 1633*4882a593Smuzhiyun[Viewed May 28, 2007]" 1634*4882a593Smuzhiyun,annotation={ 1635*4882a593Smuzhiyun First cut of QRCU. Expanded/corrected versions followed. 1636*4882a593Smuzhiyun Used to be OlegNesterov2007QRCU, now time-corrected. 1637*4882a593Smuzhiyun} 1638*4882a593Smuzhiyun} 1639*4882a593Smuzhiyun 1640*4882a593Smuzhiyun@unpublished{OlegNesterov2006aQRCU 1641*4882a593Smuzhiyun,Author="Oleg Nesterov" 1642*4882a593Smuzhiyun,Title="Re: [RFC, PATCH 1/2] qrcu: {"quick"} srcu implementation" 1643*4882a593Smuzhiyun,month="November" 1644*4882a593Smuzhiyun,year="2006" 1645*4882a593Smuzhiyun,day=30 1646*4882a593Smuzhiyun,note="Available: 1647*4882a593Smuzhiyun\url{http://lkml.org/lkml/2006/11/29/330} 1648*4882a593Smuzhiyun[Viewed November 26, 2008]" 1649*4882a593Smuzhiyun,annotation={ 1650*4882a593Smuzhiyun Expanded/corrected version of QRCU. 1651*4882a593Smuzhiyun Used to be OlegNesterov2007aQRCU, now time-corrected. 1652*4882a593Smuzhiyun} 1653*4882a593Smuzhiyun} 1654*4882a593Smuzhiyun 1655*4882a593Smuzhiyun@unpublished{EvgeniyPolyakov2006RCUslowdown 1656*4882a593Smuzhiyun,Author="Evgeniy Polyakov" 1657*4882a593Smuzhiyun,Title="Badness in postponing work" 1658*4882a593Smuzhiyun,month="December" 1659*4882a593Smuzhiyun,year="2006" 1660*4882a593Smuzhiyun,day=05 1661*4882a593Smuzhiyun,note="Available: 1662*4882a593Smuzhiyun\url{http://www.ioremap.net/node/41} 1663*4882a593Smuzhiyun[Viewed October 28, 2008]" 1664*4882a593Smuzhiyun,annotation={ 1665*4882a593Smuzhiyun Using RCU as a pure delay leads to a 2.5x slowdown in skbs in 1666*4882a593Smuzhiyun the Linux kernel. 1667*4882a593Smuzhiyun} 1668*4882a593Smuzhiyun} 1669*4882a593Smuzhiyun 1670*4882a593Smuzhiyun@inproceedings{ChrisMatthews2006ClusteredObjectsRCU 1671*4882a593Smuzhiyun,author = {Matthews, Chris and Coady, Yvonne and Appavoo, Jonathan} 1672*4882a593Smuzhiyun,title = {Portability events: a programming model for scalable system infrastructures} 1673*4882a593Smuzhiyun,booktitle = {PLOS '06: Proceedings of the 3rd workshop on Programming languages and operating systems} 1674*4882a593Smuzhiyun,year = {2006} 1675*4882a593Smuzhiyun,isbn = {1-59593-577-0} 1676*4882a593Smuzhiyun,pages = {11} 1677*4882a593Smuzhiyun,location = {San Jose, California} 1678*4882a593Smuzhiyun,doi = {http://doi.acm.org/10.1145/1215995.1216006} 1679*4882a593Smuzhiyun,publisher = {ACM} 1680*4882a593Smuzhiyun,address = {New York, NY, USA} 1681*4882a593Smuzhiyun,annotation={ 1682*4882a593Smuzhiyun Uses K42's RCU-like functionality to manage clustered-object 1683*4882a593Smuzhiyun lifetimes. 1684*4882a593Smuzhiyun} 1685*4882a593Smuzhiyun} 1686*4882a593Smuzhiyun 1687*4882a593Smuzhiyun@article{DilmaDaSilva2006K42 1688*4882a593Smuzhiyun,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew} 1689*4882a593Smuzhiyun,title = {K42: an infrastructure for operating system research} 1690*4882a593Smuzhiyun,journal = {SIGOPS Oper. Syst. Rev.} 1691*4882a593Smuzhiyun,volume = {40} 1692*4882a593Smuzhiyun,number = {2} 1693*4882a593Smuzhiyun,year = {2006} 1694*4882a593Smuzhiyun,issn = {0163-5980} 1695*4882a593Smuzhiyun,pages = {34--42} 1696*4882a593Smuzhiyun,doi = {http://doi.acm.org/10.1145/1131322.1131333} 1697*4882a593Smuzhiyun,publisher = {ACM} 1698*4882a593Smuzhiyun,address = {New York, NY, USA} 1699*4882a593Smuzhiyun,annotation={ 1700*4882a593Smuzhiyun Describes relationship of K42 generations to RCU. 1701*4882a593Smuzhiyun} 1702*4882a593Smuzhiyun} 1703*4882a593Smuzhiyun 1704*4882a593Smuzhiyun# CoreyMinyard2007list_splice_rcu 1705*4882a593Smuzhiyun@unpublished{CoreyMinyard2007list:splice:rcu 1706*4882a593Smuzhiyun,Author="Corey Minyard and Paul E. McKenney" 1707*4882a593Smuzhiyun,Title="{[PATCH]} add an {RCU} version of list splicing" 1708*4882a593Smuzhiyun,month="January" 1709*4882a593Smuzhiyun,year="2007" 1710*4882a593Smuzhiyun,day=3 1711*4882a593Smuzhiyun,note="Available: 1712*4882a593Smuzhiyun\url{http://lkml.org/lkml/2007/1/3/112} 1713*4882a593Smuzhiyun[Viewed May 28, 2007]" 1714*4882a593Smuzhiyun,annotation={ 1715*4882a593Smuzhiyun Patch for list_splice_rcu(). 1716*4882a593Smuzhiyun} 1717*4882a593Smuzhiyun} 1718*4882a593Smuzhiyun 1719*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007rcubarrier 1720*4882a593Smuzhiyun,Author="Paul E. McKenney" 1721*4882a593Smuzhiyun,Title="{RCU} and Unloadable Modules" 1722*4882a593Smuzhiyun,month="January" 1723*4882a593Smuzhiyun,day="14" 1724*4882a593Smuzhiyun,year="2007" 1725*4882a593Smuzhiyun,note="Available: 1726*4882a593Smuzhiyun\url{http://lwn.net/Articles/217484/} 1727*4882a593Smuzhiyun[Viewed November 22, 2007]" 1728*4882a593Smuzhiyun,annotation={ 1729*4882a593Smuzhiyun LWN article introducing the rcu_barrier() primitive. 1730*4882a593Smuzhiyun} 1731*4882a593Smuzhiyun} 1732*4882a593Smuzhiyun 1733*4882a593Smuzhiyun@unpublished{PeterZijlstra2007SyncBarrier 1734*4882a593Smuzhiyun,Author="Peter Zijlstra and Ingo Molnar" 1735*4882a593Smuzhiyun,Title="{[PATCH 3/7]} barrier: a scalable synchonisation barrier" 1736*4882a593Smuzhiyun,month="January" 1737*4882a593Smuzhiyun,year="2007" 1738*4882a593Smuzhiyun,day=28 1739*4882a593Smuzhiyun,note="Available: 1740*4882a593Smuzhiyun\url{http://lkml.org/lkml/2007/1/28/34} 1741*4882a593Smuzhiyun[Viewed March 27, 2008]" 1742*4882a593Smuzhiyun,annotation={ 1743*4882a593Smuzhiyun RCU-like implementation for frequent updaters and rare readers(!). 1744*4882a593Smuzhiyun Subsumed into QRCU. Maybe... 1745*4882a593Smuzhiyun} 1746*4882a593Smuzhiyun} 1747*4882a593Smuzhiyun 1748*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007BoostRCU 1749*4882a593Smuzhiyun,Author="Paul E. McKenney" 1750*4882a593Smuzhiyun,Title="Priority-Boosting {RCU} Read-Side Critical Sections" 1751*4882a593Smuzhiyun,month="February" 1752*4882a593Smuzhiyun,day="5" 1753*4882a593Smuzhiyun,year="2007" 1754*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/220677/}" 1755*4882a593Smuzhiyun,annotation={ 1756*4882a593Smuzhiyun LWN article introducing RCU priority boosting. 1757*4882a593Smuzhiyun Revised: 1758*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf 1759*4882a593Smuzhiyun [Viewed September 7, 2007] 1760*4882a593Smuzhiyun} 1761*4882a593Smuzhiyun} 1762*4882a593Smuzhiyun 1763*4882a593Smuzhiyun@unpublished{PaulMcKenney2007QRCUpatch 1764*4882a593Smuzhiyun,Author="Paul E. McKenney" 1765*4882a593Smuzhiyun,Title="{[PATCH]} {QRCU} with lockless fastpath" 1766*4882a593Smuzhiyun,month="February" 1767*4882a593Smuzhiyun,year="2007" 1768*4882a593Smuzhiyun,day=24 1769*4882a593Smuzhiyun,note="Available: 1770*4882a593Smuzhiyun\url{http://lkml.org/lkml/2007/2/25/18} 1771*4882a593Smuzhiyun[Viewed March 27, 2008]" 1772*4882a593Smuzhiyun,annotation={ 1773*4882a593Smuzhiyun Patch for QRCU supplying lock-free fast path. 1774*4882a593Smuzhiyun} 1775*4882a593Smuzhiyun} 1776*4882a593Smuzhiyun 1777*4882a593Smuzhiyun@article{JonathanAppavoo2007K42RCU 1778*4882a593Smuzhiyun,author = {Appavoo, Jonathan and Silva, Dilma Da and Krieger, Orran and Auslander, Marc and Ostrowski, Michal and Rosenburg, Bryan and Waterland, Amos and Wisniewski, Robert W. and Xenidis, Jimi and Stumm, Michael and Soares, Livio} 1779*4882a593Smuzhiyun,title = {Experience distributing objects in an SMMP OS} 1780*4882a593Smuzhiyun,journal = {ACM Trans. Comput. Syst.} 1781*4882a593Smuzhiyun,volume = {25} 1782*4882a593Smuzhiyun,number = {3} 1783*4882a593Smuzhiyun,year = {2007} 1784*4882a593Smuzhiyun,issn = {0734-2071} 1785*4882a593Smuzhiyun,pages = {6/1--6/52} 1786*4882a593Smuzhiyun,doi = {http://doi.acm.org/10.1145/1275517.1275518} 1787*4882a593Smuzhiyun,publisher = {ACM} 1788*4882a593Smuzhiyun,address = {New York, NY, USA} 1789*4882a593Smuzhiyun,annotation={ 1790*4882a593Smuzhiyun Role of RCU in K42. 1791*4882a593Smuzhiyun} 1792*4882a593Smuzhiyun} 1793*4882a593Smuzhiyun 1794*4882a593Smuzhiyun@conference{RobertOlsson2007Trash 1795*4882a593Smuzhiyun,Author="Robert Olsson and Stefan Nilsson" 1796*4882a593Smuzhiyun,Title="{TRASH}: A dynamic {LC}-trie and hash data structure" 1797*4882a593Smuzhiyun,booktitle="Workshop on High Performance Switching and Routing (HPSR'07)" 1798*4882a593Smuzhiyun,month="May" 1799*4882a593Smuzhiyun,year="2007" 1800*4882a593Smuzhiyun,note="Available: 1801*4882a593Smuzhiyun\url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239} 1802*4882a593Smuzhiyun[Viewed October 1, 2010]" 1803*4882a593Smuzhiyun,annotation={ 1804*4882a593Smuzhiyun RCU-protected dynamic trie-hash combination. 1805*4882a593Smuzhiyun} 1806*4882a593Smuzhiyun} 1807*4882a593Smuzhiyun 1808*4882a593Smuzhiyun@conference{PeterZijlstra2007ConcurrentPagecacheRCU 1809*4882a593Smuzhiyun,Author="Peter Zijlstra" 1810*4882a593Smuzhiyun,Title="Concurrent Pagecache" 1811*4882a593Smuzhiyun,Booktitle="Linux Symposium" 1812*4882a593Smuzhiyun,month="June" 1813*4882a593Smuzhiyun,year="2007" 1814*4882a593Smuzhiyun,address="Ottawa, Canada" 1815*4882a593Smuzhiyun,note="Available: 1816*4882a593Smuzhiyun\url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf} 1817*4882a593Smuzhiyun[Viewed April 14, 2008]" 1818*4882a593Smuzhiyun,annotation={ 1819*4882a593Smuzhiyun Page-cache modifications permitting RCU readers and concurrent 1820*4882a593Smuzhiyun updates. 1821*4882a593Smuzhiyun} 1822*4882a593Smuzhiyun} 1823*4882a593Smuzhiyun 1824*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007whatisRCU 1825*4882a593Smuzhiyun,Author="Paul E. McKenney" 1826*4882a593Smuzhiyun,Title="What is {RCU}?" 1827*4882a593Smuzhiyun,year="2007" 1828*4882a593Smuzhiyun,month="07" 1829*4882a593Smuzhiyun,note="Available: 1830*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/whatisRCU.html} 1831*4882a593Smuzhiyun[Viewed July 6, 2007]" 1832*4882a593Smuzhiyun,annotation={ 1833*4882a593Smuzhiyun Describes RCU in Linux kernel. 1834*4882a593Smuzhiyun} 1835*4882a593Smuzhiyun} 1836*4882a593Smuzhiyun 1837*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007QRCUspin 1838*4882a593Smuzhiyun,Author="Paul E. McKenney" 1839*4882a593Smuzhiyun,Title="Using {Promela} and {Spin} to verify parallel algorithms" 1840*4882a593Smuzhiyun,month="August" 1841*4882a593Smuzhiyun,day="1" 1842*4882a593Smuzhiyun,year="2007" 1843*4882a593Smuzhiyun,note="Available: 1844*4882a593Smuzhiyun\url{http://lwn.net/Articles/243851/} 1845*4882a593Smuzhiyun[Viewed September 8, 2007]" 1846*4882a593Smuzhiyun,annotation={ 1847*4882a593Smuzhiyun LWN article describing Promela and spin, and also using Oleg 1848*4882a593Smuzhiyun Nesterov's QRCU as an example (with Paul McKenney's fastpath). 1849*4882a593Smuzhiyun Merged patch at: http://lkml.org/lkml/2007/2/25/18 1850*4882a593Smuzhiyun} 1851*4882a593Smuzhiyun} 1852*4882a593Smuzhiyun 1853*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007WG21DDOatomics 1854*4882a593Smuzhiyun,Author="Paul E. McKenney and Hans-J. Boehm and Lawrence Crowl" 1855*4882a593Smuzhiyun,Title="C++ Data-Dependency Ordering: Atomics and Memory Model" 1856*4882a593Smuzhiyun,month="August" 1857*4882a593Smuzhiyun,day="3" 1858*4882a593Smuzhiyun,year="2007" 1859*4882a593Smuzhiyun,note="Available: 1860*4882a593Smuzhiyun\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm} 1861*4882a593Smuzhiyun[Viewed December 7, 2009]" 1862*4882a593Smuzhiyun,annotation={ 1863*4882a593Smuzhiyun RCU for C++, parts 1 and 2. 1864*4882a593Smuzhiyun} 1865*4882a593Smuzhiyun} 1866*4882a593Smuzhiyun 1867*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007WG21DDOannotation 1868*4882a593Smuzhiyun,Author="Paul E. McKenney and Lawrence Crowl" 1869*4882a593Smuzhiyun,Title="C++ Data-Dependency Ordering: Function Annotation" 1870*4882a593Smuzhiyun,month="September" 1871*4882a593Smuzhiyun,day="18" 1872*4882a593Smuzhiyun,year="2008" 1873*4882a593Smuzhiyun,note="Available: 1874*4882a593Smuzhiyun\url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm} 1875*4882a593Smuzhiyun[Viewed December 7, 2009]" 1876*4882a593Smuzhiyun,annotation={ 1877*4882a593Smuzhiyun RCU for C++, part 2, updated many times. 1878*4882a593Smuzhiyun} 1879*4882a593Smuzhiyun} 1880*4882a593Smuzhiyun 1881*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007PreemptibleRCUPatch 1882*4882a593Smuzhiyun,Author="Paul E. McKenney" 1883*4882a593Smuzhiyun,Title="[PATCH RFC 0/9] {RCU}: Preemptible {RCU}" 1884*4882a593Smuzhiyun,month="September" 1885*4882a593Smuzhiyun,day="10" 1886*4882a593Smuzhiyun,year="2007" 1887*4882a593Smuzhiyun,note="Available: 1888*4882a593Smuzhiyun\url{http://lkml.org/lkml/2007/9/10/213} 1889*4882a593Smuzhiyun[Viewed October 25, 2007]" 1890*4882a593Smuzhiyun,annotation={ 1891*4882a593Smuzhiyun Final patch for preemptable RCU to -rt. (Later patches were 1892*4882a593Smuzhiyun to mainline, eventually incorporated.) 1893*4882a593Smuzhiyun} 1894*4882a593Smuzhiyun} 1895*4882a593Smuzhiyun 1896*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007PreemptibleRCU 1897*4882a593Smuzhiyun,Author="Paul E. McKenney" 1898*4882a593Smuzhiyun,Title="The design of preemptible read-copy-update" 1899*4882a593Smuzhiyun,month="October" 1900*4882a593Smuzhiyun,day="8" 1901*4882a593Smuzhiyun,year="2007" 1902*4882a593Smuzhiyun,note="Available: 1903*4882a593Smuzhiyun\url{http://lwn.net/Articles/253651/} 1904*4882a593Smuzhiyun[Viewed October 25, 2007]" 1905*4882a593Smuzhiyun,annotation={ 1906*4882a593Smuzhiyun LWN article describing the design of preemptible RCU. 1907*4882a593Smuzhiyun} 1908*4882a593Smuzhiyun} 1909*4882a593Smuzhiyun 1910*4882a593Smuzhiyun@article{ThomasEHart2007a 1911*4882a593Smuzhiyun,Author="Thomas E. Hart and Paul E. McKenney and Angela Demke Brown and Jonathan Walpole" 1912*4882a593Smuzhiyun,Title="Performance of memory reclamation for lockless synchronization" 1913*4882a593Smuzhiyun,journal="J. Parallel Distrib. Comput." 1914*4882a593Smuzhiyun,volume={67} 1915*4882a593Smuzhiyun,number="12" 1916*4882a593Smuzhiyun,year="2007" 1917*4882a593Smuzhiyun,issn="0743-7315" 1918*4882a593Smuzhiyun,pages="1270--1285" 1919*4882a593Smuzhiyun,doi="http://dx.doi.org/10.1016/j.jpdc.2007.04.010" 1920*4882a593Smuzhiyun,publisher="Academic Press, Inc." 1921*4882a593Smuzhiyun,address="Orlando, FL, USA" 1922*4882a593Smuzhiyun,annotation={ 1923*4882a593Smuzhiyun Compares QSBR, HPBR, EBR, and lock-free reference counting. 1924*4882a593Smuzhiyun Journal version of ThomasEHart2006a. 1925*4882a593Smuzhiyun} 1926*4882a593Smuzhiyun} 1927*4882a593Smuzhiyun 1928*4882a593Smuzhiyun# MathieuDesnoyers2007call_rcu_schedNeeded 1929*4882a593Smuzhiyun@unpublished{MathieuDesnoyers2007call:rcu:schedNeeded 1930*4882a593Smuzhiyun,Author="Mathieu Desnoyers" 1931*4882a593Smuzhiyun,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes" 1932*4882a593Smuzhiyun,month="December" 1933*4882a593Smuzhiyun,day="20" 1934*4882a593Smuzhiyun,year="2007" 1935*4882a593Smuzhiyun,note="Available: 1936*4882a593Smuzhiyun\url{http://lkml.org/lkml/2007/12/20/244} 1937*4882a593Smuzhiyun[Viewed March 27, 2008]" 1938*4882a593Smuzhiyun,annotation={ 1939*4882a593Smuzhiyun Request for call_rcu_sched() and rcu_barrier_sched(). 1940*4882a593Smuzhiyun} 1941*4882a593Smuzhiyun} 1942*4882a593Smuzhiyun 1943*4882a593Smuzhiyun 1944*4882a593Smuzhiyun######################################################################## 1945*4882a593Smuzhiyun# 1946*4882a593Smuzhiyun# "What is RCU?" LWN series. 1947*4882a593Smuzhiyun# 1948*4882a593Smuzhiyun# http://lwn.net/Articles/262464/ (What is RCU, Fundamentally?) 1949*4882a593Smuzhiyun# http://lwn.net/Articles/263130/ (What is RCU's Usage?) 1950*4882a593Smuzhiyun# http://lwn.net/Articles/264090/ (What is RCU's API?) 1951*4882a593Smuzhiyun 1952*4882a593Smuzhiyun@unpublished{PaulEMcKenney2007WhatIsRCUFundamentally 1953*4882a593Smuzhiyun,Author="Paul E. McKenney and Jonathan Walpole" 1954*4882a593Smuzhiyun,Title="What is {RCU}, Fundamentally?" 1955*4882a593Smuzhiyun,month="December" 1956*4882a593Smuzhiyun,day="17" 1957*4882a593Smuzhiyun,year="2007" 1958*4882a593Smuzhiyun,note="Available: 1959*4882a593Smuzhiyun\url{http://lwn.net/Articles/262464/} 1960*4882a593Smuzhiyun[Viewed December 27, 2007]" 1961*4882a593Smuzhiyun,annotation={ 1962*4882a593Smuzhiyun Lays out the three basic components of RCU: (1) publish-subscribe, 1963*4882a593Smuzhiyun (2) wait for pre-existing readers to complete, and (2) maintain 1964*4882a593Smuzhiyun multiple versions. 1965*4882a593Smuzhiyun} 1966*4882a593Smuzhiyun} 1967*4882a593Smuzhiyun 1968*4882a593Smuzhiyun@unpublished{PaulEMcKenney2008WhatIsRCUUsage 1969*4882a593Smuzhiyun,Author="Paul E. McKenney" 1970*4882a593Smuzhiyun,Title="What is {RCU}? Part 2: Usage" 1971*4882a593Smuzhiyun,month="January" 1972*4882a593Smuzhiyun,day="4" 1973*4882a593Smuzhiyun,year="2008" 1974*4882a593Smuzhiyun,note="Available: 1975*4882a593Smuzhiyun\url{http://lwn.net/Articles/263130/} 1976*4882a593Smuzhiyun[Viewed January 4, 2008]" 1977*4882a593Smuzhiyun,annotation={ 1978*4882a593Smuzhiyun Lays out six uses of RCU: 1979*4882a593Smuzhiyun 1. RCU is a Reader-Writer Lock Replacement 1980*4882a593Smuzhiyun 2. RCU is a Restricted Reference-Counting Mechanism 1981*4882a593Smuzhiyun 3. RCU is a Bulk Reference-Counting Mechanism 1982*4882a593Smuzhiyun 4. RCU is a Poor Man's Garbage Collector 1983*4882a593Smuzhiyun 5. RCU is a Way of Providing Existence Guarantees 1984*4882a593Smuzhiyun 6. RCU is a Way of Waiting for Things to Finish 1985*4882a593Smuzhiyun} 1986*4882a593Smuzhiyun} 1987*4882a593Smuzhiyun 1988*4882a593Smuzhiyun@unpublished{PaulEMcKenney2008WhatIsRCUAPI 1989*4882a593Smuzhiyun,Author="Paul E. McKenney" 1990*4882a593Smuzhiyun,Title="{RCU} part 3: the {RCU} {API}" 1991*4882a593Smuzhiyun,month="January" 1992*4882a593Smuzhiyun,day="17" 1993*4882a593Smuzhiyun,year="2008" 1994*4882a593Smuzhiyun,note="Available: 1995*4882a593Smuzhiyun\url{http://lwn.net/Articles/264090/} 1996*4882a593Smuzhiyun[Viewed January 10, 2008]" 1997*4882a593Smuzhiyun,annotation={ 1998*4882a593Smuzhiyun Gives an overview of the Linux-kernel RCU API and a brief annotated RCU 1999*4882a593Smuzhiyun bibliography. 2000*4882a593Smuzhiyun} 2001*4882a593Smuzhiyun} 2002*4882a593Smuzhiyun 2003*4882a593Smuzhiyun# 2004*4882a593Smuzhiyun# "What is RCU?" LWN series. 2005*4882a593Smuzhiyun# 2006*4882a593Smuzhiyun######################################################################## 2007*4882a593Smuzhiyun 2008*4882a593Smuzhiyun 2009*4882a593Smuzhiyun@unpublished{SteveRostedt2008dyntickRCUpatch 2010*4882a593Smuzhiyun,Author="Steven Rostedt and Paul E. McKenney" 2011*4882a593Smuzhiyun,Title="{[PATCH]} add support for dynamic ticks and preempt rcu" 2012*4882a593Smuzhiyun,month="January" 2013*4882a593Smuzhiyun,day="29" 2014*4882a593Smuzhiyun,year="2008" 2015*4882a593Smuzhiyun,note="Available: 2016*4882a593Smuzhiyun\url{http://lkml.org/lkml/2008/1/29/208} 2017*4882a593Smuzhiyun[Viewed March 27, 2008]" 2018*4882a593Smuzhiyun,annotation={ 2019*4882a593Smuzhiyun Patch that prevents preemptible RCU from unnecessarily waking 2020*4882a593Smuzhiyun up dynticks-idle CPUs. 2021*4882a593Smuzhiyun} 2022*4882a593Smuzhiyun} 2023*4882a593Smuzhiyun 2024*4882a593Smuzhiyun@unpublished{PaulEMcKenney2008LKMLDependencyOrdering 2025*4882a593Smuzhiyun,Author="Paul E. McKenney" 2026*4882a593Smuzhiyun,Title="Re: [PATCH 02/22 -v7] Add basic support for gcc profiler instrumentation" 2027*4882a593Smuzhiyun,month="February" 2028*4882a593Smuzhiyun,day="1" 2029*4882a593Smuzhiyun,year="2008" 2030*4882a593Smuzhiyun,note="Available: 2031*4882a593Smuzhiyun\url{http://lkml.org/lkml/2008/2/2/255} 2032*4882a593Smuzhiyun[Viewed October 18, 2008]" 2033*4882a593Smuzhiyun,annotation={ 2034*4882a593Smuzhiyun Explanation of compilers violating dependency ordering. 2035*4882a593Smuzhiyun} 2036*4882a593Smuzhiyun} 2037*4882a593Smuzhiyun 2038*4882a593Smuzhiyun@Conference{PaulEMcKenney2008Beijing 2039*4882a593Smuzhiyun,Author="Paul E. McKenney" 2040*4882a593Smuzhiyun,Title="Introducing Technology Into {Linux} Or: 2041*4882a593SmuzhiyunIntroducing your technology Into {Linux} will require introducing a 2042*4882a593Smuzhiyunlot of {Linux} into your technology!!!" 2043*4882a593Smuzhiyun,Booktitle="2008 Linux Developer Symposium - China" 2044*4882a593Smuzhiyun,Publisher="OSS China" 2045*4882a593Smuzhiyun,Month="February" 2046*4882a593Smuzhiyun,Year="2008" 2047*4882a593Smuzhiyun,Address="Beijing, China" 2048*4882a593Smuzhiyun,note="Available: 2049*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/TechIntroLinux.2008.02.19a.pdf} 2050*4882a593Smuzhiyun[Viewed August 12, 2008]" 2051*4882a593Smuzhiyun} 2052*4882a593Smuzhiyun 2053*4882a593Smuzhiyun@unpublished{PaulEMcKenney2008dynticksRCU 2054*4882a593Smuzhiyun,Author="Paul E. McKenney and Steven Rostedt" 2055*4882a593Smuzhiyun,Title="Integrating and Validating dynticks and Preemptable RCU" 2056*4882a593Smuzhiyun,month="April" 2057*4882a593Smuzhiyun,day="24" 2058*4882a593Smuzhiyun,year="2008" 2059*4882a593Smuzhiyun,note="Available: 2060*4882a593Smuzhiyun\url{http://lwn.net/Articles/279077/} 2061*4882a593Smuzhiyun[Viewed April 24, 2008]" 2062*4882a593Smuzhiyun,annotation={ 2063*4882a593Smuzhiyun Describes use of Promela and Spin to validate (and fix!) the 2064*4882a593Smuzhiyun dynticks/RCU interface. 2065*4882a593Smuzhiyun} 2066*4882a593Smuzhiyun} 2067*4882a593Smuzhiyun 2068*4882a593Smuzhiyun@article{DinakarGuniguntala2008IBMSysJ 2069*4882a593Smuzhiyun,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole" 2070*4882a593Smuzhiyun,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}" 2071*4882a593Smuzhiyun,Year="2008" 2072*4882a593Smuzhiyun,Month="May" 2073*4882a593Smuzhiyun,journal="IBM Systems Journal" 2074*4882a593Smuzhiyun,volume="47" 2075*4882a593Smuzhiyun,number="2" 2076*4882a593Smuzhiyun,pages="221-236" 2077*4882a593Smuzhiyun,annotation={ 2078*4882a593Smuzhiyun RCU, realtime RCU, sleepable RCU, performance. 2079*4882a593Smuzhiyun http://www.research.ibm.com/journal/sj/472/guniguntala.pdf 2080*4882a593Smuzhiyun [Viewed April 24, 2008] 2081*4882a593Smuzhiyun} 2082*4882a593Smuzhiyun} 2083*4882a593Smuzhiyun 2084*4882a593Smuzhiyun@unpublished{LaiJiangshan2008NewClassicAlgorithm 2085*4882a593Smuzhiyun,Author="Lai Jiangshan" 2086*4882a593Smuzhiyun,Title="[{RFC}][{PATCH}] rcu classic: new algorithm for callbacks-processing" 2087*4882a593Smuzhiyun,month="June" 2088*4882a593Smuzhiyun,day="3" 2089*4882a593Smuzhiyun,year="2008" 2090*4882a593Smuzhiyun,note="Available: 2091*4882a593Smuzhiyun\url{http://lkml.org/lkml/2008/6/2/539} 2092*4882a593Smuzhiyun[Viewed December 10, 2008]" 2093*4882a593Smuzhiyun,annotation={ 2094*4882a593Smuzhiyun Updated RCU classic algorithm. Introduced multi-tailed list 2095*4882a593Smuzhiyun for RCU callbacks and also pulling common code into 2096*4882a593Smuzhiyun __call_rcu(). 2097*4882a593Smuzhiyun} 2098*4882a593Smuzhiyun} 2099*4882a593Smuzhiyun 2100*4882a593Smuzhiyun@article{PaulEMcKenney2008RCUOSR 2101*4882a593Smuzhiyun,author="Paul E. McKenney and Jonathan Walpole" 2102*4882a593Smuzhiyun,title="Introducing technology into the {Linux} kernel: a case study" 2103*4882a593Smuzhiyun,Year="2008" 2104*4882a593Smuzhiyun,journal="SIGOPS Oper. Syst. Rev." 2105*4882a593Smuzhiyun,volume="42" 2106*4882a593Smuzhiyun,number="5" 2107*4882a593Smuzhiyun,pages="4--17" 2108*4882a593Smuzhiyun,issn="0163-5980" 2109*4882a593Smuzhiyun,doi={http://doi.acm.org/10.1145/1400097.1400099} 2110*4882a593Smuzhiyun,publisher="ACM" 2111*4882a593Smuzhiyun,address="New York, NY, USA" 2112*4882a593Smuzhiyun,annotation={ 2113*4882a593Smuzhiyun Linux changed RCU to a far greater degree than RCU has changed Linux. 2114*4882a593Smuzhiyun http://portal.acm.org/citation.cfm?doid=1400097.1400099 2115*4882a593Smuzhiyun} 2116*4882a593Smuzhiyun} 2117*4882a593Smuzhiyun 2118*4882a593Smuzhiyun@unpublished{ManfredSpraul2008StateMachineRCU 2119*4882a593Smuzhiyun,Author="Manfred Spraul" 2120*4882a593Smuzhiyun,Title="[{RFC}, {PATCH}] state machine based rcu" 2121*4882a593Smuzhiyun,month="August" 2122*4882a593Smuzhiyun,day="21" 2123*4882a593Smuzhiyun,year="2008" 2124*4882a593Smuzhiyun,note="Available: 2125*4882a593Smuzhiyun\url{http://lkml.org/lkml/2008/8/21/336} 2126*4882a593Smuzhiyun[Viewed December 8, 2008]" 2127*4882a593Smuzhiyun,annotation={ 2128*4882a593Smuzhiyun State-based RCU. One key thing that this patch does is to 2129*4882a593Smuzhiyun separate the dynticks handling of NMIs and IRQs. 2130*4882a593Smuzhiyun} 2131*4882a593Smuzhiyun} 2132*4882a593Smuzhiyun 2133*4882a593Smuzhiyun@unpublished{ManfredSpraul2008dyntickIRQNMI 2134*4882a593Smuzhiyun,Author="Manfred Spraul" 2135*4882a593Smuzhiyun,Title="Re: [{RFC}, {PATCH}] v4 scalable classic {RCU} implementation" 2136*4882a593Smuzhiyun,month="September" 2137*4882a593Smuzhiyun,day="6" 2138*4882a593Smuzhiyun,year="2008" 2139*4882a593Smuzhiyun,note="Available: 2140*4882a593Smuzhiyun\url{http://lkml.org/lkml/2008/9/6/86} 2141*4882a593Smuzhiyun[Viewed December 8, 2008]" 2142*4882a593Smuzhiyun,annotation={ 2143*4882a593Smuzhiyun Manfred notes a fix required to my attempt to separate irq 2144*4882a593Smuzhiyun and NMI processing for hierarchical RCU's dynticks interface. 2145*4882a593Smuzhiyun} 2146*4882a593Smuzhiyun} 2147*4882a593Smuzhiyun 2148*4882a593Smuzhiyun# Was PaulEMcKenney2011cyclicRCU 2149*4882a593Smuzhiyun@techreport{PaulEMcKenney2008cyclicRCU 2150*4882a593Smuzhiyun,author="Paul E. McKenney" 2151*4882a593Smuzhiyun,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update" 2152*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 2153*4882a593Smuzhiyun,address="Washington, DC" 2154*4882a593Smuzhiyun,year="2008" 2155*4882a593Smuzhiyun,number="US Patent 7,426,511" 2156*4882a593Smuzhiyun,month="September" 2157*4882a593Smuzhiyun,pages="23" 2158*4882a593Smuzhiyun,annotation={ 2159*4882a593Smuzhiyun Maintains an additional level of indirection to allow 2160*4882a593Smuzhiyun readers to confine themselves to the desired snapshot of the 2161*4882a593Smuzhiyun data structure. Only permits one update at a time. 2162*4882a593Smuzhiyun} 2163*4882a593Smuzhiyun} 2164*4882a593Smuzhiyun 2165*4882a593Smuzhiyun@unpublished{PaulEMcKenney2008HierarchicalRCU 2166*4882a593Smuzhiyun,Author="Paul E. McKenney" 2167*4882a593Smuzhiyun,Title="Hierarchical {RCU}" 2168*4882a593Smuzhiyun,month="November" 2169*4882a593Smuzhiyun,day="3" 2170*4882a593Smuzhiyun,year="2008" 2171*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/305782/}" 2172*4882a593Smuzhiyun,annotation={ 2173*4882a593Smuzhiyun RCU with combining-tree-based grace-period detection, 2174*4882a593Smuzhiyun permitting it to handle thousands of CPUs. 2175*4882a593Smuzhiyun [Viewed November 6, 2008] 2176*4882a593Smuzhiyun} 2177*4882a593Smuzhiyun} 2178*4882a593Smuzhiyun 2179*4882a593Smuzhiyun@unpublished{PaulEMcKenney2009BloatwatchRCU 2180*4882a593Smuzhiyun,Author="Paul E. McKenney" 2181*4882a593Smuzhiyun,Title="Re: [PATCH fyi] RCU: the bloatwatch edition" 2182*4882a593Smuzhiyun,month="January" 2183*4882a593Smuzhiyun,day="14" 2184*4882a593Smuzhiyun,year="2009" 2185*4882a593Smuzhiyun,note="Available: 2186*4882a593Smuzhiyun\url{http://lkml.org/lkml/2009/1/14/449} 2187*4882a593Smuzhiyun[Viewed January 15, 2009]" 2188*4882a593Smuzhiyun,annotation={ 2189*4882a593Smuzhiyun Small-footprint implementation of RCU for uniprocessor 2190*4882a593Smuzhiyun embedded applications -- and also for exposition purposes. 2191*4882a593Smuzhiyun} 2192*4882a593Smuzhiyun} 2193*4882a593Smuzhiyun 2194*4882a593Smuzhiyun@conference{PaulEMcKenney2009MaliciousURCU 2195*4882a593Smuzhiyun,Author="Paul E. McKenney" 2196*4882a593Smuzhiyun,Title="Using a Malicious User-Level {RCU} to Torture {RCU}-Based Algorithms" 2197*4882a593Smuzhiyun,Booktitle="linux.conf.au 2009" 2198*4882a593Smuzhiyun,month="January" 2199*4882a593Smuzhiyun,year="2009" 2200*4882a593Smuzhiyun,address="Hobart, Australia" 2201*4882a593Smuzhiyun,note="Available: 2202*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf} 2203*4882a593Smuzhiyun[Viewed February 2, 2009]" 2204*4882a593Smuzhiyun,annotation={ 2205*4882a593Smuzhiyun Realtime RCU and torture-testing RCU uses. 2206*4882a593Smuzhiyun} 2207*4882a593Smuzhiyun} 2208*4882a593Smuzhiyun 2209*4882a593Smuzhiyun@unpublished{MathieuDesnoyers2009URCU 2210*4882a593Smuzhiyun,Author="Mathieu Desnoyers" 2211*4882a593Smuzhiyun,Title="[{RFC} git tree] Userspace {RCU} (urcu) for {Linux}" 2212*4882a593Smuzhiyun,month="February" 2213*4882a593Smuzhiyun,day="5" 2214*4882a593Smuzhiyun,year="2009" 2215*4882a593Smuzhiyun,note="\url{http://lttng.org/urcu}" 2216*4882a593Smuzhiyun,annotation={ 2217*4882a593Smuzhiyun Mathieu Desnoyers's user-space RCU implementation. 2218*4882a593Smuzhiyun git://lttng.org/userspace-rcu.git 2219*4882a593Smuzhiyun http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git 2220*4882a593Smuzhiyun http://lttng.org/urcu 2221*4882a593Smuzhiyun http://lkml.org/lkml/2009/2/5/572 2222*4882a593Smuzhiyun} 2223*4882a593Smuzhiyun} 2224*4882a593Smuzhiyun 2225*4882a593Smuzhiyun@unpublished{PaulEMcKenney2009LWNBloatWatchRCU 2226*4882a593Smuzhiyun,Author="Paul E. McKenney" 2227*4882a593Smuzhiyun,Title="{RCU}: The {Bloatwatch} Edition" 2228*4882a593Smuzhiyun,month="March" 2229*4882a593Smuzhiyun,day="17" 2230*4882a593Smuzhiyun,year="2009" 2231*4882a593Smuzhiyun,note="Available: 2232*4882a593Smuzhiyun\url{http://lwn.net/Articles/323929/} 2233*4882a593Smuzhiyun[Viewed March 20, 2009]" 2234*4882a593Smuzhiyun,annotation={ 2235*4882a593Smuzhiyun Uniprocessor assumptions allow simplified RCU implementation. 2236*4882a593Smuzhiyun} 2237*4882a593Smuzhiyun} 2238*4882a593Smuzhiyun 2239*4882a593Smuzhiyun@unpublished{EvgeniyPolyakov2009EllipticsNetwork 2240*4882a593Smuzhiyun,Author="Evgeniy Polyakov" 2241*4882a593Smuzhiyun,Title="The Elliptics Network" 2242*4882a593Smuzhiyun,month="April" 2243*4882a593Smuzhiyun,day="17" 2244*4882a593Smuzhiyun,year="2009" 2245*4882a593Smuzhiyun,note="Available: 2246*4882a593Smuzhiyun\url{http://www.ioremap.net/projects/elliptics} 2247*4882a593Smuzhiyun[Viewed April 30, 2009]" 2248*4882a593Smuzhiyun,annotation={ 2249*4882a593Smuzhiyun Distributed hash table with transactions, using elliptic 2250*4882a593Smuzhiyun hash functions to distribute data. 2251*4882a593Smuzhiyun} 2252*4882a593Smuzhiyun} 2253*4882a593Smuzhiyun 2254*4882a593Smuzhiyun@unpublished{PaulEMcKenney2009expeditedRCU 2255*4882a593Smuzhiyun,Author="Paul E. McKenney" 2256*4882a593Smuzhiyun,Title="[{PATCH} -tip 0/3] expedited 'big hammer' {RCU} grace periods" 2257*4882a593Smuzhiyun,month="June" 2258*4882a593Smuzhiyun,day="25" 2259*4882a593Smuzhiyun,year="2009" 2260*4882a593Smuzhiyun,note="Available: 2261*4882a593Smuzhiyun\url{http://lkml.org/lkml/2009/6/25/306} 2262*4882a593Smuzhiyun[Viewed August 16, 2009]" 2263*4882a593Smuzhiyun,annotation={ 2264*4882a593Smuzhiyun First posting of expedited RCU to be accepted into -tip. 2265*4882a593Smuzhiyun} 2266*4882a593Smuzhiyun} 2267*4882a593Smuzhiyun 2268*4882a593Smuzhiyun@unpublished{PaulEMcKenney2009fastRTRCU 2269*4882a593Smuzhiyun,Author="Paul E. McKenney" 2270*4882a593Smuzhiyun,Title="[{PATCH} {RFC} -tip 0/4] {RCU} cleanups and simplified preemptable {RCU}" 2271*4882a593Smuzhiyun,month="July" 2272*4882a593Smuzhiyun,day="23" 2273*4882a593Smuzhiyun,year="2009" 2274*4882a593Smuzhiyun,note="Available: 2275*4882a593Smuzhiyun\url{http://lkml.org/lkml/2009/7/23/294} 2276*4882a593Smuzhiyun[Viewed August 15, 2009]" 2277*4882a593Smuzhiyun,annotation={ 2278*4882a593Smuzhiyun First posting of simple and fast preemptable RCU. 2279*4882a593Smuzhiyun} 2280*4882a593Smuzhiyun} 2281*4882a593Smuzhiyun 2282*4882a593Smuzhiyun@unpublished{JoshTriplett2009RPHash 2283*4882a593Smuzhiyun,Author="Josh Triplett" 2284*4882a593Smuzhiyun,Title="Scalable concurrent hash tables via relativistic programming" 2285*4882a593Smuzhiyun,month="September" 2286*4882a593Smuzhiyun,year="2009" 2287*4882a593Smuzhiyun,note="Linux Plumbers Conference presentation" 2288*4882a593Smuzhiyun,annotation={ 2289*4882a593Smuzhiyun RP fun with hash tables. 2290*4882a593Smuzhiyun Superseded by JoshTriplett2010RPHash 2291*4882a593Smuzhiyun} 2292*4882a593Smuzhiyun} 2293*4882a593Smuzhiyun 2294*4882a593Smuzhiyun@phdthesis{MathieuDesnoyersPhD 2295*4882a593Smuzhiyun, title = "Low-Impact Operating System Tracing" 2296*4882a593Smuzhiyun, author = "Mathieu Desnoyers" 2297*4882a593Smuzhiyun, school = "Ecole Polytechnique de Montr\'{e}al" 2298*4882a593Smuzhiyun, month = "December" 2299*4882a593Smuzhiyun, year = 2009 2300*4882a593Smuzhiyun,note="Available: 2301*4882a593Smuzhiyun\url{http://www.lttng.org/pub/thesis/desnoyers-dissertation-2009-12.pdf} 2302*4882a593Smuzhiyun[Viewed December 9, 2009]" 2303*4882a593Smuzhiyun,annotation={ 2304*4882a593Smuzhiyun Chapter 6 (page 97) covers user-level RCU. 2305*4882a593Smuzhiyun} 2306*4882a593Smuzhiyun} 2307*4882a593Smuzhiyun 2308*4882a593Smuzhiyun@unpublished{RelativisticProgrammingWiki 2309*4882a593Smuzhiyun,Author="Josh Triplett and Paul E. McKenney and Jonathan Walpole" 2310*4882a593Smuzhiyun,Title="Relativistic Programming" 2311*4882a593Smuzhiyun,month="September" 2312*4882a593Smuzhiyun,year="2009" 2313*4882a593Smuzhiyun,note="Available: 2314*4882a593Smuzhiyun\url{http://wiki.cs.pdx.edu/rp/} 2315*4882a593Smuzhiyun[Viewed December 9, 2009]" 2316*4882a593Smuzhiyun,annotation={ 2317*4882a593Smuzhiyun Main Relativistic Programming Wiki. 2318*4882a593Smuzhiyun} 2319*4882a593Smuzhiyun} 2320*4882a593Smuzhiyun 2321*4882a593Smuzhiyun@conference{PaulEMcKenney2009DeterministicRCU 2322*4882a593Smuzhiyun,Author="Paul E. McKenney" 2323*4882a593Smuzhiyun,Title="Deterministic Synchronization in Multicore Systems: the Role of {RCU}" 2324*4882a593Smuzhiyun,Booktitle="Eleventh Real Time Linux Workshop" 2325*4882a593Smuzhiyun,month="September" 2326*4882a593Smuzhiyun,year="2009" 2327*4882a593Smuzhiyun,address="Dresden, Germany" 2328*4882a593Smuzhiyun,note="Available: 2329*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/realtime/paper/DetSyncRCU.2009.08.18a.pdf} 2330*4882a593Smuzhiyun[Viewed January 14, 2009]" 2331*4882a593Smuzhiyun} 2332*4882a593Smuzhiyun 2333*4882a593Smuzhiyun@unpublished{PaulEMcKenney2009HuntingHeisenbugs 2334*4882a593Smuzhiyun,Author="Paul E. McKenney" 2335*4882a593Smuzhiyun,Title="Hunting Heisenbugs" 2336*4882a593Smuzhiyun,month="November" 2337*4882a593Smuzhiyun,year="2009" 2338*4882a593Smuzhiyun,day="1" 2339*4882a593Smuzhiyun,note="Available: 2340*4882a593Smuzhiyun\url{http://paulmck.livejournal.com/14639.html} 2341*4882a593Smuzhiyun[Viewed June 4, 2010]" 2342*4882a593Smuzhiyun,annotation={ 2343*4882a593Smuzhiyun Day-one bug in Tree RCU that took forever to track down. 2344*4882a593Smuzhiyun} 2345*4882a593Smuzhiyun} 2346*4882a593Smuzhiyun 2347*4882a593Smuzhiyun@unpublished{MathieuDesnoyers2009defer:rcu 2348*4882a593Smuzhiyun,Author="Mathieu Desnoyers" 2349*4882a593Smuzhiyun,Title="Kernel RCU: shrink the size of the struct rcu\_head" 2350*4882a593Smuzhiyun,month="December" 2351*4882a593Smuzhiyun,year="2009" 2352*4882a593Smuzhiyun,note="Available: 2353*4882a593Smuzhiyun\url{http://lkml.org/lkml/2009/10/18/129} 2354*4882a593Smuzhiyun[Viewed December 29, 2009]" 2355*4882a593Smuzhiyun,annotation={ 2356*4882a593Smuzhiyun Mathieu proposed defer_rcu() with fixed-size per-thread pool 2357*4882a593Smuzhiyun of RCU callbacks. 2358*4882a593Smuzhiyun} 2359*4882a593Smuzhiyun} 2360*4882a593Smuzhiyun 2361*4882a593Smuzhiyun@unpublished{MathieuDesnoyers2009VerifPrePub 2362*4882a593Smuzhiyun,Author="Mathieu Desnoyers and Paul E. McKenney and Michel R. Dagenais" 2363*4882a593Smuzhiyun,Title="Multi-Core Systems Modeling for Formal Verification of Parallel Algorithms" 2364*4882a593Smuzhiyun,month="December" 2365*4882a593Smuzhiyun,year="2009" 2366*4882a593Smuzhiyun,note="Submitted to IEEE TPDS" 2367*4882a593Smuzhiyun,annotation={ 2368*4882a593Smuzhiyun OOMem model for Mathieu's user-level RCU mechanical proof of 2369*4882a593Smuzhiyun correctness. 2370*4882a593Smuzhiyun} 2371*4882a593Smuzhiyun} 2372*4882a593Smuzhiyun 2373*4882a593Smuzhiyun@unpublished{MathieuDesnoyers2009URCUPrePub 2374*4882a593Smuzhiyun,Author="Mathieu Desnoyers and Paul E. McKenney and Alan Stern and Michel R. Dagenais and Jonathan Walpole" 2375*4882a593Smuzhiyun,Title="User-Level Implementations of Read-Copy Update" 2376*4882a593Smuzhiyun,month="December" 2377*4882a593Smuzhiyun,year="2010" 2378*4882a593Smuzhiyun,url={\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html}} 2379*4882a593Smuzhiyun,annotation={ 2380*4882a593Smuzhiyun RCU overview, desiderata, semi-formal semantics, user-level RCU 2381*4882a593Smuzhiyun usage scenarios, three classes of RCU implementation, wait-free 2382*4882a593Smuzhiyun RCU updates, RCU grace-period batching, update overhead, 2383*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf 2384*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf 2385*4882a593Smuzhiyun Superseded by MathieuDesnoyers2012URCU. 2386*4882a593Smuzhiyun} 2387*4882a593Smuzhiyun} 2388*4882a593Smuzhiyun 2389*4882a593Smuzhiyun@inproceedings{HariKannan2009DynamicAnalysisRCU 2390*4882a593Smuzhiyun,author = {Kannan, Hari} 2391*4882a593Smuzhiyun,title = {Ordering decoupled metadata accesses in multiprocessors} 2392*4882a593Smuzhiyun,booktitle = {MICRO 42: Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture} 2393*4882a593Smuzhiyun,year = {2009} 2394*4882a593Smuzhiyun,isbn = {978-1-60558-798-1} 2395*4882a593Smuzhiyun,pages = {381--390} 2396*4882a593Smuzhiyun,location = {New York, New York} 2397*4882a593Smuzhiyun,doi = {http://doi.acm.org/10.1145/1669112.1669161} 2398*4882a593Smuzhiyun,publisher = {ACM} 2399*4882a593Smuzhiyun,address = {New York, NY, USA} 2400*4882a593Smuzhiyun,annotation={ 2401*4882a593Smuzhiyun Uses RCU to protect metadata used in dynamic analysis. 2402*4882a593Smuzhiyun} 2403*4882a593Smuzhiyun} 2404*4882a593Smuzhiyun 2405*4882a593Smuzhiyun@conference{PaulEMcKenney2010SimpleOptRCU 2406*4882a593Smuzhiyun,Author="Paul E. McKenney" 2407*4882a593Smuzhiyun,Title="Simplicity Through Optimization" 2408*4882a593Smuzhiyun,Booktitle="linux.conf.au 2010" 2409*4882a593Smuzhiyun,month="January" 2410*4882a593Smuzhiyun,year="2010" 2411*4882a593Smuzhiyun,address="Wellington, New Zealand" 2412*4882a593Smuzhiyun,note="Available: 2413*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf} 2414*4882a593Smuzhiyun[Viewed October 10, 2010]" 2415*4882a593Smuzhiyun,annotation={ 2416*4882a593Smuzhiyun TREE_PREEMPT_RCU optimizations greatly simplified the old 2417*4882a593Smuzhiyun PREEMPT_RCU implementation. 2418*4882a593Smuzhiyun} 2419*4882a593Smuzhiyun} 2420*4882a593Smuzhiyun 2421*4882a593Smuzhiyun@unpublished{PaulEMcKenney2010LockdepRCU 2422*4882a593Smuzhiyun,Author="Paul E. McKenney" 2423*4882a593Smuzhiyun,Title="Lockdep-{RCU}" 2424*4882a593Smuzhiyun,month="February" 2425*4882a593Smuzhiyun,year="2010" 2426*4882a593Smuzhiyun,day="1" 2427*4882a593Smuzhiyun,note="\url{https://lwn.net/Articles/371986/}" 2428*4882a593Smuzhiyun,annotation={ 2429*4882a593Smuzhiyun CONFIG_PROVE_RCU, or at least an early version. 2430*4882a593Smuzhiyun [Viewed June 4, 2010] 2431*4882a593Smuzhiyun} 2432*4882a593Smuzhiyun} 2433*4882a593Smuzhiyun 2434*4882a593Smuzhiyun@unpublished{AviKivity2010KVM2RCU 2435*4882a593Smuzhiyun,Author="Avi Kivity" 2436*4882a593Smuzhiyun,Title="[{PATCH} 37/40] {KVM}: Bump maximum vcpu count to 64" 2437*4882a593Smuzhiyun,month="February" 2438*4882a593Smuzhiyun,year="2010" 2439*4882a593Smuzhiyun,note="Available: 2440*4882a593Smuzhiyun\url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html} 2441*4882a593Smuzhiyun[Viewed March 20, 2010]" 2442*4882a593Smuzhiyun,annotation={ 2443*4882a593Smuzhiyun Use of RCU permits KVM to increase the size of guest OSes from 2444*4882a593Smuzhiyun 16 CPUs to 64 CPUs. 2445*4882a593Smuzhiyun} 2446*4882a593Smuzhiyun} 2447*4882a593Smuzhiyun 2448*4882a593Smuzhiyun@unpublished{HerbertXu2010RCUResizeHash 2449*4882a593Smuzhiyun,Author="Herbert Xu" 2450*4882a593Smuzhiyun,Title="bridge: Add core IGMP snooping support" 2451*4882a593Smuzhiyun,month="February" 2452*4882a593Smuzhiyun,year="2010" 2453*4882a593Smuzhiyun,note="Available: 2454*4882a593Smuzhiyun\url{http://thread.gmane.org/gmane.linux.network/153338} 2455*4882a593Smuzhiyun[Viewed June 9, 2014]" 2456*4882a593Smuzhiyun,annotation={ 2457*4882a593Smuzhiyun Use a pair of list_head structures to support RCU-protected 2458*4882a593Smuzhiyun resizable hash tables. 2459*4882a593Smuzhiyun} 2460*4882a593Smuzhiyun} 2461*4882a593Smuzhiyun 2462*4882a593Smuzhiyun@mastersthesis{AbhinavDuggal2010Masters 2463*4882a593Smuzhiyun,author="Abhinav Duggal" 2464*4882a593Smuzhiyun,title="Stopping Data Races Using Redflag" 2465*4882a593Smuzhiyun,school="Stony Brook University" 2466*4882a593Smuzhiyun,year="2010" 2467*4882a593Smuzhiyun,annotation={ 2468*4882a593Smuzhiyun Data-race detector incorporating RCU. 2469*4882a593Smuzhiyun http://www.filesystems.org/docs/abhinav-thesis/abhinav_thesis.pdf 2470*4882a593Smuzhiyun} 2471*4882a593Smuzhiyun} 2472*4882a593Smuzhiyun 2473*4882a593Smuzhiyun@article{JoshTriplett2010RPHash 2474*4882a593Smuzhiyun,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole" 2475*4882a593Smuzhiyun,title="Scalable Concurrent Hash Tables via Relativistic Programming" 2476*4882a593Smuzhiyun,journal="ACM Operating Systems Review" 2477*4882a593Smuzhiyun,year=2010 2478*4882a593Smuzhiyun,volume=44 2479*4882a593Smuzhiyun,number=3 2480*4882a593Smuzhiyun,month="July" 2481*4882a593Smuzhiyun,annotation={ 2482*4882a593Smuzhiyun RP fun with hash tables. 2483*4882a593Smuzhiyun http://portal.acm.org/citation.cfm?id=1842733.1842750 2484*4882a593Smuzhiyun} 2485*4882a593Smuzhiyun} 2486*4882a593Smuzhiyun 2487*4882a593Smuzhiyun@unpublished{PaulEMcKenney2010RCUAPI 2488*4882a593Smuzhiyun,Author="Paul E. McKenney" 2489*4882a593Smuzhiyun,Title="The {RCU} {API}, 2010 Edition" 2490*4882a593Smuzhiyun,month="December" 2491*4882a593Smuzhiyun,day="8" 2492*4882a593Smuzhiyun,year="2010" 2493*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/418853/}" 2494*4882a593Smuzhiyun,annotation={ 2495*4882a593Smuzhiyun Includes updated software-engineering features. 2496*4882a593Smuzhiyun [Viewed December 8, 2010] 2497*4882a593Smuzhiyun} 2498*4882a593Smuzhiyun} 2499*4882a593Smuzhiyun 2500*4882a593Smuzhiyun@mastersthesis{AndrejPodzimek2010masters 2501*4882a593Smuzhiyun,author="Andrej Podzimek" 2502*4882a593Smuzhiyun,title="Read-Copy-Update for OpenSolaris" 2503*4882a593Smuzhiyun,school="Charles University in Prague" 2504*4882a593Smuzhiyun,year="2010" 2505*4882a593Smuzhiyun,note="Available: 2506*4882a593Smuzhiyun\url{https://andrej.podzimek.org/thesis.pdf} 2507*4882a593Smuzhiyun[Viewed January 31, 2011]" 2508*4882a593Smuzhiyun,annotation={ 2509*4882a593Smuzhiyun Reviews RCU implementations and creates a few for OpenSolaris. 2510*4882a593Smuzhiyun Drives quiescent-state detection from RCU read-side primitives, 2511*4882a593Smuzhiyun in a manner roughly similar to that of Jim Houston. 2512*4882a593Smuzhiyun} 2513*4882a593Smuzhiyun} 2514*4882a593Smuzhiyun 2515*4882a593Smuzhiyun@unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS 2516*4882a593Smuzhiyun,Author="Linus Torvalds" 2517*4882a593Smuzhiyun,Title="Linux 2.6.38-rc1" 2518*4882a593Smuzhiyun,month="January" 2519*4882a593Smuzhiyun,year="2011" 2520*4882a593Smuzhiyun,note="Available: 2521*4882a593Smuzhiyun\url{https://lkml.org/lkml/2011/1/18/322} 2522*4882a593Smuzhiyun[Viewed March 4, 2011]" 2523*4882a593Smuzhiyun,annotation={ 2524*4882a593Smuzhiyun "The RCU-based name lookup is at the other end of the spectrum - the 2525*4882a593Smuzhiyun absolute anti-gimmick. It's some seriously good stuff, and gets rid of 2526*4882a593Smuzhiyun the last main global lock that really tends to hurt some kernel loads. 2527*4882a593Smuzhiyun The dentry lock is no longer a big serializing issue. What's really 2528*4882a593Smuzhiyun nice about it is that it actually improves performance a lot even for 2529*4882a593Smuzhiyun single-threaded loads (on an SMP kernel), because it gets rid of some 2530*4882a593Smuzhiyun of the most expensive parts of path component lookup, which was the 2531*4882a593Smuzhiyun d_lock on every component lookup. So I'm seeing improvements of 30-50% 2532*4882a593Smuzhiyun on some seriously pathname-lookup intensive loads." 2533*4882a593Smuzhiyun} 2534*4882a593Smuzhiyun} 2535*4882a593Smuzhiyun 2536*4882a593Smuzhiyun@techreport{JoshTriplett2011RPScalableCorrectOrdering 2537*4882a593Smuzhiyun,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole} 2538*4882a593Smuzhiyun,title = {Scalable Correct Memory Ordering via Relativistic Programming} 2539*4882a593Smuzhiyun,year = {2011} 2540*4882a593Smuzhiyun,number = {11-03} 2541*4882a593Smuzhiyun,institution = {Portland State University} 2542*4882a593Smuzhiyun,note = {\url{http://www.cs.pdx.edu/pdfs/tr1103.pdf}} 2543*4882a593Smuzhiyun} 2544*4882a593Smuzhiyun 2545*4882a593Smuzhiyun@inproceedings{PhilHoward2011RCUTMRBTree 2546*4882a593Smuzhiyun,author = {Philip W. Howard and Jonathan Walpole} 2547*4882a593Smuzhiyun,title = {A Relativistic Enhancement to Software Transactional Memory} 2548*4882a593Smuzhiyun,booktitle = {Proceedings of the 3rd USENIX conference on Hot topics in parallelism} 2549*4882a593Smuzhiyun,series = {HotPar'11} 2550*4882a593Smuzhiyun,year = {2011} 2551*4882a593Smuzhiyun,location = {Berkeley, CA} 2552*4882a593Smuzhiyun,pages = {1--6} 2553*4882a593Smuzhiyun,numpages = {6} 2554*4882a593Smuzhiyun,url = {http://www.usenix.org/event/hotpar11/tech/final_files/Howard.pdf} 2555*4882a593Smuzhiyun,publisher = {USENIX Association} 2556*4882a593Smuzhiyun,address = {Berkeley, CA, USA} 2557*4882a593Smuzhiyun} 2558*4882a593Smuzhiyun 2559*4882a593Smuzhiyun@techreport{PaulEMcKenney2011cyclicparallelRCU 2560*4882a593Smuzhiyun,author="Paul E. McKenney and Jonathan Walpole" 2561*4882a593Smuzhiyun,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update and Parallel Updates" 2562*4882a593Smuzhiyun,institution="US Patent and Trademark Office" 2563*4882a593Smuzhiyun,address="Washington, DC" 2564*4882a593Smuzhiyun,year="2011" 2565*4882a593Smuzhiyun,number="US Patent 7,953,778" 2566*4882a593Smuzhiyun,month="May" 2567*4882a593Smuzhiyun,pages="34" 2568*4882a593Smuzhiyun,annotation={ 2569*4882a593Smuzhiyun Maintains an array of generation numbers to track in-flight 2570*4882a593Smuzhiyun updates and keeps an additional level of indirection to allow 2571*4882a593Smuzhiyun readers to confine themselves to the desired snapshot of the 2572*4882a593Smuzhiyun data structure. 2573*4882a593Smuzhiyun} 2574*4882a593Smuzhiyun} 2575*4882a593Smuzhiyun 2576*4882a593Smuzhiyun@inproceedings{Triplett:2011:RPHash 2577*4882a593Smuzhiyun,author = {Triplett, Josh and McKenney, Paul E. and Walpole, Jonathan} 2578*4882a593Smuzhiyun,title = {Resizable, Scalable, Concurrent Hash Tables via Relativistic Programming} 2579*4882a593Smuzhiyun,booktitle = {Proceedings of the 2011 USENIX Annual Technical Conference} 2580*4882a593Smuzhiyun,month = {June} 2581*4882a593Smuzhiyun,year = {2011} 2582*4882a593Smuzhiyun,pages = {145--158} 2583*4882a593Smuzhiyun,numpages = {14} 2584*4882a593Smuzhiyun,url={http://www.usenix.org/event/atc11/tech/final_files/Triplett.pdf} 2585*4882a593Smuzhiyun,publisher = {The USENIX Association} 2586*4882a593Smuzhiyun,address = {Portland, OR USA} 2587*4882a593Smuzhiyun} 2588*4882a593Smuzhiyun 2589*4882a593Smuzhiyun@unpublished{PaulEMcKenney2011RCU3.0trainwreck 2590*4882a593Smuzhiyun,Author="Paul E. McKenney" 2591*4882a593Smuzhiyun,Title="3.0 and {RCU:} what went wrong" 2592*4882a593Smuzhiyun,month="July" 2593*4882a593Smuzhiyun,day="27" 2594*4882a593Smuzhiyun,year="2011" 2595*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/453002/}" 2596*4882a593Smuzhiyun,annotation={ 2597*4882a593Smuzhiyun Analysis of the RCU trainwreck in Linux kernel 3.0. 2598*4882a593Smuzhiyun [Viewed July 27, 2011] 2599*4882a593Smuzhiyun} 2600*4882a593Smuzhiyun} 2601*4882a593Smuzhiyun 2602*4882a593Smuzhiyun@unpublished{NeilBrown2011MeetTheLockers 2603*4882a593Smuzhiyun,Author="Neil Brown" 2604*4882a593Smuzhiyun,Title="Meet the {Lockers}" 2605*4882a593Smuzhiyun,month="August" 2606*4882a593Smuzhiyun,day="3" 2607*4882a593Smuzhiyun,year="2011" 2608*4882a593Smuzhiyun,note="Available: 2609*4882a593Smuzhiyun\url{http://lwn.net/Articles/453685/} 2610*4882a593Smuzhiyun[Viewed September 2, 2011]" 2611*4882a593Smuzhiyun,annotation={ 2612*4882a593Smuzhiyun The Locker family as an analogy for locking, reference counting, 2613*4882a593Smuzhiyun RCU, and seqlock. 2614*4882a593Smuzhiyun} 2615*4882a593Smuzhiyun} 2616*4882a593Smuzhiyun 2617*4882a593Smuzhiyun@inproceedings{Seyster:2011:RFA:2075416.2075425 2618*4882a593Smuzhiyun,author = {Seyster, Justin and Radhakrishnan, Prabakar and Katoch, Samriti and Duggal, Abhinav and Stoller, Scott D. and Zadok, Erez} 2619*4882a593Smuzhiyun,title = {Redflag: a framework for analysis of Kernel-level concurrency} 2620*4882a593Smuzhiyun,booktitle = {Proceedings of the 11th international conference on Algorithms and architectures for parallel processing - Volume Part I} 2621*4882a593Smuzhiyun,series = {ICA3PP'11} 2622*4882a593Smuzhiyun,year = {2011} 2623*4882a593Smuzhiyun,isbn = {978-3-642-24649-4} 2624*4882a593Smuzhiyun,location = {Melbourne, Australia} 2625*4882a593Smuzhiyun,pages = {66--79} 2626*4882a593Smuzhiyun,numpages = {14} 2627*4882a593Smuzhiyun,url = {http://dl.acm.org/citation.cfm?id=2075416.2075425} 2628*4882a593Smuzhiyun,acmid = {2075425} 2629*4882a593Smuzhiyun,publisher = {Springer-Verlag} 2630*4882a593Smuzhiyun,address = {Berlin, Heidelberg} 2631*4882a593Smuzhiyun} 2632*4882a593Smuzhiyun 2633*4882a593Smuzhiyun@phdthesis{JoshTriplettPhD 2634*4882a593Smuzhiyun,author="Josh Triplett" 2635*4882a593Smuzhiyun,title="Relativistic Causal Ordering: A Memory Model for Scalable Concurrent Data Structures" 2636*4882a593Smuzhiyun,school="Portland State University" 2637*4882a593Smuzhiyun,year="2012" 2638*4882a593Smuzhiyun,annotation={ 2639*4882a593Smuzhiyun RCU-protected hash tables, barriers vs. read-side traversal order. 2640*4882a593Smuzhiyun . 2641*4882a593Smuzhiyun If the updater is making changes in the opposite direction from 2642*4882a593Smuzhiyun the read-side traveral order, the updater need only execute a 2643*4882a593Smuzhiyun memory-barrier instruction, but if in the same direction, the 2644*4882a593Smuzhiyun updater needs to wait for a grace period between the individual 2645*4882a593Smuzhiyun updates. 2646*4882a593Smuzhiyun} 2647*4882a593Smuzhiyun} 2648*4882a593Smuzhiyun 2649*4882a593Smuzhiyun@article{MathieuDesnoyers2012URCU 2650*4882a593Smuzhiyun,Author="Mathieu Desnoyers and Paul E. McKenney and Alan Stern and Michel R. Dagenais and Jonathan Walpole" 2651*4882a593Smuzhiyun,Title="User-Level Implementations of Read-Copy Update" 2652*4882a593Smuzhiyun,journal="IEEE Transactions on Parallel and Distributed Systems" 2653*4882a593Smuzhiyun,volume={23} 2654*4882a593Smuzhiyun,year="2012" 2655*4882a593Smuzhiyun,issn="1045-9219" 2656*4882a593Smuzhiyun,pages="375-382" 2657*4882a593Smuzhiyun,doi="http://doi.ieeecomputersociety.org/10.1109/TPDS.2011.159" 2658*4882a593Smuzhiyun,publisher="IEEE Computer Society" 2659*4882a593Smuzhiyun,address="Los Alamitos, CA, USA" 2660*4882a593Smuzhiyun,annotation={ 2661*4882a593Smuzhiyun RCU overview, desiderata, semi-formal semantics, user-level RCU 2662*4882a593Smuzhiyun usage scenarios, three classes of RCU implementation, wait-free 2663*4882a593Smuzhiyun RCU updates, RCU grace-period batching, update overhead, 2664*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf 2665*4882a593Smuzhiyun http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf 2666*4882a593Smuzhiyun http://www.computer.org/cms/Computer.org/dl/trans/td/2012/02/extras/ttd2012020375s.pdf 2667*4882a593Smuzhiyun} 2668*4882a593Smuzhiyun} 2669*4882a593Smuzhiyun 2670*4882a593Smuzhiyun@inproceedings{AustinClements2012RCULinux:mmapsem 2671*4882a593Smuzhiyun,author = {Austin Clements and Frans Kaashoek and Nickolai Zeldovich} 2672*4882a593Smuzhiyun,title = {Scalable Address Spaces Using {RCU} Balanced Trees} 2673*4882a593Smuzhiyun,booktitle = {Architectural Support for Programming Languages and Operating Systems (ASPLOS 2012)} 2674*4882a593Smuzhiyun,month = {March} 2675*4882a593Smuzhiyun,year = {2012} 2676*4882a593Smuzhiyun,pages = {199--210} 2677*4882a593Smuzhiyun,numpages = {12} 2678*4882a593Smuzhiyun,publisher = {ACM} 2679*4882a593Smuzhiyun,address = {London, UK} 2680*4882a593Smuzhiyun,url="http://people.csail.mit.edu/nickolai/papers/clements-bonsai.pdf" 2681*4882a593Smuzhiyun} 2682*4882a593Smuzhiyun 2683*4882a593Smuzhiyun@unpublished{PaulEMcKenney2012ELCbattery 2684*4882a593Smuzhiyun,Author="Paul E. McKenney" 2685*4882a593Smuzhiyun,Title="Making {RCU} Safe For Battery-Powered Devices" 2686*4882a593Smuzhiyun,month="February" 2687*4882a593Smuzhiyun,day="15" 2688*4882a593Smuzhiyun,year="2012" 2689*4882a593Smuzhiyun,note="Available: 2690*4882a593Smuzhiyun\url{http://www.rdrop.com/users/paulmck/RCU/RCUdynticks.2012.02.15b.pdf} 2691*4882a593Smuzhiyun[Viewed March 1, 2012]" 2692*4882a593Smuzhiyun,annotation={ 2693*4882a593Smuzhiyun RCU_FAST_NO_HZ, round 2. 2694*4882a593Smuzhiyun} 2695*4882a593Smuzhiyun} 2696*4882a593Smuzhiyun 2697*4882a593Smuzhiyun@article{GuillermoVigueras2012RCUCrowd 2698*4882a593Smuzhiyun,author = {Vigueras, Guillermo and Ordu\~{n}a, Juan M. and Lozano, Miguel} 2699*4882a593Smuzhiyun,day = {25} 2700*4882a593Smuzhiyun,doi = {10.1007/s11227-012-0766-x} 2701*4882a593Smuzhiyun,issn = {0920-8542} 2702*4882a593Smuzhiyun,journal = {The Journal of Supercomputing} 2703*4882a593Smuzhiyun,keywords = {linux, simulation} 2704*4882a593Smuzhiyun,month = apr 2705*4882a593Smuzhiyun,posted-at = {2012-05-03 09:12:04} 2706*4882a593Smuzhiyun,priority = {2} 2707*4882a593Smuzhiyun,title = {{A Read-Copy Update based parallel server for distributed crowd simulations}} 2708*4882a593Smuzhiyun,url = {http://dx.doi.org/10.1007/s11227-012-0766-x} 2709*4882a593Smuzhiyun,year = {2012} 2710*4882a593Smuzhiyun} 2711*4882a593Smuzhiyun 2712*4882a593Smuzhiyun 2713*4882a593Smuzhiyun@unpublished{JonCorbet2012ACCESS:ONCE 2714*4882a593Smuzhiyun,Author="Jon Corbet" 2715*4882a593Smuzhiyun,Title="{ACCESS\_ONCE()}" 2716*4882a593Smuzhiyun,month="August" 2717*4882a593Smuzhiyun,day="1" 2718*4882a593Smuzhiyun,year="2012" 2719*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/508991/}" 2720*4882a593Smuzhiyun,annotation={ 2721*4882a593Smuzhiyun A couple of simple specific compiler optimizations that motivate 2722*4882a593Smuzhiyun ACCESS_ONCE(). 2723*4882a593Smuzhiyun} 2724*4882a593Smuzhiyun} 2725*4882a593Smuzhiyun 2726*4882a593Smuzhiyun@unpublished{AlexeyGotsman2012VerifyGraceExtended 2727*4882a593Smuzhiyun,Author="Alexey Gotsman and Noam Rinetzky and Hongseok Yang" 2728*4882a593Smuzhiyun,Title="Verifying Highly Concurrent Algorithms with Grace (extended version)" 2729*4882a593Smuzhiyun,month="July" 2730*4882a593Smuzhiyun,day="10" 2731*4882a593Smuzhiyun,year="2012" 2732*4882a593Smuzhiyun,note="\url{http://software.imdea.org/~gotsman/papers/recycling-esop13-ext.pdf}" 2733*4882a593Smuzhiyun,annotation={ 2734*4882a593Smuzhiyun Separation-logic formulation of RCU uses. 2735*4882a593Smuzhiyun} 2736*4882a593Smuzhiyun} 2737*4882a593Smuzhiyun 2738*4882a593Smuzhiyun@unpublished{PaulMcKenney2012RCUUsage 2739*4882a593Smuzhiyun,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole" 2740*4882a593Smuzhiyun,Title="{RCU} Usage In the Linux Kernel: One Decade Later" 2741*4882a593Smuzhiyun,month="September" 2742*4882a593Smuzhiyun,day="17" 2743*4882a593Smuzhiyun,year="2012" 2744*4882a593Smuzhiyun,url=http://rdrop.com/users/paulmck/techreports/survey.2012.09.17a.pdf 2745*4882a593Smuzhiyun,note="Technical report paulmck.2012.09.17" 2746*4882a593Smuzhiyun,annotation={ 2747*4882a593Smuzhiyun Overview of the first variant of no-CBs CPUs for RCU. 2748*4882a593Smuzhiyun} 2749*4882a593Smuzhiyun} 2750*4882a593Smuzhiyun 2751*4882a593Smuzhiyun@unpublished{JonCorbet2012NOCB 2752*4882a593Smuzhiyun,Author="Jon Corbet" 2753*4882a593Smuzhiyun,Title="Relocating RCU callbacks" 2754*4882a593Smuzhiyun,month="October" 2755*4882a593Smuzhiyun,day="31" 2756*4882a593Smuzhiyun,year="2012" 2757*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/522262/}" 2758*4882a593Smuzhiyun,annotation={ 2759*4882a593Smuzhiyun Overview of the first variant of no-CBs CPUs for RCU. 2760*4882a593Smuzhiyun} 2761*4882a593Smuzhiyun} 2762*4882a593Smuzhiyun 2763*4882a593Smuzhiyun@phdthesis{JustinSeyster2012PhD 2764*4882a593Smuzhiyun,author="Justin Seyster" 2765*4882a593Smuzhiyun,title="Runtime Verification of Kernel-Level Concurrency Using Compiler-Based Instrumentation" 2766*4882a593Smuzhiyun,school="Stony Brook University" 2767*4882a593Smuzhiyun,year="2012" 2768*4882a593Smuzhiyun,annotation={ 2769*4882a593Smuzhiyun Looking for data races, including those involving RCU. 2770*4882a593Smuzhiyun Proposal: 2771*4882a593Smuzhiyun http://www.fsl.cs.sunysb.edu/docs/jseyster-proposal/redflag.pdf 2772*4882a593Smuzhiyun Dissertation: 2773*4882a593Smuzhiyun http://www.fsl.cs.sunysb.edu/docs/jseyster-dissertation/redflag.pdf 2774*4882a593Smuzhiyun} 2775*4882a593Smuzhiyun} 2776*4882a593Smuzhiyun 2777*4882a593Smuzhiyun@unpublished{PaulEMcKenney2013RCUUsage 2778*4882a593Smuzhiyun,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole" 2779*4882a593Smuzhiyun,Title="{RCU} Usage in the {Linux} Kernel: One Decade Later" 2780*4882a593Smuzhiyun,month="February" 2781*4882a593Smuzhiyun,day="24" 2782*4882a593Smuzhiyun,year="2013" 2783*4882a593Smuzhiyun,note="\url{http://rdrop.com/users/paulmck/techreports/RCUUsage.2013.02.24a.pdf}" 2784*4882a593Smuzhiyun,annotation={ 2785*4882a593Smuzhiyun Usage of RCU within the Linux kernel. 2786*4882a593Smuzhiyun} 2787*4882a593Smuzhiyun} 2788*4882a593Smuzhiyun 2789*4882a593Smuzhiyun@inproceedings{AlexeyGotsman2013ESOPRCU 2790*4882a593Smuzhiyun,author = {Alexey Gotsman and Noam Rinetzky and Hongseok Yang} 2791*4882a593Smuzhiyun,title = {Verifying concurrent memory reclamation algorithms with grace} 2792*4882a593Smuzhiyun,booktitle = {ESOP'13: European Symposium on Programming} 2793*4882a593Smuzhiyun,year = {2013} 2794*4882a593Smuzhiyun,pages = {249--269} 2795*4882a593Smuzhiyun,publisher = {Springer} 2796*4882a593Smuzhiyun,address = {Rome, Italy} 2797*4882a593Smuzhiyun,annotation={ 2798*4882a593Smuzhiyun http://software.imdea.org/~gotsman/papers/recycling-esop13.pdf 2799*4882a593Smuzhiyun} 2800*4882a593Smuzhiyun} 2801*4882a593Smuzhiyun 2802*4882a593Smuzhiyun@unpublished{PaulEMcKenney2013NoTinyPreempt 2803*4882a593Smuzhiyun,Author="Paul E. McKenney" 2804*4882a593Smuzhiyun,Title="Simplifying RCU" 2805*4882a593Smuzhiyun,month="March" 2806*4882a593Smuzhiyun,day="6" 2807*4882a593Smuzhiyun,year="2013" 2808*4882a593Smuzhiyun,note="\url{http://lwn.net/Articles/541037/}" 2809*4882a593Smuzhiyun,annotation={ 2810*4882a593Smuzhiyun Getting rid of TINY_PREEMPT_RCU. 2811*4882a593Smuzhiyun} 2812*4882a593Smuzhiyun} 2813