SMP Scalability Papers
-
Validating Memory Barriers and Atomic Instructions,
in Linux Weekly News, December 2011.
-
Validating Core Parallel Software,
at TU Dresden, Germany, October 2011.
-
Validating Core Parallel Software,
at the 2011 China Linux Kernel Developer Conference, Nanjing,
China, October 2011. (Invited)
-
Is Parallel Programming Hard, And If So, What Can You Do About It?,
at the 2011 Android System Developer Forum, Taipei, Taiwan,
April 2011. (Invited)
- Verifying Parallel Software: Can Theory Meet Practice?,
at Verification of Concurrent Data Structures (Verico), Austin,
TX, USA, January 2011. (Invited)
- Concurrent code and expensive instructions,
Linux Weekly News, January 2011.
- Is Parallel Programming Hard, And, If So, Why?,
linux.conf.au January 2011.
- Verifying Parallel software: Can Theory Meet Practice?,
linux.conf.au January 2011.
- Multi-Core Memory Models and Concurrency Theory: A View from the Linux Community,
Dagstuhl workshop January 2011.
- N1525: Memory-Order Rationale with
Blaine Garst (revised).
ISO SC22 WG14 (C Language), November 2010.
- Omnibus Memory Model and Atomics Paper,
ISO SC22 WG21 (C++ Language), with Mark Batty, Clark Nelson,
Hans Boehm, Anthony Williams, Scott Owens, Susmit Sarkar,
Peter Sewell, Tjark Weber, Michael Wong, Lawrence Crowl,
and Benjamin Kosnik. August 2010.
Updated November 2010,
- Scalable concurrent hash tables via relativistic programming,
August 2010, with Josh Triplett and Jonathan Walpole.
-
Why the grass may not be greener on the other side: a comparison
of locking vs. transactional memory,
August 2010, with Maged M. Michael, Josh Triplett,
and Jonathan Walpole.
-
Synchronization and Scalability in the Macho Multicore Era ,
Scuola Superiore Sant'Anna, Pisa, Italy,
July 2010.
- Additional Atomics Errata.
ISO SC22 WG14 (C Language), May 2010.
- Additional Atomics Errata, complete with
typo in title.
ISO SC22 WG14 (C Language), May 2010.
- Rationale for C-Language Dependency Ordering.
ISO SC22 WG14 (C Language), May 2010.
- Updates to C++ Memory Model Based on Formalization.
ISO SC22 WG14 (C Language), April 2010.
Updated May 2010.
- Explicit Initializers for Atomics.
ISO SC22 WG14 (C Language), April 2010.
Updated May 2010.
- Dependency Ordering for C Memory Model.
ISO SC22 WG14 (C Language), April 2010.
- Explicit Initializers for Atomics.
ISO SC22 WG21 (C++ Language) March 2010.
- Updates to C++ Memory Model Based on Formalization.
ISO SC22 WG21 (C++ Language) February 2010.
Updated March 2010.
- Dependency Ordering for C Memory Model.
ISO SC22 WG14 (C Language) November 2009.
- Updates to C++ Memory Model Based on Formalization.
ISO SC22 WG14 (C Language) October 2009.
- Performance, Scalability, and Real-Time
Response From the Linux Kernel short course for
ACACES 2009.
- Is Parallel Programming Hard, and If So, Why?,
presented at January 2009 linux.conf.au, along with
corresponding
Portland State University technical report.
- Example POWER Implementation for C/C++ Memory Model,
revision of
ISO WG21 N2745. ISO SC22 WG21 (C++ Language) September 2008.
- Concurrency
and Race Conditions at Linux Plumbers Conference Student
Day, September 2008.
- After 25 Years,
C/C++ Understands Concurrency at linux.conf.au 2008 Mel8ourne.
February 2008.
- Comparison of locking and
transactional memory and
presentation
at PLOS 2007 with Maged Michael and Jon Walpole. October 2007.
(revised presentation.)
(
Official version of paper.)
- C++0x memory model user FAQ
with Hans Boehm, August 2007.
-
C++ Data-Dependency Ordering: Atomics
(Updated),
C++ Data-Dependency Ordering: Memory Model
(Updated), and
C++ Data-Dependency Ordering: Function Annotation
(Updated). August 2007.
(Updated version of the May 2007 paper.)
-
C++ Data-Dependency Ordering. May 2007.
-
A simple and efficient memory model for weakly ordered architectures.
Makes case for weakly ordered primitives in programming languages.
Updated May 2007.
-
Overview of Linux-Kernel Reference Counting. January 2007.
- Memory Ordering in
Modern Microprocessors, appearing in two parts in the
August and
September
2005 Linux Journal (revised April 2009).
- Storage
Improvements for 2.6 and 2.7 in August 2004 Linux Journal.
- Linux Kernel Scalability:
Using the Right Tool for the Job. Presentation on
scalability
given at the
2004 Ottawa Linux Symposium
and
revised for the
2005 linux.conf.au.
- Issues with Selected
Scalability Features of the 2.6 Kernel OLS paper describing
scalability, DoS, and realtime limitations of the Linux kernel
at that time. With Dipankar Sarma.
-
Fairlocks--a High-Performance Fair Locking Scheme
Bit-vector fair locking scheme for NUMA systems.
Revision of paper that appeared in 2002 Parallel and
Distributed Computing and Systems, with Swaninathan
Sivasubramanian, Jack F. Vogel, and John Stultz.
Of course, it is even better to design your software
so that lock contention is low enough that fancy locking
techniques don't help!
We implemented a number of variations on this theme.
- Practical Performance
Estimation On Shared-Memory Multiprocessors
(bibtex).
The silver lining
of the memory-latency dark cloud--programs whose run time is
dominated by memory latency are often amenable to simple
performance-estimation methods. Some of these methods are
applicable at design time. Revision of PDCS'99 paper.
- Differential Profiling
(bibtex).
Revised version of the MASCOTS'95 and the '99 SP&E papers.
-
Experience With an Efficient Parallel Kernel Memory Allocator
(bibtex).
Revised version of the W'93 USENIX and 2001 SP&E papers.
-
Selecting Locking Designs for Parallel Programs
(bibtex).
Revised version of the PLoPD-II paper.
-
Selecting Locking Primitives for Parallel Programs
(bibtex).
Revised version of the October '96 CACM paper.
- Efficient Demultiplexing of Incoming TCP
Packets
(bibtex).
Analytic comparison of a number of demultiplexing techniques.
The winner is hashing.
- Stochastic Fairness Queueing
(bibtex).
High-speed approximate implementation of Fair Queueing.
-
High-Speed Event-Counting and -Classification Using a Dictionary
Hash Technique
(bibtex).
Revised version of the ICPP'89 paper.
- Bibtex for other papers.