This list is adapted from the lecture plan for the "Advanced Topics in Computer Systems" course at Berkeley, which is available here: https://people.eecs.berkeley.edu/~kubitron/cs262/index_lectures.html
Thanks to Anthony Joseph and John Kubiatowicz for putting the original list together.
Introduction to the course, some basic philosophy, UNIX system.
- The UNIX Time-Sharing System
Introduction to Databases, System R
- End-To-End Arguments in System Design
- A History and Evaluation of System R
File Systems
- A Fast File System for UNIX
- Analysis and Evolution of Journaling File Systems
File System Reliability: Bottom Up/Top Down
- The HP AutoRAID Hierarchical Storage System
- Finding a needle in Haystack: Facebook’s photo storage
Locking In Systems/Transactions
- Experience with Processes and Monitors in Mesa
- Principles of Transaction-Oriented Database Recovery
Transactional Recovery:
- ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-ahead Logging
- Segment-Based Recovery: Write-ahead Logging Revisited
- Lightweight Recoverable Virtual Memory
- Transactional Flash
- Rethink the Sync
Transaction Locking and Concurrency
- Granularity of Locks and Degrees of Consistency in a Shared Database
- Serializable Isolation for Snapshot Databases
- The Notions of Consistency and Predicate Locks in a Database System
- Key Range Locking Strategies for Improved Concurrency
Scheduling and Concurrency
- Lottery Scheduling: Flexible Proportional-Share Resource Management
- SEDA: An Architecture for WellConditioned, Scalable Internet Services
- Integrating Multimedia Applications in Hard Real-Time Systems
- Implementing Constant-Bandwidth Servers upon Multiprocessor Platforms
- Time, Clocks, and the Ordering of Events in a Distributed System
- Efficient Optimistic Concurrency Control Using Loosely Synchronized Clocks
Resource Allocation
- Composing Parallel Software Efficiently with Lithe
- Dominant Resource Fairness: Fair Allocation of Multiple Resource Types
Parallel DB
- Parallel Database Systems: The Future of High Performance Database Systems
- Spark: Cluster Computing with Working Sets
- A Comparison of Approaches to Large-Scale Data Analysis
- Jockey: Guaranteed Job Latency in Data Parallel Clusters
Column Stores
- C-Store: A Column-oriented DBMS
- Database Cracking
Routing
- RouteBricks: Exploiting Parallelism To Scale Software Routers
Virtualization
- Xen and the Art of Virtualization
- Are Virtual Machine Monitors Microkernels Done Right?
- Live Migration of Virtual Machines
- SnowFlock: Rapid Virtual Machine Cloning for Cloud Computing
Peer To Peer Networks
- Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications
- Tapestry: A Resilient Global-scale Overlay for Service Deployment
Distributed Storage
- Dynamo: Amazon’s Highly Available Key-value Store
- Pond: the OceanStore Prototype.
- Bigtable: a distributed storage system for structured data
Paxos
- Paxos Made Live - An Engineering Perspective
- Megastore: Providing Scalable, Highly Available Storage for Interactive Services
Byzantine Agreement
- The Byzantine Generals Problem
- Practical Byzantine Fault Tolerance