Kornilios Kourtis (1): fix node label in defer/RCUReplacement.fig Namhyung Kim (7): Get rid of a duplicate 'which' Fix unmatched closing parentheses Typo: call_rcu -> __call_rcu Typo: shown -> show Typo: Line 4 -> Line 3 Typo: lead -> leaf Typo: rcu_read_lock -> _unlock Paul E. McKenney (89): Bibliography update incorporated. Add Michel Dagenais feedback to todo list. count: Faster eventually-consistent statistical counter count: Update text to match new count_stat_eventual.c count: Note that non-atomic access requires alignment/size constraints Call out one reason for atomics in eventually consistent counters Fix author name for textbook "until is returns" -> "until it returns" Fix description of simple counter add/subtract/read Add quick quiz for limit-counter countermax/2 transfer. Fix typos in Quick Quizzes in the intro. Fix Quick Quiz 4.37: s/line 20/line 21/ Fix line numbers for flush_local_count_sig() description Grammar: s/not/note/, s/However/Unfortunately/ Grammar: s/those how/those who/ Fix typo in data-locking algorithm and fix chapter reference Change "reasonable" to "straightforward" in OO locking QQ Expand on Doug Lea's livelock workaround. Fix typos in QQ 6.22. Interchange sentences in QQ 6.17 More grammar fixes. Grammatical improvement. Updates based on Ryan Molden review. Refer to POSIX in reader/writer-locking discussion Refer to POSIX in reader/writer-locking discussion Merge branch 'rfabbri.2012.09.25b' Fix counttorture usage message. Cleanups in Counting chapter. Improve introduction to limit counters Clarify explanation of balance_count(). Create schematic to illustrate globalize_count() and balance_count(). Add Quick Quiz noting approximation of zero More changes from review of Counting chapter. Fix arrows on limit-count diagram Add "FIFO is not FIFO" citation Add TR version of Christoph Kirsch's k-FIFO paper. Add footnote citing Nir Shavit's relaxed concurrent stacks Update Introduction based on self-review. Changes from self-review of hardware and its habits chapter Add footnote calling out partitioned counters when feasible Add citation to Maged Michael's CAS-based dequeue paper Better explanation of Poisson-distribution derivation Add minimal read-only victim cache to HTM discussion Improve roadmap at end of counting chapter. Update todo list. Update todo list. Update of Chapter 3 based on self-review. Review and update validiaton chapter. Update todo list yet again. Update SMPdesign paper from self-review. Apply SMPdesign QQ self-review changes. Performance/scalability consequenses of poor abstraction choices Expand transition out of Chapter 2. Add citation to SNZI to QQ answer in counting chapter. Rework deferral intro. Fill in pointer from QQ to chapter 9. Make CPU future quotes less jarring. Update transactional-memory section. Add some levity to the debugging chapter. Move time section to questions appendix. Add Melissa's cartoon to count chapter. Remove blot accidentally gimped into counting cartoon Comment on the usefulness of linearization points Incorporate data/light cartoon. Add new dining philosophers cartoon. Added the stress-test-passed-or-not cartoon. Adjust maiden name to married name. Propagate maiden-to-married transition to credits Add eventually-consistent count to perf.sh Update reduce.sh to allow alternative statistics to be applied. Add some data-reduction utility scripts Add new data for counting-algorithm performance Update based on new counting-algorithm performance data Wording changes surrounding the Columbia River. Add discussion of rejection of interference for performance measurement Self-review changes to the locking chapter. Self-review updates on data-ownership chapter Tournament-win quick quiz. Apply self-review changes for validation chapter. Add locking quick quiz on tournament vs. conditional locking Add hash tables using global lock, per-bucket lock, and RCU. Avoid redefining symbols defined in libraries. Upgrade hashing smoke test. Fix conflict between api.h and glibc. Add hash-table performance tests. Add note to self about reference count software engineering issues Add per-bucket-spinlock hash table verbiage Add hash fastpath to RCU and globally locked hash tables. More additions to data-structure chapter Ricardo Fabbri (9): Removed spurious "While" Missing 'd' letter Removed spurious parenthesis Referencing lockhdeq.c Added missing plural "s" Removed dup 'code' Fixed broken sentences Tiny spelling mistake "left" -> "leave" 'but' makes no sense here Yuchen Dai (1): Fix typo: y=1 -> x=1 CodeSamples/api-pthreads/api-pthreads.h | 15 +- CodeSamples/api.h | 15 +- CodeSamples/count/count_stat_eventual.c | 12 +- CodeSamples/count/counttorture.h | 4 +- .../count_atomic:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_atomic:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_end:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_end:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_end_rcu:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_end_rcu:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim_app:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim_app:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim_atomic:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim_atomic:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim_sig:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_lim_sig:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_limd:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_limd:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_nonatomic:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_nonatomic:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_stat:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_stat:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_stat_atomic:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_stat_atomic:u.p6ihhpc7.2012.12.30b.raw | 2 + .../count_stat_eventual:r.p6ihhpc7.2012.12.30b.raw | 2 + .../count_stat_eventual:u.p6ihhpc7.2012.12.30b.raw | 2 + CodeSamples/count/perf.sh | 2 +- CodeSamples/count/reduce.sh | 19 +- CodeSamples/datastruct/.gitignore | 3 + CodeSamples/datastruct/Makefile | 33 + CodeSamples/datastruct/hash_bkt.c | 151 + CodeSamples/datastruct/hash_bkt_rcu.c | 157 + CodeSamples/datastruct/hash_global.c | 150 + CodeSamples/datastruct/hashtorture.h | 896 + CodeSamples/datastruct/primes.mac | 27 + Makefile | 6 +- SMPdesign/ParallelFastpath.eps | 80 +- SMPdesign/ParallelFastpath.fig | 52 +- SMPdesign/SMPdesign.tex | 100 +- SMPdesign/criteria.tex | 63 +- SMPdesign/lockdeqhash.eps | 93 +- SMPdesign/lockdeqhash.fig | 86 +- SMPdesign/lockdeqhash1R.eps | 355 +- SMPdesign/lockdeqhash1R.fig | 232 +- SMPdesign/partexercises.tex | 128 +- appendix/questions/questions.tex | 1 + appendix/questions/time.tex | 55 + appendix/rcuimpl/rcupreempt.tex | 2 +- appendix/rcuimpl/rcutree.tex | 2 +- appendix/rcuimpl/rcutreewt.tex | 20 +- cartoons/Data-chasing-light-wave.eps |50651 ++++++++++++++ cartoons/Dining-philosophers.eps |22487 ++++++ cartoons/One-one-thousand.eps | 3527 + cartoons/Passed-the-stress-test.eps |29167 ++++++++ cartoons/TM-the-reality-conflict.eps |24709 +++++++ cartoons/TM-the-reality-nonidempotent.eps |20019 ++++++ cartoons/TM-the-reality-realtime.eps |22362 ++++++ cartoons/TM-the-vision.eps |29414 ++++++++ cartoons/TortureLaptop.eps |30618 +++++++++ cartoons/TortureTux.eps |40730 +++++++++++ cartoons/UseTheRightCannon.eps |72180 ++++++++++++++++++++ cartoons/WhatTimeIsIt.eps |16680 +++++ contrib.tex | 12 + count/count.tex | 822 +- count/globbal.eps | 331 + count/globbal.fig | 117 + cpu/cpu.tex | 7 + cpu/hwfreelunch.tex | 16 +- cpu/overheads.tex | 26 +- cpu/overview.tex | 37 +- cpu/swdesign.tex | 15 +- datastruct/datastruct.tex | 508 +- datastruct/hashdiagram.eps | 301 + datastruct/hashdiagram.fig | 76 + debugging/debugging.tex | 645 +- defer/RCUReplacement.eps | 8 +- defer/RCUReplacement.fig | 66 +- defer/defer.tex | 10 +- defer/rcuexercises.tex | 6 + defer/refcnt.tex | 81 +- defer/seqlock.tex | 21 +- future/cpu.tex | 13 +- future/htm.tex | 6 + future/tm.tex | 48 + intro/intro.tex | 99 +- locking/locking-existence.tex | 4 +- locking/locking.tex | 332 +- locking/rnplock.eps | 305 + locking/rnplock.fig | 62 + owned/owned.tex | 17 +- perfbook-1c.bbl | 179 +- perfbook.bbl | 179 +- perfbook.tex | 1 - qqz.tex | 802 +- time/time.tex | 16 - todo.txt | 34 +- toolsoftrade/toolsoftrade.tex | 11 +- utilities/datablows.sh | 88 + utilities/sortdata.sh | 33 + 101 files changed, 369442 insertions(+), 1243 deletions(-) create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_atomic:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_atomic:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_end:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_end:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_end_rcu:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_end_rcu:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim_app:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim_app:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim_atomic:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim_atomic:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim_sig:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_lim_sig:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_limd:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_limd:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_nonatomic:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_nonatomic:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_stat:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_stat:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_stat_atomic:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_stat_atomic:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_stat_eventual:r.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/count/data/2012.12.30a.p6ihhpc7/count_stat_eventual:u.p6ihhpc7.2012.12.30b.raw create mode 100644 CodeSamples/datastruct/.gitignore create mode 100644 CodeSamples/datastruct/Makefile create mode 100644 CodeSamples/datastruct/hash_bkt.c create mode 100644 CodeSamples/datastruct/hash_bkt_rcu.c create mode 100644 CodeSamples/datastruct/hash_global.c create mode 100644 CodeSamples/datastruct/hashtorture.h create mode 100644 CodeSamples/datastruct/primes.mac create mode 100644 appendix/questions/time.tex create mode 100644 cartoons/Data-chasing-light-wave.eps create mode 100644 cartoons/Dining-philosophers.eps create mode 100644 cartoons/One-one-thousand.eps create mode 100644 cartoons/Passed-the-stress-test.eps create mode 100644 cartoons/TM-the-reality-conflict.eps create mode 100644 cartoons/TM-the-reality-nonidempotent.eps create mode 100644 cartoons/TM-the-reality-realtime.eps create mode 100644 cartoons/TM-the-vision.eps create mode 100644 cartoons/TortureLaptop.eps create mode 100644 cartoons/TortureTux.eps create mode 100644 cartoons/UseTheRightCannon.eps create mode 100644 cartoons/WhatTimeIsIt.eps create mode 100644 count/globbal.eps create mode 100644 count/globbal.fig create mode 100644 datastruct/hashdiagram.eps create mode 100644 datastruct/hashdiagram.fig create mode 100644 locking/rnplock.eps create mode 100644 locking/rnplock.fig delete mode 100644 time/time.tex create mode 100644 utilities/datablows.sh create mode 100644 utilities/sortdata.sh