Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Jonathan Appavoo

dblp:36/248 · DBLP profile ↗
← Back
24ranked-venue papers
2as first author
2since 2021 · last 2024
0009-0002-5594-4263ORCID · corroborated

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

Systems, architecture and hardware · 14 · 2 first-author · 2 since 2021Software engineering, systems software and programming languages · 10Computer networks · 1Human-computer interaction and ubiquitous computing · 1

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.

Software engineering, system software, and programming languages
10 papers
Operating systems · 94% Software maintenance and evolution · 6%
Computer architecture, parallel and distributed computing, and storage systems
11 papers
Memory systems · 43% Cloud and datacenter computing · 26% Parallel and multicore computing · 15%
Computer networks
1 paper
Internet of things and sensor networks · 100%
Human-computer interaction and pervasive computing
1 paper
Collaborative and social computing · 77% Ubiquitous computing and smart environments · 23%

Topics — the 28 heaviest of 34, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Operating systems › operating system design
library operating systems
0.922023
Unikernel Linux (UKL) · EuroSys 2023
EbbRT: A Framework for Building Per-Application Library Operating Systems · OSDI 2016
Operating systems › kernel
kernel design
0.712023
Unikernel Linux (UKL) · EuroSys 2023
Operating systems › kernel
linux kernel
0.712023
Unikernel Linux (UKL) · EuroSys 2023
Operating systems › operating system design
unikernel
0.712023
Unikernel Linux (UKL) · EuroSys 2023
Memory systems › memory management › virtual memory
address translation
0.412020
The Virtual Block Interface: A Flexible Alternative to the Conventional Virtual Memory Framework · ISCA 2020
Memory systems › memory management
heterogeneous memory management
0.412020
The Virtual Block Interface: A Flexible Alternative to the Conventional Virtual Memory Framework · ISCA 2020
Cloud and datacenter computing
serverless computing
0.412020
SEUSS: skip redundant paths to make serverless fast · EuroSys 2020
Memory systems › memory management
virtual memory
0.412020
The Virtual Block Interface: A Flexible Alternative to the Conventional Virtual Memory Framework · ISCA 2020
Collaborative and social computing › organizational communication
workplace communication
0.412019
Talking about Chat at Work in the Global South: An Ethnographic Study of Chat Use in India and Kenya · CHI 2019
Internet of things and sensor networks › wireless sensor network › network diagnosis
sensor fault detection
0.312018
Fall-curve: A novel primitive for IoT Fault Detection and Isolation · SenSys 2018
Cloud and datacenter computing
virtualization
0.342023
Unikernel Linux (UKL) · EuroSys 2023
EbbRT: A Framework for Building Per-Application Library Operating Systems · OSDI 2016
Providing a cloud network infrastructure on a supercomputer · HPDC 2010
Parallel and multicore computing › parallel programming models
automatic parallelization
0.212014
ASC: automatically scalable computation · ASPLOS 2014
Processor architecture and microarchitecture
speculative execution
0.212014
ASC: automatically scalable computation · ASPLOS 2014
Parallel and multicore computing
speculative parallelization
0.212014
ASC: automatically scalable computation · ASPLOS 2014
Operating systems › resource management › memory management
memory sharing
0.112020
SEUSS: skip redundant paths to make serverless fast · EuroSys 2020
High-performance computing
supercomputing
0.112010
Providing a cloud network infrastructure on a supercomputer · HPDC 2010
Electronic design automation › hardware verification and test › fault diagnosis
fault isolation
0.112018
Fall-curve: A novel primitive for IoT Fault Detection and Isolation · SenSys 2018
Software maintenance and evolution › dynamic software updating
live patching
0.112007
Reboots Are for Hardware: Challenges and Solutions to Updating an Operating System on the Fly · USENIX ATC 2007
Electronic design automation › hardware simulation
functional simulation
0.112014
ASC: automatically scalable computation · ASPLOS 2014
Software maintenance and evolution › software updates
kernel patching
0.112005
Improving dynamic update for operating systems · SOSP 2005
Operating systems
live update
0.112005
Improving dynamic update for operating systems · SOSP 2005
Software maintenance and evolution › software evolution › software adaptation
dynamic reconfiguration
0.012003
System Support for Online Reconfiguration · USENIX ATC, General Track 2003
Software maintenance and evolution
software updates
0.022007
Reboots Are for Hardware: Challenges and Solutions to Updating an Operating System on the Fly · USENIX ATC 2007
Providing Dynamic Update in an Operating System · USENIX ATC, General Track 2005
Cloud and datacenter computing › virtualization
network virtualization
0.012010
Providing a cloud network infrastructure on a supercomputer · HPDC 2010
Operating systems › multiprocessing
multiprocessor operating system
0.011999
Tornado: Maximizing Locality and Concurrency in a Shared Memory Multiprocessor Operating System · OSDI 1999
Operating systems
kernel
0.012005
Improving dynamic update for operating systems · SOSP 2005
Reconfigurable computing and FPGAs
dynamic reconfiguration
0.012003
System Support for Online Reconfiguration · USENIX ATC, General Track 2003
Parallel and multicore computing › multiprocessor system
shared-memory multiprocessor
0.011999
Tornado: Maximizing Locality and Concurrency in a Shared Memory Multiprocessor Operating System · OSDI 1999

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

