Peter M. Chen

dblp:c/PeterMChen · DBLP profile ↗
← Back
67ranked-venue papers
11as first author
1since 2021 · last 2025
0000-0002-5951-4183ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 38 · 8 first-authorSoftware engineering, systems software and programming languages · 35 · 6 first-author · 1 since 2021Databases, data management, data science and information retrieval · 5 · 1 first-authorSecurity and privacy · 4Computer networks · 2Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
41 papers
Memory systems · 41% Distributed systems · 22% Parallel and multicore computing · 11%
Software engineering, system software, and programming languages
28 papers
Concurrent programming · 44% Program analysis · 26% Operating systems · 8%
Network and information security
9 papers
Systems and software security · 78% Network security · 14% Malware analysis · 3%

Topics — the 30 heaviest of 108, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Memory systems › non-volatile memory
persistent memory
1.762020
Relaxed Persist Ordering Using Strand Persistency · ISCA 2020
Software Wear Management for Persistent Memories · FAST 2019
Persistency for synchronization-free regions · PLDI 2018
Memory systems
non-volatile memory
1.452019
Software Wear Management for Persistent Memories · FAST 2019
Persistency for synchronization-free regions · PLDI 2018
Delegated persist ordering · MICRO 2016
Distributed systems
fault tolerance
0.932025
Optimistic Recovery for High-Availability Software via Partial Process State Preservation · SOSP 2025
Exploring Failure Transparency and the Limits of Generic Recovery · OSDI 2000
Persistent Messages in Local Transactions · PODC 1998
Memory systems › non-volatile memory › persistent memory
persistency model
0.932020
Relaxed Persist Ordering Using Strand Persistency · ISCA 2020
Language-level persistency · ISCA 2017
Memory persistency · ISCA 2014
Distributed systems › fault tolerance
failure recovery
0.922025
Optimistic Recovery for High-Availability Software via Partial Process State Preservation · SOSP 2025
Exploring Failure Transparency and the Limits of Generic Recovery · OSDI 2000
Concurrent programming › concurrency bug detection
data race detection
0.842018
Optimistic Hybrid Analysis: Accelerating Dynamic Analysis through Predicated Static Analysis · ASPLOS 2018
Race detection for event-driven mobile applications · PLDI 2014
Parallelizing data race detection · ASPLOS 2013
Concurrent programming
memory models
0.622018
Persistency for synchronization-free regions · PLDI 2018
Language-level persistency · ISCA 2017
Program analysis
dynamic analysis
0.532018
Optimistic Hybrid Analysis: Accelerating Dynamic Analysis through Predicated Static Analysis · ASPLOS 2018
Parallelizing data race detection · ASPLOS 2013
VMwareDecoupling Dynamic Program Analysis from Execution in Virtual Environments · USENIX ATC 2008
Systems and software security
memory safety
0.412020
Sound garbage collection for C using pointer provenance · Proc. ACM Program. Lang. 2020
Systems and software security › memory safety
temporal memory safety
0.412020
Sound garbage collection for C using pointer provenance · Proc. ACM Program. Lang. 2020
Runtime systems and virtual machines
garbage collection
0.412020
Sound garbage collection for C using pointer provenance · Proc. ACM Program. Lang. 2020
Processor architecture and microarchitecture › memory system microarchitecture
memory ordering
0.412020
Relaxed Persist Ordering Using Strand Persistency · ISCA 2020
Parallel and multicore computing
parallel programming models
0.432012
DoublePlay: Parallelizing Sequential Logging and Replay · ACM Trans. Comput. Syst. 2012
Operating system support for application-specific speculation · EuroSys 2011
DoublePlay: parallelizing sequential logging and replay · ASPLOS 2011
Systems and software security
information flow tracking
0.412019
Iodine: Fast Dynamic Taint Tracking Using Rollback-free Optimistic Hybrid Analysis · IEEE Symposium on Security and Privacy 2019
Program analysis › dynamic analysis
dynamic information-flow tracking
0.412019
Iodine: Fast Dynamic Taint Tracking Using Rollback-free Optimistic Hybrid Analysis · IEEE Symposium on Security and Privacy 2019
Compilers and program optimization
memoization
0.412019
ShortCut: accelerating mostly-deterministic code regions · SOSP 2019
Parallel and multicore computing › parallel computing › parallel program debugging
deterministic replay
0.432012
DoublePlay: Parallelizing Sequential Logging and Replay · ACM Trans. Comput. Syst. 2012
DoublePlay: parallelizing sequential logging and replay · ASPLOS 2011
Respec: efficient online multiprocessor replayvia speculation and external determinism · ASPLOS 2010
Concurrent programming › memory models
persistency models
0.312018
Persistency for synchronization-free regions · PLDI 2018
Program analysis › static analysis
program slicing
0.312018
Optimistic Hybrid Analysis: Accelerating Dynamic Analysis through Predicated Static Analysis · ASPLOS 2018
Distributed systems
replication
0.322015
Accelerating Mobile Applications through Flip-Flop Replication · MobiSys 2015
Tolerating Latency in Replicated State Machines Through Client Speculation · NSDI 2009
Storage systems
storage reliability
0.352016
Eidetic Systems · OSDI 2014
High-Performance Transactions for Persistent Memories · ASPLOS 2016
The Rio File Cache: Surviving Operating System Crashes · ASPLOS 1996
Cloud and datacenter computing
cloud storage
0.312017
Knockoff: Cheap Versions in the Cloud · FAST 2017
Parallel and multicore computing
parallel query processing
0.212016
JetStream: Cluster-Scale Parallelization of Information Flow Queries · OSDI 2016
Memory systems › non-volatile memory › persistent memory
persistent memory transactions
0.212016
High-Performance Transactions for Persistent Memories · ASPLOS 2016
Concurrent programming
speculative execution
0.232011
Operating system support for application-specific speculation · EuroSys 2011
Speculative execution in a distributed file system · ACM Trans. Comput. Syst. 2006
Speculative execution in a distributed file system · SOSP 2005
Cloud and datacenter computing
computation offloading
0.212015
Accelerating Mobile Applications through Flip-Flop Replication · MobiSys 2015
Parallel and multicore computing
speculative parallelization
0.222011
Operating system support for application-specific speculation · EuroSys 2011
Parallelizing security checks on commodity hardware · ASPLOS 2008
Concurrent programming
concurrency bug detection
0.212014
Race detection for event-driven mobile applications · PLDI 2014
Program analysis › concurrent program analysis
event-race detection
0.212014
Race detection for event-driven mobile applications · PLDI 2014
Memory systems
memory consistency
0.212014
Memory persistency · ISCA 2014

Methods — techniques the papers use, named apart from their topics

