About Me
I am a third-year grad student working with
Luis Ceze and Steve Gribble. My research
interests are in the areas of operating systems and computer architecture. I am currently
working on ways to make multithreaded software more reliable and easier to debug through
deterministic execution.
Current Projects
Publications
In reverse chronological order:
- Hardware Watchmachines
Nicholas Hunt, Brandon Lucia, Luis Ceze
June 2011, FIT.
Download [PDF]
[Slides]
[Abstract]
Motivated by the introspection capabilities of hardware watchpoints
in modern processors, we propose Hardware Watchmachines (HWMs).
HWMs are a novel hardware mechanism for monitoring sequences of operations,
such as the execution of certain instructions or references to certain data by
instructions or coherence messages. The sequence of operations is
represented in an HWM as a finite state machine (FSM), where the
states encode the progression through the sequence and transitions
fire when a specified operation occurs. The system traps to
software whenever an FSM reaches an accept state.
- The Deterministic Execution Hammer: How Well
Does it Actually Pound Nails?
Tom Bergan, Joseph Devietti, Nicholas Hunt, Luis Ceze
March 2011, WoDet 2011.
Download [PDF]
[Slides]
[Abstract]
This paper takes a critical look at the benefits provided by
state-of-the-art deterministic execution techniques. Specifically,
we look at four applications of deterministic execution: debugging,
fault-tolerant replication, testing, and security. For each
application, we discuss what an ideal system would provide, and
then look at how deterministic systems compare to the ideal.
Further, we discuss alternative approaches, not involving
determinism, and we judge whether or not these alternatives are
more suitable. Along the way, we identify open questions and
suggest future work.
Ultimately, we find that there are competitive alternatives to
determinism for debugging and replicating multithreaded programs;
that determinism has high, though unproven, potential to improve
testing; and that determinism has distinct security benefits in
eliminating some covert timing channels. Furthermore, determinism
is a unified solution for all four applications: this confers a
distinct advantage over point solutions that do not compose well
with one another.
- Characterizing the Performance and Energy
Efficiency of Lock-Free Data Structures
Nicholas Hunt, Paramjit Singh Sandhu, Luis Ceze.
February 2011, INTERACT-15.
Download: [PDF]
[Slides]
[Abstract]
Accesses to shared data structures in multithreaded programs
must be correctly synchronized to ensure data consistency and
integrity. However, this synchronization between threads is a
common source of performance problems in multithreaded
applications. Lock-free data structures are an alternative to
traditional synchronization methods that have potential for not
only better performance and scalability, but better energy
efficiency as well.
This paper presents a study of the relationship between the
performance and energy consumption of various lockfree data
structures based on the compare-and-swap primitive. We give a
head-to-head comparison of lock-free and locking implementations of
three data structures executing set of highly contentious
workloads. We compare the execution time, peak power and total
energy consumption of each and explain these results with the help
of hardware performance counters. Our results show that under these
workloads, the lock-free variants often perform better and use less
energy then their traditional locking implementations.
- Deterministic Process Groups in dOS
Tom Bergan, Nicholas Hunt, Luis Ceze, Steve Gribble.
October 2010, OSDI '10.
Download: [PDF]
[Slides]
[Abstract]
Current multiprocessor systems execute parallel and concurrent software
nondeterministically: even when given precisely the same input, two
executions of the same program may produce different output. This
severely complicates debugging, testing, and automatic replication for
fault-tolerance. Previous efforts to address this issue have focused
primarily on record and replay, but making execution actually
deterministic would address the problem at the root.
Our goals in this work are twofold: (1) to provide fully
deterministic execution of arbitrary, unmodified, multithreaded
programs as an OS service; and (2) to make all sources of
intentional nondeterminism, such as network I/O, be explicit and
controllable. To this end we propose a new OS abstraction, the
Deterministic Process Group (DPG). All communication between
threads and processes internal to a DPG happens deterministically,
including implicit communication via shared-memory accesses, as
well as communication via OS channels such as pipes, signals, and
the filesystem. To deal with fundamentally nondeterministic
external events, our abstraction includes the shim layer, a
programmable interface that interposes on all interaction between a
DPG and the external world, making determinism useful even for
reactive applications.
We implemented the DPG abstraction as an extension to Linux and
demonstrate its benefits with three use cases: plain deterministic
execution; replicated execution; and record and replay by logging
just external input. We evaluated our implementation on both
parallel and reactive workloads, including Apache, Chromium, and
PARSEC.
Graduate Coursework
In reverse chronological order:
Teaching Experience
I have been a TA for the following classes:
I have tutored for:
Miscellaneous
Other stuff that doesn't fit above:
- debug_mod.tar.bz2 -- A simple
kernel module that allows Linux tasks to modify the debug registers
through a procfs interface.
- liblfds.tar.bz2 -- (Coming soon!) A set of
CAS-based lock-free data structures, using M. Michael's hazard
pointers for ABA freedom.