snapshotting · 0.9page-level sharing · 0.9hardware-software co-design · 0.4ethnographic study · 0.4state prediction · 0.2speculative multithreading · 0.2selective partitioning and replication · 0.1object-oriented structuring · 0.1object-oriented kernel design · 0.1direct hardware access · 0.1dynamic software updating · 0.1
YearPublicationVenuePosition
2024 Can OS Specialization give new life to old carbon in the cloud?
abstract
Is there "fat" (overheads) in cloud computing infrastructure software that can be trimmed? Would doing so help ameliorate the need for frequent hardware refreshes and extend the life of existing hardware? In this paper, we demonstrate that, indeed, there is "fat" that can be trimmed by using specialized OS-based software stacks. Doing so can allow decade-old computers to be used for critical cloud infrastructure services, potentially yielding 3x improvements in efficiency compared to standard software stacks on newer hardware. The implications of these results raise the possibility of exploiting OS optimizations to reduce server hardware obsolescence. Further, it suggests the importance of addressing the key portability challenges of specialized OS stacks.
Han Dong, Sanjay Arora, Orran Krieger, Jonathan Appavoo
SYSTOR4
2023 Unikernel Linux (UKL)
abstract
This paper presents Unikernel Linux (UKL), a path toward integrating unikernel optimization techniques in Linux, a general purpose operating system. UKL adds a configuration option to Linux allowing for a single, optimized process to link with the kernel directly, and run at supervisor privilege. This UKL process does not require application source code modification, only a re-link with our, slightly modified, Linux kernel and glibc. Unmodified applications show modest performance gains out of the box, and developers can further optimize applications for more significant gains (e.g. 26% throughput improvement for Redis). UKL retains support for co-running multiple user level processes capable of communicating with the UKL process using standard IPC. UKL preserves Linux's battle-tested codebase, community, and ecosystem of tools, applications, and hardware support. UKL runs both on bare-metal and virtual servers and supports multi-core execution. The changes to the Linux kernel are modest (1250 LOC).
Ali Raza 0003, Thomas Unger, Matthew Boyd, Eric B. Munson, Parul Sohal, Ulrich Drepper, Daniel Bristot de Oliveira, Larry Woodman, Renato Mancuso 0001, Jonathan Appavoo, Orran Krieger
EuroSys11
2020 SEUSS: skip redundant paths to make serverless fast
abstract
This paper presents a system-level method for achieving the rapid deployment and high-density caching of serverless functions in a FaaS environment. For reduced start times, functions are deployed from unikernel snapshots, bypassing expensive initialization steps. To reduce the memory footprint of snapshots we apply page-level sharing across the entire software stack that is required to run a function. We demonstrate the effects of our techniques by replacing Linux on the compute node of a FaaS platform architecture. With our prototype OS, the deployment time of a function drops from 100s of milliseconds to under 10 ms. Platform throughput improves by 51x on workload composed entirely of new functions. We are able to cache over 50,000 function instances in memory as opposed to 3,000 using standard OS techniques. In combination, these improvements give the FaaS platform a new ability to handle large-scale bursts of requests.
James Cadden, Thomas Unger, Yara Awad, Han Dong, Orran Krieger, Jonathan Appavoo
EuroSys6
2020 The Virtual Block Interface: A Flexible Alternative to the Conventional Virtual Memory Framework
abstract
Computers continue to diversify with respect to system designs, emerging memory technologies, and application memory demands. Unfortunately, continually adapting the conventional virtual memory framework to each possible system configuration is challenging, and often results in performance loss or requires non-trivial workarounds. To address these challenges, we propose a new virtual memory framework, the Virtual Block Interface (VBI). We design VBI based on the key idea that delegating memory management duties to hardware can reduce the overheads and software complexity associated with virtual memory. VBI introduces a set of variable-sized virtual blocks (VBs) to applications. Each VB is a contiguous region of the globally-visible VBI address space, and an application can allocate each semantically meaningful unit of information (e.g., a data structure) in a separate VB. VBI decouples access protection from memory allocation and address translation. While the OS controls which programs have access to which VBs, dedicated hardware in the memory controller manages the physical memory allocation and address translation of the VBs. This approach enables several architectural optimizations to (1) efficiently and flexibly cater to different and increasingly diverse system configurations, and (2) eliminate key inefficiencies of conventional virtual memory. We demonstrate the benefits of VBI with two important use cases: (1) reducing the overheads of address translation (for both native execution and virtual machine environments), as VBI reduces the number of translation requests and associated memory accesses; and (2) two heterogeneous main memory architectures, where VBI increases the effectiveness of managing fast memory regions. For both cases, VBI significantly improves performance over conventional virtual memory.
Nastaran Hajinazar, Pratyush Patel, Minesh Patel, Konstantinos Kanellopoulos, Saugata Ghose, Rachata Ausavarungnirun, Geraldo F. Oliveira, Jonathan Appavoo, Vivek Seshadri, Onur Mutlu
ISCA8
2019 Talking about Chat at Work in the Global South: An Ethnographic Study of Chat Use in India and Kenya
abstract
In this paper, we examine how two chat apps fit into the communication ecosystem of six large distributed enterprises, in India and Kenya. From the perspective of management, these chat apps promised to foster greater communication and awareness between workers in the field, and between fieldworkers and the enterprises administration and management centres. Each organisation had multiple different types of chat groups, characterised by the types of content and interaction patterns they mediate, and the different organisational functions they fulfil. Examining the interplay between chat and existing local practices for coordination, collaboration and knowledge-sharing, we discuss how chat manifests in the distributed workplace and how it fits -- or otherwise -- alongside the rhythms of both local and remote work. We contribute to understandings of chat apps for workplace communication and provide insights for shaping their ongoing development.
Moira McGregor, Nicola J. Bidwell, Vidya Sarangapani, Jonathan Appavoo, Jacki O'Neill
CHI4
2019 A fork() in the road
abstract
The received wisdom suggests that Unix's unusual combination of fork() and exec() for process creation was an inspired design. In this paper, we argue that fork was a clever hack for machines and programs of the 1970s that has long outlived its usefulness and is now a liability. We catalog the ways in which fork is a terrible abstraction for the modern programmer to use, describe how it compromises OS implementations, and propose alternatives.
Andrew Baumann, Jonathan Appavoo, Orran Krieger, Timothy Roscoe
HotOS2
2019 Unikernels: The Next Stage of Linux's Dominance
abstract
Unikernels have demonstrated enormous advantages over Linux in many important domains, causing some to propose that the days of Linux's dominance may be coming to an end. On the contrary, we believe that unikernels' advantages represent the next natural evolution for Linux, as it can adopt the best ideas from the unikernel approach and, along with its battle-tested codebase and large open source community, continue to dominate. In this paper, we posit that an upstreamable unikernel target is achievable from the Linux kernel, and, through an early Linux unikernel prototype, demonstrate that some simple changes can bring dramatic performance advantages.
Ali Raza 0003, Parul Sohal, James Cadden, Jonathan Appavoo, Ulrich Drepper, Orran Krieger, Renato Mancuso 0001, Larry Woodman
HotOS4
2018 Fall-curve: A novel primitive for IoT Fault Detection and Isolation
abstract
The proliferation of Internet of Things (IoT) devices has led to the deployment of various types of sensors in the homes, offices, buildings, lawns, cities, and even in agricultural farms. Since IoT applications rely on the fidelity of data reported by the sensors, it is important to detect a faulty sensor and isolate the cause of the fault. Existing fault detection techniques demand sensor domain knowledge along with the contextual information and historical data from similar near-by sensors. However, detecting a sensor fault by analyzing just the sensor data is non-trivial since a faulty sensor reading could mimic non-faulty sensor data. This paper presents a novel primitive, which we call the Fall-curve - a sensor's voltage response when the power is turned off - that can be used to characterize sensor faults. The Fall-curve constitutes a unique signature independent of the phenomenon being monitored which can be used to identify the sensor and determine whether the sensor is correctly operating.
Tusher Chakraborty, Akshay Uttama Nambi, Ranveer Chandra, Rahul Sharma 0001, S. Manohar 0001, Zerina Kapetanovic, Jonathan Appavoo
SenSys7
2016 EbbRT: A Framework for Building Per-Application Library Operating Systems
Dan Schatzberg, James Cadden, Han Dong, Orran Krieger, Jonathan Appavoo
OSDI5
2015 Towards General-Purpose Neural Network Computing
abstract
Machine learning is becoming pervasive, decades of research in neural network computation is now being leveraged to learn patterns in data and perform computations that are difficult to express using standard programming approaches. Recent work has demonstrated that custom hardware accelerators for neural network processing can outperform software implementations in both performance and power consumption. However, there is neither an agreed-upon interface to neural network accelerators nor a consensus on neural network hardware implementations. We present a generic set of software/hardware extensions, X-FILES, that allow for the general-purpose integration of feedforward and feedback neural network computation in applications. The interface is independent of the network type, configuration, and implementation. Using these proposed extensions, we demonstrate and evaluate an example dynamically allocated, multi-context neural network accelerator architecture, DANA. We show that the combination of X-FILES and our hardware prototype, DANA, enables generic support and increased throughput for neural-network-based computation in multi-threaded scenarios.
Schuyler Eldridge, Amos Waterland, Margo I. Seltzer, Jonathan Appavoo, Ajay Joshi
PACT4
2014 ASC: automatically scalable computation
abstract
We present an architecture designed to transparently and automatically scale the performance of sequential programs as a function of the hardware resources available. The architecture is predicated on a model of computation that views program execution as a walk through the enormous state space composed of the memory and registers of a single-threaded processor. Each instruction execution in this model moves the system from its current point in state space to a deterministic subsequent point. We can parallelize such execution by predictively partitioning the complete path and speculatively executing each partition in parallel. Accurately partitioning the path is a challenging prediction problem. We have implemented our system using a functional simulator that emulates the x86 instruction set, including a collection of state predictors and a mechanism for speculatively executing threads that explore potential states along the execution path. While the overhead of our simulation makes it impractical to measure speedup relative to native x86 execution, experiments on three benchmarks show scalability of up to a factor of 256 on a 1024 core machine when executing unmodified sequential programs.
Amos Waterland, Elaine Angelino, Ryan P. Adams, Jonathan Appavoo, Margo I. Seltzer
ASPLOS4
2013 Computational caches
abstract
Caching is a well-known technique for speeding up computation. We cache data from file systems and databases; we cache dynamically generated code blocks; we cache page translations in TLBs. We propose to cache the act of computation, so that we can apply it later and in different contexts. We use a state-space model of computation to support such caching, involving two interrelated parts: speculatively memoized predicted/resultant state pairs that we use to accelerate sequential computation, and trained probabilistic models that we use to generate predicted states from which to speculatively execute. The key techniques that make this approach feasible are designing probabilistic models that automatically focus on regions of program execution state space in which prediction is tractable and identifying state space equivalence classes so that predictions need not be exact.
Amos Waterland, Elaine Angelino, Ekin Dogus Cubuk, Efthimios Kaxiras, Ryan P. Adams, Jonathan Appavoo, Margo I. Seltzer
SYSTOR6
2012 CloudPack - Exploiting Workload Flexibility through Rational Pricing
Vatche Isahagian, Raymond Sweha, Azer Bestavros, Jonathan Appavoo
Middleware4
2010 Providing a cloud network infrastructure on a supercomputer
abstract
Supercomputers and clouds both strive to make a large number of computing cores available for computation. More recently, similar objectives such as low-power, manageability at scale, and low cost of ownership are driving a more converged hardware and software. Challenges remain, however, of which one is that current cloud infrastructure does not yield the performance sought by many scientific applications. A source of the performance loss comes from virtualization and virtualization of the network in particular. This paper provides an introduction and analysis of a hybrid supercomputer software infrastructure, which allows direct hardware access to the communication hardware for the necessary components while providing the standard elastic cloud infrastructure for other components.
Jonathan Appavoo, Amos Waterland, Dilma Da Silva, Volkmar Uhlig, Bryan S. Rosenburg, Eric Van Hensbergen, Jan Stoess, Robert W. Wisniewski, Udo Steinberg
HPDC1
2007 Reboots Are for Hardware: Challenges and Solutions to Updating an Operating System on the Fly
Andrew Baumann, Jonathan Appavoo, Robert W. Wisniewski, Dilma Da Silva, Orran Krieger, Gernot Heiser
USENIX ATC2
2007 Libra: a library operating system for a jvm in a virtualized execution environment
abstract
If the operating system could be specialized for every application, many applications would run faster. For example, Java virtual machines (JVMs) provide their own threading model and memory protection, so general-purpose operating system implementations of these abstractions are redundant. However, traditional means of transforming existing systems into specialized systems are difficult to adopt because they require replacing the entire operating system. This paper describes Libra, an execution environment specialized for IBM's J9 JVM. Libra does not replace the entire operating system. Instead, Libra and J9 form a single statically-linked image that runs in a hypervisor partition. Libra provides the services necessary to achieve good performance for the Java workloads of interest but relies on an instance of Linux in another hypervisor partition to provide a networking stack, a filesystem, and other services. The expense of remote calls is offset by the fact that Libra's services can be customized for a particular workload; for example, on the Nutch search engine, we show that two simple customizations improve application throughput by a factor of 2.7.
Glenn Ammons, Jonathan Appavoo, Maria A. Butrico, Dilma Da Silva, David Grove, Kiyokuni Kawachiya, Orran Krieger, Bryan S. Rosenburg, Eric Van Hensbergen, Robert W. Wisniewski
VEE2
2007 Experience distributing objects in an SMMP OS
abstract
Designing and implementing system software so that it scales well on shared-memory multiprocessors (SMMPs) has proven to be surprisingly challenging. To improve scalability, most designers to date have focused on concurrency by iteratively eliminating the need for locks and reducing lock contention. However, our experience indicates that locality is just as, if not more, important and that focusing on locality ultimately leads to a more scalable system. In this paper, we describe a methodology and a framework for constructing system software structured for locality, exploiting techniques similar to those used in distributed systems. Specifically, we found two techniques to be effective in improving scalability of SMMP operating systems: (i) an object-oriented structure that minimizes sharing by providing a natural mapping from independent requests to independent code paths and data structures, and (ii) the selective partitioning, distribution, and replication of object implementations in order to improve locality. We describe concrete examples of distributed objects and our experience implementing them. We demonstrate that the distributed implementations improve the scalability of operating-system-intensive parallel workloads.
Jonathan Appavoo, Dilma Da Silva, Orran Krieger, Marc A. Auslander, Michal Ostrowski, Bryan S. Rosenburg, Amos Waterland, Robert W. Wisniewski, Jimi Xenidis, Michael Stumm, Livio B. Soares
ACM Trans. Comput. Syst.1
2006 Portability events: a programming model for scalable system infrastructures
abstract
Clustered Objects (COs) [1] have been proven to be an effective abstraction for improving scalability of systems software [2, 3]. But can we devise a programming model that would allow COs to live outside the specialized environments of these operating systems and still provide benefit? This paper presents an overview of SCOPE (Scalable COs with Portability Events), a prototype user-level library derived from the original implementation of COs in the K42 OS. Our initial results indicate that not only do the benefits of COs hold, but that the notion of a "portability event", responsible for maintaining the runtime environment of COs, provides a powerful programming model that will enable COs to be seamlessly transplanted into systems beyond K42. This paper overviews this programming model, provides details and preliminary results from its prototype implementation in SCOPE, and provides motivation to consider simple language mechanisms to further support portability events and this programming model in general.
Chris Matthews, Yvonne Coady, Jonathan Appavoo
PLOS3
2006 K42: building a complete operating system
abstract
K42 is one of the few recent research projects that is examining operating system design structure issues in the context of new whole-system design. K42 is open source and was designed from the ground up to perform well and to be scalable, customizable, and maintainable. The project was begun in 1996 by a team at IBM Research. Over the last nine years there has been a development effort on K42 from between six to twenty researchers and developers across IBM, collaborating universities, and national laboratories. K42 supports the Linux API and ABI, and is able to run unmodified Linux applications and libraries. The approach we took in K42 to achieve scalability and customizability has been successful.The project has produced positive research results, has resulted in contributions to Linux and the Xen hypervisor on Power, and continues to be a rich platform for exploring system software technology. Today, K42, is one of the key exploratory platforms in the DOE's FAST-OS program, is being used as a prototyping vehicle in IBM's PERCS project, and is being used by universities and national labs for exploratory research. In this paper, we provide insight into building an entire system by discussing the motivation and history of K42, describing its fundamental technologies, and presenting an overview of the research directions we have been pursuing.
Orran Krieger, Marc A. Auslander, Bryan S. Rosenburg, Robert W. Wisniewski, Jimi Xenidis, Dilma Da Silva, Michal Ostrowski, Jonathan Appavoo, Maria A. Butrico, Mark F. Mergen, Amos Waterland, Volkmar Uhlig
EuroSys8
2005 Improving dynamic update for operating systems
abstract
Modern operating systems are subject to a constant stream of patches and updates: to fix bugs, improve performance, or add features. Dynamic update offers significantly increased availability for operating systems, and enables administrators to avoid a difficult choice between the cost of down time and the risk of remaining unpatched. However, an operating system kernel is a unique environment for dynamic update; it is generally event-driven, multi-threaded, and involves a high degree of concurrency and asynchrony. It also provides a very restricted runtime environment. Existing dynamic update mechanisms are generally unsuited for use with operating-system code, either because they do not support concurrency [11, 13], require the system to be implemented in a specific language [1, 7, 9], or rely on a higher level of runtime support than is feasible within a traditional OS [5, 6].
Andrew Baumann, Jonathan Appavoo
SOSP2
2005 Providing Dynamic Update in an Operating System
Andrew Baumann, Gernot Heiser, Jonathan Appavoo, Dilma Da Silva, Orran Krieger, Robert W. Wisniewski, Jeremy Kerr
USENIX ATC, General Track3
2003 System Support for Online Reconfiguration
Craig A. N. Soules, Jonathan Appavoo, Kevin Hui, Robert W. Wisniewski, Dilma Da Silva, Gregory R. Ganger, Orran Krieger, Michael Stumm, Marc A. Auslander, Michal Ostrowski, Bryan S. Rosenburg, Jimi Xenidis
USENIX ATC, General Track2
2001 Supporting Hot-Swappable Components for System Software
abstract
Summary form only given. A hot-swappable component is one that can be replaced with a new or different implementation while the system is running and actively using the component. For example, a component of a TCP/IP protocol stack, when hot-swappable, can be replaced (perhaps to handle new denial-of-service attacks or improve performance), without disturbing existing network connections. The capability to swap components offers a number of potential advantages such as: online upgrades for high availability systems, improved performance due to dynamic adaptability and simplified software structures by allowing distinct policy and implementation options to be implemented in separate components (rather than as a single monolithic component) and dynamically swapped as needed. In order to hot-swap a component, it is necessary to (i) instantiate a replacement component; (ii) establish a quiescent state in which the component is temporarily idle; (iii) transfer state from the old component to the new component; (iv) swap the new component for the old; and (v) deallocate the old component.
Kevin Hui, Jonathan Appavoo, Robert W. Wisniewski, Marc A. Auslander, David Edelsohn, Benjamin Gamsa, Orran Krieger, Bryan S. Rosenburg, Michael Stumm
HotOS2
1999 Tornado: Maximizing Locality and Concurrency in a Shared Memory Multiprocessor Operating System
Benjamin Gamsa, Orran Krieger, Jonathan Appavoo, Michael Stumm
OSDI3