checkpointing · 2.6optimistic recovery · 1.7static analysis · 1.2pointer provenance tracking · 0.9dynamic analysis · 0.9static taint analysis · 0.8rollback-free recovery · 0.8profiling · 0.8write ordering constraints · 0.5commit deferral · 0.5speculative execution · 0.5invariant generation · 0.3memory consistency model · 0.3timeslicing · 0.3simulation · 0.2virtualization · 0.2state shipping · 0.2flip-flop replication · 0.2
YearPublicationVenuePosition
2025 Optimistic Recovery for High-Availability Software via Partial Process State Preservation
abstract
Achieving high availability for modern software requires fast and correct recovery from inevitable faults. This is notoriously difficult. Existing techniques either guarantee correctness by discarding all state but suffer from long downtime, or preserve all state to recover quickly but reintroduce the fault.
Yuzhuo Jing, Yuqi Mai, Angting Cai, Wanning He, Xiaoyang Qian, Peter M. Chen, Peng Huang 0005
SOSP7
2020 Relaxed Persist Ordering Using Strand Persistency
abstract
Emerging persistent memory (PM) technologies promise the performance of DRAM with the durability of Flash. Several language-level persistency models have emerged recently to aid programming recoverable data structures in PM. Unfortunately, these persistency models are built upon hardware primitives that impose stricter ordering constraints on PM operations than the persistency models require. Alternative solutions use fixed and inflexible hardware logging techniques to relax ordering constraints on PM operations, but do not readily apply to general synchronization primitives employed by language-level persistency models. Instead, we propose StrandWeaver, a hardware strand persistency model, to minimally constrain ordering on PM operations. StrandWeaver manages PM order within a strand, a logically independent sequence of operations within a thread. PM operations that lie on separate strands are unordered and may drain concurrently to PM. StrandWeaver implements primitives under strand persistency to allow programmers to improve concurrency and relax ordering constraints on updates as they drain to PM. Furthermore, we design mechanisms that map persistency semantics in high-level language persistency models to the primitives implemented by StrandWeaver. We demonstrate that StrandWeaver can enable greater concurrency of PM operations than existing ISA-level ordering mechanisms, improving performance by up to $1.97 \times (1.45 \times avg.)$.
Vaibhav Gogte, Stephan Diestelhorst, Peter M. Chen, Satish Narayanasamy, Thomas F. Wenisch
ISCA4
2020 Sound garbage collection for C using pointer provenance
abstract
Garbage collection (GC) support for unmanaged languages can reduce programming burden in reasoning about liveness of dynamic objects. It also avoids temporal memory safety violations and memory leaks. Sound GC for weakly-typed languages such as C/C++, however, remains an unsolved problem. Current value-based GC solutions examine values of memory locations to discover the pointers, and the objects they point to. The approach is inherently unsound in the presence of arbitrary type casts and pointer manipulations, which are legal in C/C++. Such language features are regularly used, especially in low-level systems code. In this paper, we propose Dynamic Pointer Provenance Tracking to realize sound GC. We observe that pointers cannot be created out-of-thin-air, and they must have provenance to at least one valid allocation. Therefore, by tracking pointer provenance from the source (e.g., malloc) through both explicit data-flow and implicit control-flow, our GC has sound and precise information to compute the set of all reachable objects at any program state. We discuss several static analysis optimizations, that can be employed during compilation aided with profiling, to significantly reduce the overhead of dynamic provenance tracking from nearly 8× to 16% for well-behaved programs that adhere to the C standards. Pointer provenance based sound GC invocation is also 13% faster and reclaims 6% more memory on average, compared to an unsound value-based GC.
Subarno Banerjee, David Devecsery, Peter M. Chen, Satish Narayanasamy
Proc. ACM Program. Lang.3
2019 Software Wear Management for Persistent Memories
Vaibhav Gogte, Stephan Diestelhorst, Aasheesh Kolli, Peter M. Chen, Satish Narayanasamy, Thomas F. Wenisch
FAST5
2019 ShortCut: accelerating mostly-deterministic code regions
abstract
Applications commonly perform repeated computations that are mostly, but not exactly, similar. If a subsequent computation were identical to the original, the operating system could improve performance via memoization, i.e., capturing the differences in program state caused by the computation and applying the differences in lieu of re-executing the computation. However, opportunities for generic memoization are limited by a myriad of differences that arise during execution, e.g., timestamps differ and communication yields non-deterministic responses. Such difference cause memoization to produce incorrect state.
Xianzheng Dou, Peter M. Chen, Jason Flinn
SOSP2
2019 Iodine: Fast Dynamic Taint Tracking Using Rollback-free Optimistic Hybrid Analysis
abstract
Dynamic information-flow tracking (DIFT) is useful for enforcing security policies, but rarely used in practice, as it can slow down a program by an order of magnitude. Static program analyses can be used to prove safe execution states and elide unnecessary DIFT monitors, but the performance improvement from these analyses is limited by their need to maintain soundness. In this paper, we present a novel optimistic hybrid analysis (OHA) to significantly reduce DIFT overhead while still guaranteeing sound results. It consists of a predicated whole-program static taint analysis, which assumes likely invariants gathered from profiles to dramatically improve precision. The optimized DIFT is sound for executions in which those invariants hold true, and recovers to a conservative DIFT for executions in which those invariants are false. We show how to overcome the main problem with using OHA to optimize live executions, which is the possibility of unbounded rollbacks. We eliminate the need for any rollback during recovery by tailoring our predicated static analysis to eliminate only safe elisions of noop monitors. Our tool, Iodine, reduces the overhead of DIFT for enforcing security policies to 9%, which is 4.4× lower than that with traditional hybrid analysis, while still being able to be run on live systems.
Subarno Banerjee, David Devecsery, Peter M. Chen, Satish Narayanasamy
IEEE Symposium on Security and Privacy3
2018 Optimistic Hybrid Analysis: Accelerating Dynamic Analysis through Predicated Static Analysis
abstract
Dynamic analysis tools, such as those that detect data-races, verify memory safety, and identify information flow, have become a vital part of testing and debugging complex software systems. While these tools are powerful, their slow speed often limits how effectively they can be deployed in practice. Hybrid analysis speeds up these tools by using static analysis to decrease the work performed during dynamic analysis. In this paper we argue that current hybrid analysis is needlessly hampered by an incorrect assumption that preserving the soundness of dynamic analysis requires an underlying sound static analysis. We observe that, even with unsound static analysis, it is possible to achieve sound dynamic analysis for the executions which fall within the set of states statically considered. This leads us to a new approach, called optimistic hybrid analysis. We first profile a small set of executions and generate a set of likely invariants that hold true during most, but not necessarily all, executions. Next, we apply a much more precise, but unsound, static analysis that assumes these invariants hold true. Finally, we run the resulting dynamic analysis speculatively while verifying whether the assumed invariants hold true during that particular execution; if not, the program is reexecuted with a traditional hybrid analysis. Optimistic hybrid analysis is as precise and sound as traditional dynamic analysis, but is typically much faster because (1) unsound static analysis can speed up dynamic analysis much more than sound static analysis can and (2) verifications rarely fail. We apply optimistic hybrid analysis to race detection and program slicing and achieve 1.8x over a state-of-the-art race detector (FastTrack) optimized with traditional hybrid analysis and 8.3x over a hybrid backward slicer (Giri).
David Devecsery, Peter M. Chen, Jason Flinn, Satish Narayanasamy
ASPLOS2
2018 Persistency for synchronization-free regions
abstract
Nascent persistent memory (PM) technologies promise the performance of DRAM with the durability of disk, but how best to integrate them into programming systems remains an open question. Recent work extends language memory models with a persistency model prescribing semantics for updates to PM. These semantics enable programmers to design data structures in PM that are accessed like memory and yet are recoverable upon crash or failure. Alas, we find the semantics and performance of existing approaches unsatisfying. Existing approaches require high-overhead mechanisms, are restricted to certain synchronization constructs, provide incomplete semantics, and/or may recover to state that cannot arise in fault-free execution.
Vaibhav Gogte, Stephan Diestelhorst, Satish Narayanasamy, Peter M. Chen, Thomas F. Wenisch
PLDI5
2017 Knockoff: Cheap Versions in the Cloud
Xianzheng Dou, Peter M. Chen, Jason Flinn
FAST2
2017 Language-level persistency
abstract
The commercial release of byte-addressable persistent memories, such as Intel/Micron 3D XPoint memory, is imminent. Ongoing research has sought mechanisms to allow programmers to implement recoverable data structures in these new main memories. Ensuring recoverability requires programmer control of the order of persistent stores; recent work proposes persistency models as an extension to memory consistency to specify such ordering. Prior work has considered persistency models at the abstraction of the instruction set architecture. Instead, we argue for extending the language-level memory model to provide guarantees on the order of persistent writes.
Aasheesh Kolli, Vaibhav Gogte, Ali G. Saidi, Stephan Diestelhorst, Peter M. Chen, Satish Narayanasamy, Thomas F. Wenisch
ISCA5
2016 High-Performance Transactions for Persistent Memories
abstract
Emerging non-volatile memory (NVRAM) technologies offer the durability of disk with the byte-addressability of DRAM. These devices will allow software to access persistent data structures directly in NVRAM using processor loads and stores, however, ensuring consistency of persistent data across power failures and crashes is difficult. Atomic, durable transactions are a widely used abstraction to enforce such consistency. Implementing transactions on NVRAM requires the ability to constrain the order of NVRAM writes, for example, to ensure that a transaction's log record is complete before it is marked committed. Since NVRAM write latencies are expected to be high, minimizing these ordering constraints is critical for achieving high performance. Recent work has proposed programming interfaces to express NVRAM write ordering constraints to hardware so that NVRAM writes may be coalesced and reordered while preserving necessary constraints. Unfortunately, a straightforward implementation of transactions under these interfaces imposes unnecessary constraints. We show how to remove these dependencies through a variety of techniques, notably, deferring commit until after locks are released. We present a comprehensive analysis contrasting two transaction designs across three NVRAM programming interfaces, demonstrating up to 2.5x speedup.
Aasheesh Kolli, Steven Pelley, Ali G. Saidi, Peter M. Chen, Thomas F. Wenisch
ASPLOS4
2016 Delegated persist ordering
abstract
Systems featuring a load-store interface to persistent memory (PM) are expected soon, making in-memory persistent data structures feasible. Ensuring persistent data structure recoverability requires constraints on the order PM writes become persistent. But, current memory systems reorder writes, providing no such guarantees. To complement their upcoming 3D XPoint memory, Intel has announced new instructions to enable programmer control of data persistence. We describe the semantics implied by these instructions, an ordering model we call synchronous ordering. Synchronous ordering (SO) enforces order by stalling execution when PM write ordering is required, exposing PM write latency on the execution critical path. It incurs an average slowdown of 7.21x over volatile execution without ordering in PM-write-intensive benchmarks. SO tightly couples enforcing order and flushing writes to PM, but this tight coupling is unneeded in many recoverable software systems. Instead, we propose delegated ordering, wherein ordering requirements are communicated explicitly to the PM controller, fully decoupling PM write ordering from volatile execution and cache management. We demonstrate that delegated ordering can bring performance within 1.93x of volatile execution, improving over SO by 3.73x.
Aasheesh Kolli, Jeff Rosen, Stephan Diestelhorst, Ali G. Saidi, Steven Pelley, Sihang Liu 0001, Peter M. Chen, Thomas F. Wenisch
MICRO7
2016 JetStream: Cluster-Scale Parallelization of Information Flow Queries
Andrew Quinn 0001, David Devecsery, Peter M. Chen, Jason Flinn
OSDI3
2015 Toward Eidetic Distributed File Systems
Xianzheng Dou, Jason Flinn, Peter M. Chen
HotStorage3
2015 Accelerating Mobile Applications through Flip-Flop Replication
abstract
Mobile devices have less computational power and poorer Internet connections than other computers. Computation offload, in which some portions of an application are migrated to a server, has been proposed as one way to remedy this deficiency. Yet, partition-based offload is challenging because it requires applications to accurately predict whether mobile or remote computation will be faster, and it requires that the computation be large enough to overcome the cost of shipping state to and from the server. Further, offload does not currently benefit network-intensive applications.
Mark S. Gordon, David Ke Hong, Peter M. Chen, Jason Flinn, Scott A. Mahlke, Z. Morley Mao
MobiSys3
2014 Memory persistency
abstract
Emerging nonvolatile memory technologies (NVRAM) promise the performance of DRAM with the persistence of disk. However, constraining NVRAM write order, necessary to ensure recovery correctness, limits NVRAM write concurrency and degrades throughput. We require new memory interfaces to minimally describe write constraints and allow high performance and high concurrency data structures. These goals strongly resemble memory consistency. Whereas memory consistency concerns the order that memory operations are observed between numerous processors, persistent memory systems must constrain the order that writes occur with respect to failure. We introduce memory persistency, a new approach to designing persistent memory interfaces, building on memory consistency. Similar to memory consistency, memory persistency models may be relaxed to improve performance. We describe the design space of memory persistency and desirable features that such a memory system requires. Finally, we introduce several memory persistency models and evaluate their ability to expose NVRAM write concurrency using two implementations of a persistent queue. Our results show that relaxed persistency models accelerate system throughput 30-fold by reducing NVRAM write constraints.
Steven Pelley, Peter M. Chen, Thomas F. Wenisch
ISCA2
2014 Eidetic Systems
David Devecsery, Michael Chow, Xianzheng Dou, Jason Flinn, Peter M. Chen
OSDI5
2014 Race detection for event-driven mobile applications
abstract
Mobile systems commonly support an event-based model of concurrent programming. This model, used in popular platforms such as Android, naturally supports mobile devices that have a rich array of sensors and user input modalities. Unfortunately, most existing tools for detecting concurrency errors of parallel programs focus on a thread-based model of concurrency. If one applies such tools directly to an event-based program, they work poorly because they infer false dependencies between unrelated events handled sequentially by the same thread.
Chun-Hung Hsiao, Cristiano Pereira, Jie Yu 0016, Gilles Pokam, Satish Narayanasamy, Peter M. Chen, Ziyun Kong, Jason Flinn
PLDI6
2013 Parallelizing data race detection
abstract
Detecting data races in multithreaded programs is a crucial part of debugging such programs, but traditional data race detectors are too slow to use routinely. This paper shows how to speed up race detection by spreading the work across multiple cores. Our strategy relies on uniparallelism, which executes time intervals of a program (called epochs) in parallel to provide scalability, but executes all threads from a single epoch on a single core to eliminate locking overhead. We use several techniques to make parallelization effective: dividing race detection into three phases, predicting a subset of the analysis state, eliminating sequential work via transitive reduction, and reducing the work needed to maintain multiple versions of analysis via factorization. We demonstrate our strategy by parallelizing a happens-before detector and a lockset-based detector. We find that uniparallelism can significantly speed up data race detection. With 4x the number of cores as the original application, our strategy speeds up the median execution time by 4.4x for a happens-before detector and 3.3x for a lockset race detector. Even on the same number of cores as the conventional detectors, the ability for uniparallelism to elide analysis locks allows it to reduce the median overhead by 13% for a happens-before detector and 8% for a lockset detector.
Benjamin Wester, David Devecsery, Peter M. Chen, Jason Flinn, Satish Narayanasamy
ASPLOS3
2012 Chimera: hybrid program analysis for determinism
abstract
Chimera uses a new hybrid program analysis to provide deterministic replay for commodity multiprocessor systems. Chimera leverages the insight that it is easy to provide deterministic multiprocessor replay for data-race-free programs (one can just record non-deterministic inputs and the order of synchronization operations), so if we can somehow transform an arbitrary program to be data-race-free, then we can provide deterministic replay cheaply for that program. To perform this transformation, Chimera uses a sound static data-race detector to find all potential data-races. It then instruments pairs of potentially racing instructions with a weak-lock, which provides sufficient guarantees to allow deterministic replay but does not guarantee mutual exclusion.
Peter M. Chen, Jason Flinn, Satish Narayanasamy
PLDI2
2012 DoublePlay: Parallelizing Sequential Logging and Replay
abstract
Deterministic replay systems record and reproduce the execution of a hardware or software system. In contrast to replaying execution on uniprocessors, deterministic replay on multiprocessors is very challenging to implement efficiently because of the need to reproduce the order of or the values read by shared memory operations performed by multiple threads. In this paper, we present DoublePlay, a new way to efficiently guarantee replay on commodity multiprocessors. Our key insight is that one can use the simpler and faster mechanisms of single-processor record and replay, yet still achieve the scalability offered by multiple cores, by using an additional execution to parallelize the record and replay of an application. DoublePlay timeslices multiple threads on a single processor, then runs multiple time intervals ( epochs ) of the program concurrently on separate processors. This strategy, which we call uniparallelism , makes logging much easier because each epoch runs on a single processor (so threads in an epoch never simultaneously access the same memory) and different epochs operate on different copies of the memory. Thus, rather than logging the order of shared-memory accesses, we need only log the order in which threads in an epoch are timesliced on the processor. DoublePlay runs an additional execution of the program on multiple processors to generate checkpoints so that epochs run in parallel. We evaluate DoublePlay on a variety of client, server, and scientific parallel benchmarks; with spare cores, DoublePlay reduces logging overhead to an average of 15% with two worker threads and 28% with four threads.
Kaushik Veeraraghavan, Benjamin Wester, Jessica Ouyang 0002, Peter M. Chen, Jason Flinn, Satish Narayanasamy
ACM Trans. Comput. Syst.5
2011 DoublePlay: parallelizing sequential logging and replay
abstract
Deterministic replay systems record and reproduce the execution of a hardware or software system. In contrast to replaying execution on uniprocessors, deterministic replay on multiprocessors is very challenging to implement efficiently because of the need to reproduce the order or values read by shared memory operations performed by multiple threads. In this paper, we present DoublePlay, a new way to efficiently guarantee replay on commodity multiprocessors. Our key insight is that one can use the simpler and faster mechanisms of single-processor record and replay, yet still achieve the scalability offered by multiple cores, by using an additional execution to parallelize the record and replay of an application. DoublePlay timeslices multiple threads on a single processor, then runs multiple time intervals (epochs) of the program concurrently on separate processors. This strategy, which we call uniparallelism, makes logging much easier because each epoch runs on a single processor (so threads in an epoch never simultaneously access the same memory) and different epochs operate on different copies of the memory. Thus, rather than logging the order of shared-memory accesses, we need only log the order in which threads in an epoch are timesliced on the processor. DoublePlay runs an additional execution of the program on multiple processors to generate checkpoints so that epochs run in parallel. We evaluate DoublePlay on a variety of client, server, and scientific parallel benchmarks; with spare cores, DoublePlay reduces logging overhead to an average of 15% with two worker threads and 28% with four threads.
Kaushik Veeraraghavan, Benjamin Wester, Jessica Ouyang 0002, Peter M. Chen, Jason Flinn, Satish Narayanasamy
ASPLOS5
2011 Operating system support for application-specific speculation
abstract
Speculative execution is a technique that allows serial tasks to execute in parallel. An implementation of speculative execution can be divided into two parts: (1) a policy that specifies what operations and values to predict, what actions to allow during speculation, and how to compare results; and (2) the mechanisms that support speculative execution, such as checkpointing, rollback, causality tracking, and output buffering.
Benjamin Wester, Peter M. Chen, Jason Flinn
EuroSys2
2011 Detecting and surviving data races using complementary schedules
abstract
Data races are a common source of errors in multithreaded programs. In this paper, we show how to protect a program from data race errors at runtime by executing multiple replicas of the program with complementary thread schedules. Complementary schedules are a set of replica thread schedules crafted to ensure that replicas diverge only if a data race occurs and to make it very likely that harmful data races cause divergences. Our system, called Frost, uses complementary schedules to cause at least one replica to avoid the order of racing instructions that leads to incorrect program execution for most harmful data races. Frost introduces outcome-based race detection, which detects data races by comparing the state of replicas executing complementary schedules. We show that this method is substantially faster than existing dynamic race detectors for unmanaged code. To help programs survive bugs in production, Frost also diagnoses the data race bug and selects an appropriate recovery strategy, such as choosing a replica that is likely to be correct or executing more replicas to gather additional information.
Kaushik Veeraraghavan, Peter M. Chen, Jason Flinn, Satish Narayanasamy
SOSP2
2010 Respec: efficient online multiprocessor replayvia speculation and external determinism
abstract
Deterministic replay systems record and reproduce the execution of a hardware or software system. While it is well known how to replay uniprocessor systems, replaying shared memory multiprocessor systems at low overhead on commodity hardware is still an open problem. This paper presents Respec, a new way to support deterministic replay of shared memory multithreaded programs on commodity multiprocessor hardware. Respec targets online replay in which the recorded and replayed processes execute concurrently.
Benjamin Wester, Kaushik Veeraraghavan, Satish Narayanasamy, Peter M. Chen, Jason Flinn
ASPLOS5
2010 Transistors to toys: teaching systems to freshmen
abstract
How should we introduce students to the art of system building, and when are students ready to start designing and building interesting systems? In this talk, I describe an experimental course at the University of Michigan that teaches systems to freshmen by having them conceive of, design, and build the hardware and software of a microprocessor-based educational toy. Students in this course build their own microprocessor on an FPGA using a hardware description language. They then write the complete software stack for their toy in assembly language, including device drivers for numerous I/O devices, a simple file system, a graphical user interface, digital audio processing, and application software. By building a substantial system involving hardware, system software, and application software, students gain an appreciation for the complexity and beauty of building computing systems.
Peter M. Chen
VEE1
2010 Multi-stage replay with crosscut
abstract
Deterministic record-replay has many useful applications, ranging from fault tolerance and forensics to reproducing and diagnosing bugs. When choosing a record-replay solution, the system admin-istrator must choose a priori how comprehensively to record the execution and at what abstraction level to record it. Unfortunately, these choices may not match well with how the recording is eventu-ally used. A recording may contain too little information to support the end use of replay, or it may contain more sensitive information than is allowed to be shown to the end user of replay. Similarly, fixing the abstraction level at the time of recording often leads to a semantic mismatch with the end use of replay. This paper describes how to remedy these problems by adding customizable replay stages to create special-purpose logs for the end users of replay. Our system, called Crosscut, allows replay logs to be “sliced ” along time and abstraction boundaries. Using this approach, users can create slices that include only the processes, applications, or components of interest, excluding parts that handle sensitive data. Users can also retarget the abstraction level of the replay log to higher-level platforms, such as Perl or Valgrind. Exe-cution can then be augmented with additional analysis code at re-play time, without disturbing the replayed components in the slice. Crosscut thus uses replay itself to transform logs into a more effi-cient, secure, and usable form for replay-based applications. Our current Crosscut prototype builds on VMware Worksta-tion’s record-replay capabilities, and supports a variety of differ-ent replay environments. We show how Crosscut can create slices of only the parts of the computation of interest and thereby avoid leaking sensitive information, and we show how to retarget the ab-straction level of the log to enable more convenient use during re-play debugging.
Jim Chow, Dominic G. Lucchetti, Tal Garfinkel, Geoffrey Lefebvre, Ryan Gardner, Joshua Mason, Sam Small, Peter M. Chen
VEE8
2010 Editorial
abstract
This issue marks a transition in the editor-in-chief position for ACM TOCS.The four prior editors-in-chief for TOCS, Anita Jones, Ken Birman, Larry Peterson, and Carla Ellis, have built TOCS into the premier journal for experimental systems, and I am honored to follow in their footsteps.In particular, I want to thank the outgoing editor-in-chief, Carla Ellis, for so capably leading TOCS.For the last 6 years, Carla has skillfully overseen the process of finding, reviewing, and publishing the most important papers on experimental systems research.Carla also managed the transition to an online submission and reviewing system for TOCS, which should help streamline the reviewing process.I'd also like
Peter M. Chen
ACM Trans. Comput. Syst.1
2009 Tolerating Latency in Replicated State Machines Through Client Speculation
Benjamin Wester, James A. Cowling, Ed Nightingale, Peter M. Chen, Jason Flinn, Barbara Liskov
NSDI4
2008 Parallelizing security checks on commodity hardware
abstract
Speck (Speculative Parallel Check) is a system thataccelerates powerful security checks on commodity hardware by executing them in parallel on multiple cores. Speck provides an infrastructure that allows sequential invocations of a particular security check to run in parallel without sacrificing the safety of the system. Speck creates parallelism in two ways. First, Speck decouples a security check from an application by continuing the application, using speculative execution, while the security check executes in parallel on another core. Second, Speck creates parallelism between sequential invocations of a security check by running later checks in parallel with earlier ones. Speck provides a process-level replay system to deterministically and efficiently synchronize state between a security check and the original process.We use Speck to parallelize three security checks: sensitive data analysis, on-access virus scanning, and taint propagation. Running on a 4-core and an 8-core computer, Speck improves performance 4x and 7.5x for the sensitive data analysis check, 3.3x and 2.8x for theon-access virus scanning check, and 1.6x and 2x for the taint propagation check.
Ed Nightingale, Daniel Peek, Peter M. Chen, Jason Flinn
ASPLOS3
2008 VMwareDecoupling Dynamic Program Analysis from Execution in Virtual Environments
Jim Chow, Tal Garfinkel, Peter M. Chen
USENIX ATC3
2008 Execution replay of multiprocessor virtual machines
abstract
Execution replay of virtual machines is a technique which has many important applications, including debugging, fault-tolerance, and security. Execution replay for single processor virtual machines is well-understood, and available commercially. With the advancement of multi-core architectures, however, multiprocessor virtual machines are becoming more important. Our system, SMP-ReVirt, is the first system to log and replay a multiprocessor virtual machine on commodity hardware. We use hardware page protection to detect and accurately replay sharing between virtual cpus of a multi-cpu virtual machine, allowing us to replay the entire operating system and all applications. We have tested our system on a variety of workloads, and find that although sharing under SMP-ReVirt is expensive, for many workloads and applications, including debugging, the overhead is acceptable.
George W. Dunlap, Dominic G. Lucchetti, Michael A. Fetterman, Peter M. Chen
VEE4
2008 Rethink the sync
abstract
We introduce external synchrony , a new model for local file I/O that provides the reliability and simplicity of synchronous I/O, yet also closely approximates the performance of asynchronous I/O. An external observer cannot distinguish the output of a computer with an externally synchronous file system from the output of a computer with a synchronous file system. No application modification is required to use an externally synchronous file system. In fact, application developers can program to the simpler synchronous I/O abstraction and still receive excellent performance. We have implemented an externally synchronous file system for Linux, called xsyncfs. Xsyncfs provides the same durability and ordering-guarantees as those provided by a synchronously mounted ext3 file system. Yet even for I/O-intensive benchmarks, xsyncfs performance is within 7% of ext3 mounted asynchronously . Compared to ext3 mounted synchronously, xsyncfs is up to two orders of magnitude faster.
Ed Nightingale, Kaushik Veeraraghavan, Peter M. Chen, Jason Flinn
ACM Trans. Comput. Syst.3
2006 Rethink the Sync (Awarded Best Paper!)
Ed Nightingale, Kaushik Veeraraghavan, Peter M. Chen, Jason Flinn
OSDI3
2006 SubVirt: Implementing malware with virtual machines
abstract
Attackers and defenders of computer systems both strive to gain complete control over the system. To maximize their control, both attackers and defenders have migrated to low-level, operating system code. In this paper, we assume the perspective of the attacker, who is trying to run malicious software and avoid detection. By assuming this perspective, we hope to help defenders understand and defend against the threat posed by a new class of rootkits. We evaluate a new type of malicious software that gains qualitatively more control over a system. This new type of malware, which we call a virtual-machine based rootkit (VMBR), installs a virtual-machine monitor underneath an existing operating system and hoists the original operating system into a virtual machine. Virtual-machine based rootkits are hard to detect and remove because their state cannot be accessed by software running in the target system. Further, VMBRs support general-purpose malicious services by allowing such services to run in a separate operating system that is protected from the target system. We evaluate this new threat by implementing two proof-of-concept VMBRs. We use our proof-of-concept VMBRs to subvert Windows XP and Linux target systems, and we implement four example malicious services using the VMBR platform. Last, we use what we learn from our proof-of-concept VMBRs to explore ways to defend against this new threat. We discuss possible ways to detect and prevent VMBRs, and we implement a defense strategy suitable for protecting systems against this threat
Samuel T. King, Peter M. Chen, Yi-Min Wang, Chad Verbowski, Helen J. Wang, Jacob R. Lorch
S&P2
2006 Speculative execution in a distributed file system
abstract
Speculator provides Linux kernel support for speculative execution. It allows multiple processes to share speculative state by tracking causal dependencies propagated through interprocess communication. It guarantees correct execution by preventing speculative processes from externalizing output, for example, sending a network message or writing to the screen, until the speculations on which that output depends have proven to be correct. Speculator improves the performance of distributed file systems by masking I/O latency and increasing I/O throughput. Rather than block during a remote operation, a file system predicts the operation's result, then uses Speculator to checkpoint the state of the calling process and speculatively continue its execution based on the predicted result. If the prediction is correct, the checkpoint is discarded; if it is incorrect, the calling process is restored to the checkpoint, and the operation is retried. We have modified the client, server, and network protocol of two distributed file systems to use Speculator. For PostMark and Andrew-style benchmarks, speculative execution results in a factor of 2 performance improvement for NFS over local area networks and an order of magnitude improvement over wide area networks. For the same benchmarks, Speculator enables the Blue File System to provide the consistency of single-copy file semantics and the safety of synchronous I/O, yet still outperform current distributed file systems with weaker consistency and safety.
Ed Nightingale, Peter M. Chen, Jason Flinn
ACM Trans. Comput. Syst.2
2005 Enriching Intrusion Alerts Through Multi-Host Causality
Samuel T. King, Z. Morley Mao, Dominic G. Lucchetti, Peter M. Chen
NDSS4
2005 Detecting past and present intrusions through vulnerability-specific predicates
abstract
Most systems contain software with yet-to-be-discovered security vulnerabilities. When a vulnerability is disclosed, administrators face the grim reality that they have been running software which was open to attack. Sites that value availability may be forced to continue running this vulnerable software until the accompanying patch has been tested. Our goal is to improve security by detecting intrusions that occurred before the vulnerability was disclosed and by detecting and responding to intrusions that are attempted after the vulnerability is disclosed. We detect when a vulnerability is triggered by executing vulnerability-specific predicates as the system runs or replays. This paper describes the design, implementation and evaluation of a system that supports the construction and execution of these vulnerability-specific predicates. Our system, called IntroVirt, uses virtual-machine introspection to monitor the execution of application and operating system software. IntroVirt executes predicates over past execution periods by combining virtual-machine introspection with virtual-machine replay. IntroVirt eases the construction of powerful predicates by allowing predicates to run existing target code in the context of the target system, and it uses checkpoints so that predicates can execute target code without perturbing the state of the target system. IntroVirt allows predicates to refresh themselves automatically so they work in the presence of preemptions. We show that vulnerability-specific predicates can be written easily for a wide variety of real vulnerabilities, can detect and respond to intrusions over both the past and present time intervals, and add little overhead for most vulnerabilities.
Ashlesha Joshi, Samuel T. King, George W. Dunlap, Peter M. Chen
SOSP4
2005 ExtraVirt: detecting and recovering from transient processor faults
abstract
Reliability is becoming an increasingly important issue in modern processor design. Smaller feature sizes and more numerous transistors are projected to increase the frequency of transient faults [4, 5]. Our project, ExtraVirt, leverages the trend toward multi-core and multi-processor systems to survive these transient faults. Our goals are (1) to add fault tolerance without modifying existing operating systems, applications or hardware, (2) to minimize the time spent executing software that cannot tolerate faults, and (3) to minimize the time and space overhead needed to detect and recover from faults. We accomplish these goals by leveraging virtual-machine technology and by sharing memory and I/O devices across replicas. ExtraVirt extends prior work on VM-level fault tolerance[2] by detecting and recovering from non-fail-stop faults and by running multiple replicas efficiently on a single machine.
Dominic G. Lucchetti, Steven K. Reinhardt, Peter M. Chen
SOSP3
2005 Speculative execution in a distributed file system
abstract
Speculator provides Linux kernel support for speculative execution. It allows multiple processes to share speculative state by tracking causal dependencies propagated through inter-process communication. It guarantees correct execution by preventing speculative processes from externalizing output, e.g., sending a network message or writing to the screen, until the speculations on which that output depends have proven to be correct. Speculator improves the performance of distributed file systems by masking I/O latency and increasing I/O throughput. Rather than block during a remote operation, a file system predicts the operation's result, then uses Speculator to checkpoint the state of the calling process and speculatively continue its execution based on the predicted result. If the prediction is correct, the checkpoint is discarded; if it is incorrect, the calling process is restored to the checkpoint, and the operation is retried. We have modified the client, server, and network protocol of two distributed file systems to use Speculator. For PostMark and Andrew-style benchmarks, speculative execution results in a factor of 2 performance improvement for NFS over local-area networks and an order of magnitude improvement over wide-area networks. For the same benchmarks, Speculator enables the Blue File System to provide the consistency of single-copy file semantics and the safety of synchronous I/O, yet still outperform current distributed file systems with weaker consistency and safety.
Ed Nightingale, Peter M. Chen, Jason Flinn
SOSP2
2005 Debugging Operating Systems with Time-Traveling Virtual Machines (Awarded General Track Best Paper Award!)
Samuel T. King, George W. Dunlap, Peter M. Chen
USENIX ATC, General Track3
2005 Backtracking intrusions
abstract
Analyzing intrusions today is an arduous, largely manual task because system administrators lack the information and tools needed to understand easily the sequence of steps that occurred in an attack. The goal of BackTracker is to identify automatically potential sequences of steps that occurred in an intrusion. Starting with a single detection point (e.g., a suspicious file), BackTracker identifies files and processes that could have affected that detection point and displays chains of events in a dependency graph. We use BackTracker to analyze several real attacks against computers that we set up as honeypots. In each case, BackTracker is able to highlight effectively the entry point used to gain access to the system and the sequence of steps from that entry point to the point at which we noticed the intrusion. The logging required to support BackTracker added 9% overhead in running time and generated 1.2 GB per day of log data for an operating-system intensive workload.
Samuel T. King, Peter M. Chen
ACM Trans. Comput. Syst.2
2003 Backtracking intrusions
abstract
Analyzing intrusions today is an arduous, largely manual task because system administrators lack the information and tools needed to understand easily the sequence of steps that occurred in an attack. The goal of BackTracker is to identify automatically potential sequences of steps that occurred in an intrusion. Starting with a single detection point (e.g., a suspicious file), BackTracker identifies files and processes that could have affected that detection point and displays chains of events in a dependency graph. We use BackTracker to analyze several real attacks against computers that we set up as honeypots. In each case, BackTracker is able to highlight effectively the entry point used to gain access to the system and the sequence of steps from that entry point to the point at which we noticed the intrusion. The logging required to support BackTracker added 9% overhead in running time and generated 1.2 GB per day of log data for an operating-system intensive workload.
Samuel T. King, Peter M. Chen
SOSP2
2003 Operating System Support for Virtual Machines
Samuel T. King, George W. Dunlap, Peter M. Chen
USENIX ATC, General Track3
2002 The Impact of Recovery Mechanisms on the Likelihood of Saving Corrupted State
abstract
Recovery systems must save state before a failure occurs to enable the system to recover from the failure. However, recovery will fail if the recovery system saves any state corrupted by the fault. The frequency and comprehensiveness of how a recovery system saves state has a major effect on how often the recovery system inadvertently saves corrupted state. This paper explores and measures that effect. We measure how often software faults in the application and operating system cause real applications to save corrupted state when using different types of recovery systems. We find that generic recovery techniques, such as checkpointing and logging, work well for faults in the operating system. However, we find that they do not work well for faults in the application because the very actions taken to enable recovery often corrupt the state upon which successful recovery depends.
Subhachandra Chandra, Peter M. Chen
ISSRE2
2002 ReVirt: Enabling Intrusion Analysis Through Virtual-Machine Logging and Replay
George W. Dunlap, Samuel T. King, Sukru Cinar, Murtaza A. Basrai, Peter M. Chen
OSDI5
2001 When Virtual is Better than Real
abstract
This paper argues that the operating system and applications currently running on a real machine should relocate into a virtual machine. This structure enables services to be added below the operating system and to do so without trusting or modifying the operating system or applications. To demonstrate the usefulness of this structure, we describe three services that take advantage of it: secure logging, intrusion prevention and detection, and environment migration.
Peter M. Chen, Brian D. Noble
HotOS1
2001 The Design and Verification of the Rio File Cache
abstract
Today's file systems are limited in speed and reliability by memory's vulnerability to operating system crashes. Because memory is viewed as unsafe, systems periodically write modified file data back to disk. These extra disk writes lower system performance and the delay period before data is safe lowers reliability. The goal of the Rio (RAM I/O) file cache is to make ordinary main memory safe for persistent storage by enabling memory to survive operating system crashes. Reliable main memory enables the Rio file cache to be as reliable as a write-through file cache, where every write is safe instantly, and as fast as a pure write-back file cache, with no reliability-induced writes to disk. This paper describes the systematic, quantitative process we used to design and verify the Rio file cache on Intel PCs running FreeBSD and the reliability and performance of the resulting system.
Wee Teck Ng, Peter M. Chen
IEEE Trans. Computers2
2000 Whither Generic Recovery from Application Faults? A Fault Study using Open-Source Software
abstract
We test the hypothesis that generic recovery techniques, such as process pairs, can survive most application faults without using application-specific information. We examine in detail the faults that occur in three, large, open-source applications: the Apache Web server, the GNOME desktop environment and the MySQL database. Using information contained in the bug reports and source code, we classify faults based on how they depend on the operating environment. We find that 72-87% of the faults are independent of the operating environment and are hence deterministic (non-transient). Recovering from the failures caused by these faults requires the use of application-specific knowledge. Half of the remaining faults depend on a condition in the operating environment that is likely to persist on retry, and the failures caused by these faults are also likely to require application-specific recovery. Unfortunately, only 5-14% of the faults were triggered by transient conditions, such as timing and synchronization, that naturally fix themselves during recovery. Our results indicate that classical application-generic recovery techniques, such as process pairs, will not be sufficient to enable applications to survive most failures caused by application faults.
Subhachandra Chandra, Peter M. Chen
DSN2
2000 Exploring Failure Transparency and the Limits of Generic Recovery
David E. Lowell, Subhachandra Chandra, Peter M. Chen
OSDI3
1999 Fast cluster failover using virtual memory-mapped communication
abstract
This paper proposes a novel way to use virtual memorymapped communication (VMMC) to reduce the failover time on clusters.With the VMMC model, applications' virtual address space can be efficiently mirrored on remote memory either automatically or via explicit messages.When a machine fails, its applications can restart from the most recent checkpoints on the failover node with minimal memory copying and disk I/O overhead.This method requires little change to applications' source code.We developed two fast failover protocols: deliberate update failover protocol (DU) and automatic update failover protoco2 (AU).The first can run on any system that supports VMMC, whereas the other requires special network interface support.We implemented these two protocols on two different clusters that supported VMMC communication.Our results with three transaction-based applications show that both protocols work quite well.The deliberate update protocol imposes 4-21% overhead when taking checkpoints every 2 seconds.If an application can tolerate 20% overhead, this protocol can failover to another machine within 4 milliseconds in the best case and from 0.1 to 3 seconds in the worst case.The failover performance can be further improved by using special network interface hardware.The automatic update protocol is able to take checkpoints every 0.1 seconds with only 3-12% overhead.If 10% overhead is allowed, it can failover applications from 0.01 to 0.4 seconds in the worst case.
Yuanyuan Zhou 0001, Peter M. Chen, Kai Li 0001
International Conference on Supercomputing2
1998 Persistent Messages in Local Transactions
abstract
We present a new model for handling messages and state in a distributed application that we call Messages in Local Transactions (MLT). Under this model, messages and data are not lost after crashes, and all sends and receives are performed in local transactions. The model is unique in that it guarantees consistent recovery without the complex- ity or overhead of other recovery techniques. Applications using MLT do not need to coordinate checkpoints, track causal dependencies, or perform distributed commits. We show that MLT can be implemented using any reliable pro- tocol. Finally, we describe our implementation of Vista- grams, a system based on the MLT model. We show that Vistagrams are just as fast as traditional messages, despite the recoverability they offer. The efficiency of our model and our Vistagrams implementation is enabled by the avail- ability of fast stable storage, such as the reliable memory provided by the Rio file cache.
David E. Lowell, Peter M. Chen
PODC2
1998 Integrating Reliable Memory in Databases
Wee Teck Ng, Peter M. Chen
VLDB J.2
1997 Free Transactions With Rio Vista
abstract
Transactions and recoverable memories are powerful mechanisms for handling failures and manipulating persistent data. Unfortunately, standard recoverable memories incur an overhead of several milliseconds per transaction. This paper presents a system that improves transaction overhead by a factor of 2000 for working sets that fit in main memory. Of this factor of 2000, a factor of 20 is due to the Rio file cache, which absorbs synchronous writes to disk without losing data during system crashes. The remaining factor of 100 is due to Vista, a 720-line, recoverable-memory library tailored for Rio. Vista lowers transaction overhead to 5 μsec by using no redo log, no system calls, and only one memory-to-memory copy. This drastic reduction in overhead leads to a overall speedup of 150-556x for benchmarks based on TPC-B and TPC-C.
David E. Lowell, Peter M. Chen
SOSP2
1997 Integrating Reliable Memory in Databases
Wee Teck Ng, Peter M. Chen
VLDB2
1997 A Comment on "An Analytical Model for Designing Memory Hierarchies"
abstract
In our paper, "An analytical model for designing memory hierarchies" (see ibid., vol. 45, no. 10, p. 180-1, 194 (1996)), we made the following statement: "Failing to apply a specific model of workload locality makes it impossible to provide an easily used, closed-form solution for the optimal cache configuration, and so the results from these papers have contained dependencies on the cache configuration-the number of levels, or the sizes and hit rates of the levels." Our description did not accurately reflect the contents of the paper by J.E. MacDonald and K.L. Sigworth (1975), and we regret any false impressions caused by the inaccuracy.
Bruce L. Jacob, Peter M. Chen, Seth R. Silverman, Trevor N. Mudge
IEEE Trans. Computers2
1996 The Rio File Cache: Surviving Operating System Crashes
abstract
One of the fundamental limits to high-performance, high-reliability file systems is memory's vulnerability to system crashes. Because memory is viewed as unsafe, systems periodically write data back to disk. The extra disk traffic lowers performance, and the delay period before data is safe lowers reliability. The goal of the Rio (RAM I/O) file cache is to make ordinary main memory safe for persistent storage by enabling memory to survive operating system crashes. Reliable memory enables a system to achieve the best of both worlds: reliability equivalent to a write-through file cache, where every write is instantly safe, and performance equivalent to a pure write-back cache, with no reliability-induced writes to disk. To achieve reliability, we protect memory during a crash and restore it during a reboot (a "warm" reboot). Extensive crash tests show that even without protection, warm reboot enables memory to achieve reliability close to that of a write-through file system. Adding protection makes memory even safer than a write-through file system while adding essentially no overhead. By eliminating reliability-induced disk writes, Rio performs 4-22 times as fast as a write-through file system, 2-14 times as fast as a standard Unix file system, and 1-3 times as fast as an optimized system that risks losing 30 seconds of data and metadata.
Peter M. Chen, Wee Teck Ng, Subhachandra Chandra, Christopher M. Aycock, Gurushankar Rajamani, David E. Lowell
ASPLOS1
1996 Comparing disk and memory's resistance to operating system crashes
abstract
Memory is commonly viewed as an unreliable place to store permanent data (files) because it is perceived to be vulnerable to system crashes. Yet despite all the negative implications of memory's unreliability, no data exists that quantifies how vulnerable memory actually is to system crashes. This paper quantitatively compares the vulnerability of disk and memory to operating system crashes. We use software fault injection to induce a wide variety of operating system crashes in DEC Alpha workstations running Digital Unix, ranging from bit errors in the kernel stack to deleting branch instructions to C-level allocation management errors. We find that files on disk are rarely corrupted (1.1% corruption rate), which agrees with our intuition. We also find that, surprisingly files in memory are nearly as safe as files on disk. Only 10 of the 650 crashes we observed (1.5%) corrupt any files in memory. Our data contradicts the common assumption that operating system crashes often corrupt files in memory and suggests that memory can be used to store permanent data rather than needing to write it back to disk.
Wee Teck Ng, Christopher M. Aycock, Gurushankar Rajamani, Peter M. Chen
ISSRE4
1996 An Analytical Model for Designing Memory Hierarchies
abstract
Memory hierarchies have long been studied by many means: system building, trace driven simulation, and mathematical analysis. Yet little help is available for the system designer wishing to quickly size the different levels in a memory hierarchy to a first order approximation. We present a simple analysis for providing this practical help and some unexpected results and intuition that come out of the analysis. By applying a specific, parameterized model of workload locality, we are able to derive a closed form solution for the optimal size of each hierarchy level. We verify the accuracy of this solution against exhaustive simulation with two case studies: a three level I/O storage hierarchy and a three level processor cache hierarchy. In all but one case, the configuration recommended by the model performs within 5% of optimal. One result of our analysis is that the first place to spend money is the cheapest (rather than the fastest) cache level, particularly with small system budgets. Another is that money spent on an n level hierarchy is spent in a fixed proportion until another level is added.
Bruce L. Jacob, Peter M. Chen, Seth R. Silverman, Trevor N. Mudge
IEEE Trans. Computers2
1995 Striping in a RAID Level 5 Disk Array
abstract
Redundant disk arrays are an increasingly popular way to improve I/O system performance. Past research has studied how to stripe data in non-redundant (RAID Level 0) disk arrays, but none has yet been done on how to stripe data in redundant disk arrays such as RAID Level 5, or on how the choice of striping unit varies with the number of disks. Using synthetic workloads, we derive simple design rules for striping data in RAID Level 5 disk arrays given varying amounts of workload information. We then validate the synthetically derived design rules using real workload traces to show that the design rules apply well to real systems.We find no difference in the optimal striping units for RAID Level 0 and 5 for read-intensive workloads. For write-intensive workloads, in contrast, the overhead of maintaining parity causes full-stripe writes (writes that span the entire error-correction group) to be more efficient than read-modify writes or reconstruct writes. This additional factor causes the optimal striping unit for RAID Level 5 to be four times smaller for write-intensive workloads than for read-intensive workloads.We next investigate how the optimal striping unit varies with the number of disks in an array. We find that the optimal striping unit for reads in a RAID Level 5 varies inversely to the number of disks, but that the optimal striping unit for writes varies with the number of disks. Overall, we find that the optimal striping unit for workloads with an unspecified mix of reads and writes is independent of the number of disks.Together, these trends lead us to recommend (in the absence of specific workload information) that the striping unit over a wide range of RAID Level 5 disk array sizes be equal to 1/2 * average positioning time * disk transfer rate.
Peter M. Chen, Edward K. Lee 0001
SIGMETRICS1
1994 RAID-II: A High-Bandwidth Network File Server
abstract
In 1989, the RAID (Redundant Arrays of Inexpensive Disks) group at U.C. Berkeley built a prototype disk array called RAID-I. The bandwidth delivered to clients by RAID-I was severely limited by the memory system bandwidth of the disk array's host workstation. They designed their second prototype, RAID-II, to deliver more of the disk array bandwidth to file server clients. A custom-built crossbar memory system called the XBUS board connects the disks directly to the high-speed network, allowing data for large requests to bypass the server workstation. RAID-II runs Log-Structured File System (LFS) software to optimize performance for bandwidth-intensive applications. The RAID-II hardware with a single XBUS controller board delivers 20 megabytes/second for large, random read operations and up to 31 megabytes/second for sequential read operations. A preliminary implementation of LFS on RAID-II delivers 21 megabytes/second on large read requests and 15 megabytes/second on large write operations.>
Ann L. Drapeau, Ken Shirriff, John H. Hartman, Ethan L. Miller, Srinivasan Seshan, Randy H. Katz, Ken Lutz, David A. Patterson 0001, Edward K. Lee 0001, Peter M. Chen, Garth A. Gibson
ISCA10
1994 Performance and Design Evaluation of the RAID-II Storage Server
Peter M. Chen, Edward K. Lee 0001, Ann L. Drapeau, Ken Lutz, Ethan L. Miller, Srinivasan Seshan, Ken Shirriff, David A. Patterson 0001, Randy H. Katz
Distributed Parallel Databases1
1994 A New Approach to I/O Performance Evaluation - Self-Scaling I/O Benchmarks, Predicted I/O Performance
abstract
Current I/O benchmarks suffer from several chronic problems: they quickly become obsolete; they do not stress the I/O system; and they do not help much in understanding I/O system performance. We propose a new approach to I/O performance analysis. First, we propose a self-scaling benchmark that dynamically adjusts aspects of its workload according to the performance characteristic of the system being measured. By doing so, the benchmark automatically scales across current and future systems. The evaluation aids in understanding system performance by reporting how performance varies according to each of five workload parameters. Second, we propose predicted performance, a technique for using the results from the self-scaling evaluation to estimate quickly the performance for workloads that have not been measured. We show that this technique yields reasonably accurate performance estimates and argue that this method gives a far more accurate comparative performance evaluation than traditional single-point benchmarks. We apply our new evaluation technique by measuring a SPARCstation 1+ with one SCSI disk, an HP 730 with one SCSI-II disk, a DECstation 5000/200 running the Sprite LFS operating system with a three-disk disk array, a Convex C240 minisupercomputer with a four-disk disk array, and a Solbourne 5E/905 fileserver with a two-disk disk array.
Peter M. Chen, David A. Patterson 0001
ACM Trans. Comput. Syst.1
1993 A New Approach to I/O Performance Evaluation - Self-Scaling I/O Benchmarks, Predicted I/O Performance
abstract
Current I/O benchmarks suffer from several chronic problems: they quickly become obsolete, they do not stress the I/O system, and they do not help in understanding I/O system performance. We propose a new approach to I/O performance analysis. First, we propose a self-scaling benchmark that dynamically adjusts aspects of its workload according to the performance characteristic of the system being measured. By doing so, the benchmark automatically scales across current and future systems. The evaluation aids in understanding system performance by reporting how performance varies according to each of fie workload parameters. Second, we propose predicted performance, a technique for using the results from the self-scaling evaluation to quickly estimate the performance for workloads that have not been measured. We show that this technique yields reasonably accurate performance estimates and argue that this method gives a far more accurate comparative performance evaluation than traditional single point benchmarks. We apply our new evaluation technique by measuring a SPARCstation 1+ with one SCSI disk, an HP 730 with one SCSI-II disk, a Sprite LFS DECstation 5000/200 with a three-disk disk array, a Convex C240 minisupercomputer with a four-disk disk array, and a Solbourne 5E/905 fileserver with a two-disk disk array.
Peter M. Chen, David A. Patterson 0001
SIGMETRICS1
1993 Storage performance-metrics and benchmarks
abstract
The metrics and benchmarks used in storage performance evaluation are discussed. The technology trends taking place in storage systems, such as disk and tape evolution, disk arrays, and solid-state disks, are highlighted. The current popular I/O benchmarks are then described, reviewed, and run on three systems: a DECstation 5000/200 running the Sprite Operating System, a SPARCstation 1+ running SunOS, and an HP Series 700 (Model 730) running HP-UX. Two approaches to storage benchmarks-LADDIS and a self-scaling benchmark with predicted performance-are also described.>
Peter M. Chen, David A. Patterson 0001
Proc. IEEE1
1990 Maximizing Performance in a Striped Disk Array
abstract
Improvements in disk speeds have not kept up with improvements in processor and memory speeds. One way to correct the resulting speed mismatch is to stripe data across many disks. In this paper, we address how to stripe data to get maximum performance from the disks. Specifically, we examine how to choose the striping unit, i.e. the amount of logically contiguous data on each disk. We synthesize rules for determining the best striping unit for a given range of workloads.
Peter M. Chen, David A. Patterson 0001
ISCA1
1990 An Evaluation of Redundant Arrays of Disks Using an Amdahl 5890
abstract
Recently we presented several disk array architectures designed to increase the data rate and I/O rate of supercomputing applications, transaction processing, and file systems [Patterson 88]. In this paper we present a hardware performance measurement of two of these architectures, mirroring and rotated parity. We see how throughput for these two architectures is affected by response time requirements, request sizes, and read to write ratios. We find that for applications with large accesses, such as many supercomputing applications, a rotated parity disk array far outperforms traditional mirroring architecture. For applications dominated by small accesses, such as transaction processing, mirroring architectures have higher performance per disk than rotated parity architectures.
Peter M. Chen, Garth A. Gibson, Randy H. Katz, David A. Patterson 0001
SIGMETRICS1