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.

Jennifer B. Sartor

dblp:53/187 · DBLP profile ↗
← Back
17ranked-venue papers
5as first author
1since 2021 · last 2021
—ORCID · none

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

Software engineering, systems software and programming languages · 10 · 4 first-authorSystems, architecture and hardware · 8 · 1 first-author · 1 since 2021

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
11 papers
Processor architecture and microarchitecture · 29% Memory systems · 27% Energy-efficient computing · 23%
Software engineering, system software, and programming languages
8 papers
Runtime systems and virtual machines · 84% Concurrent programming · 9% Operating systems · 7%

Topics — the 29 heaviest of 31, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Runtime systems and virtual machines
garbage collection
1.352021
Reliability-aware Garbage Collection for Hybrid HBM-DRAM Memories · ACM Trans. Archit. Code Optim. 2021
Write-rationing garbage collection for hybrid memories · PLDI 2018
Boosting the Priority of Garbage: Scheduling Collection on Heterogeneous Multicore Processors · ACM Trans. Archit. Code Optim. 2016
Memory systems
hybrid memory
0.512021
Reliability-aware Garbage Collection for Hybrid HBM-DRAM Memories · ACM Trans. Archit. Code Optim. 2021
Processor architecture and microarchitecture › instruction set architecture › instruction set extension
custom instruction
0.422016
MInGLE: An Efficient Framework for Domain Acceleration Using Low-Power Specialized Functional Units · ACM Trans. Archit. Code Optim. 2016
Accelerating an application domain with specialized functional units · ACM Trans. Archit. Code Optim. 2013
Processor architecture and microarchitecture › instruction set architecture › instruction set extension
custom instruction selection
0.422016
MInGLE: An Efficient Framework for Domain Acceleration Using Low-Power Specialized Functional Units · ACM Trans. Archit. Code Optim. 2016
Accelerating an application domain with specialized functional units · ACM Trans. Archit. Code Optim. 2013
Processor architecture and microarchitecture › instruction set architecture
instruction set extension
0.422016
MInGLE: An Efficient Framework for Domain Acceleration Using Low-Power Specialized Functional Units · ACM Trans. Archit. Code Optim. 2016
Accelerating an application domain with specialized functional units · ACM Trans. Archit. Code Optim. 2013
Memory systems › hybrid memory
hybrid memory management
0.312018
Write-rationing garbage collection for hybrid memories · PLDI 2018
Memory systems
non-volatile memory
0.312018
Write-rationing garbage collection for hybrid memories · PLDI 2018
Performance modeling and evaluation
workload characterization
0.322013
Bottle graphs: visualizing scalability bottlenecks in multi-threaded applications · OOPSLA 2013
Exploring multi-threaded Java application performance on multicore hardware · OOPSLA 2012
Energy-efficient computing › power management
dynamic voltage and frequency scaling
0.312017
DEP+BURST: Online DVFS Performance Prediction for Energy-Efficient Managed Language Execution · IEEE Trans. Computers 2017
Energy-efficient computing
energy management
0.312017
DEP+BURST: Online DVFS Performance Prediction for Energy-Efficient Managed Language Execution · IEEE Trans. Computers 2017
Performance modeling and evaluation
performance prediction
0.312017
DEP+BURST: Online DVFS Performance Prediction for Energy-Efficient Managed Language Execution · IEEE Trans. Computers 2017
Energy-efficient computing › energy-aware scheduling
big.LITTLE scheduling
0.212016
Boosting the Priority of Garbage: Scheduling Collection on Heterogeneous Multicore Processors · ACM Trans. Archit. Code Optim. 2016
Processor architecture and microarchitecture › multicore design
heterogeneous multicore
0.212016
Boosting the Priority of Garbage: Scheduling Collection on Heterogeneous Multicore Processors · ACM Trans. Archit. Code Optim. 2016
Concurrent programming
synchronization
0.212013
Criticality stacks: identifying critical threads in parallel programs using synchronization behavior · ISCA 2013
Parallel and multicore computing › parallel computing
parallel program analysis
0.212013
Criticality stacks: identifying critical threads in parallel programs using synchronization behavior · ISCA 2013
Hardware reliability and fault tolerance › soft errors
soft error rate
0.112021
Reliability-aware Garbage Collection for Hybrid HBM-DRAM Memories · ACM Trans. Archit. Code Optim. 2021
Runtime systems and virtual machines › garbage collection
concurrent garbage collection
0.112012
Exploring multi-threaded Java application performance on multicore hardware · OOPSLA 2012
Operating systems › resource management
memory management
0.112011
Why nothing matters: the impact of zeroing · OOPSLA 2011
Memory systems
cache management
0.112011
Why nothing matters: the impact of zeroing · OOPSLA 2011
Memory systems
memory management
0.112010
Z-rays: divide arrays and conquer speed and flexibility · PLDI 2010
Runtime systems and virtual machines
managed runtime
0.112017
DEP+BURST: Online DVFS Performance Prediction for Energy-Efficient Managed Language Execution · IEEE Trans. Computers 2017
Energy-efficient computing › power-performance tradeoff
energy-delay product optimization
0.112016
MInGLE: An Efficient Framework for Domain Acceleration Using Low-Power Specialized Functional Units · ACM Trans. Archit. Code Optim. 2016
Embedded and real-time systems › energy-efficient embedded systems
energy-efficient scheduling
0.112016
Boosting the Priority of Garbage: Scheduling Collection on Heterogeneous Multicore Processors · ACM Trans. Archit. Code Optim. 2016
Energy-efficient computing › low-power design
low-power processor design
0.012013
Accelerating an application domain with specialized functional units · ACM Trans. Archit. Code Optim. 2013
Energy-efficient computing › power management › dynamic voltage and frequency scaling
dynamic frequency scaling
0.012012
Exploring multi-threaded Java application performance on multicore hardware · OOPSLA 2012
Embedded and real-time systems › real-time scheduling
multicore scheduling
0.012012
Exploring multi-threaded Java application performance on multicore hardware · OOPSLA 2012
Energy-efficient computing
power management
0.012012
Exploring multi-threaded Java application performance on multicore hardware · OOPSLA 2012
Parallel and multicore computing › parallel scheduling
thread scheduling
0.012012
Exploring multi-threaded Java application performance on multicore hardware · OOPSLA 2012
Cloud and datacenter computing › resource management › real-time resource allocation
real-time memory management
0.012010
Z-rays: divide arrays and conquer speed and flexibility · PLDI 2010

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

page migration · 1.0allocation site prediction · 1.0object write profiling · 0.7trace analysis · 0.6performance modeling · 0.6adaptive scheduling algorithm · 0.5wear-leveling · 0.3wear leveling · 0.3program analysis · 0.3clustering · 0.2canonical representation · 0.2workload characterization · 0.1performance measurement · 0.1
YearPublicationVenuePosition
2021 Reliability-aware Garbage Collection for Hybrid HBM-DRAM Memories
abstract
Emerging workloads in cloud and data center infrastructures demand high main memory bandwidth and capacity. Unfortunately, DRAM alone is unable to satisfy contemporary main memory demands. High-bandwidth memory (HBM) uses 3D die-stacking to deliver 4–8× higher bandwidth. HBM has two drawbacks: (1) capacity is low, and (2) soft error rate is high. Hybrid memory combines DRAM and HBM to promise low fault rates, high bandwidth, and high capacity. Prior OS approaches manage HBM by mapping pages to HBM versus DRAM based on hotness (access frequency) and risk (susceptibility to soft errors). Unfortunately, these approaches operate at a coarse-grained page granularity, and frequent page migrations hurt performance. This article proposes a new class of reliability-aware garbage collectors for hybrid HBM-DRAM systems that place hot and low-risk objects in HBM and the rest in DRAM. Our analysis of nine real-world Java workloads shows that: (1) newly allocated objects in the nursery are frequently written, making them both hot and low-risk, (2) a small fraction of the mature objects are hot and low-risk, and (3) allocation site is a good predictor for hotness and risk. We propose RiskRelief, a novel reliability-aware garbage collector that uses allocation site prediction to place hot and low-risk objects in HBM. Allocation sites are profiled offline and RiskRelief uses heuristics to classify allocation sites as DRAM and HBM. The proposed heuristics expose Pareto-optimal trade-offs between soft error rate (SER) and execution time. RiskRelief improves SER by 9× compared to an HBM-Only system while at the same time improving performance by 29% compared to a DRAM-Only system. Compared to a state-of-the-art OS approach for reliability-aware data placement, RiskRelief eliminates all page migration overheads, which substantially improves performance while delivering similar SER. Reliability-aware garbage collection opens up a new opportunity to manage emerging HBM-DRAM memories at fine granularity while requiring no extra hardware support and leaving the programming model unchanged.
Wenjie Liu 0015, Shoaib Akram 0001, Jennifer B. Sartor, Lieven Eeckhout
ACM Trans. Archit. Code Optim.3
2019 Emulating and Evaluating Hybrid Memory for Managed Languages on NUMA Hardware
abstract
Non-volatile memory (NVM) has the potential to become a mainstream memory technology and challenge DRAM. Researchers evaluating the speed, endurance, and abstractions of hybrid memories with DRAM and NVM typically use simulation, making it easy to evaluate the impact of different hardware technologies and parameters. Simulation is, however, extremely slow, limiting the applications and datasets in the evaluation. Simulation also precludes critical workloads, especially those written in managed languages such as Java and C#. Good methodology embraces a variety of techniques for evaluating new ideas, expanding the experimental scope, and uncovering new insights. This paper introduces a platform to emulate hybrid memory for managed languages using commodity NUMA servers. Emulation complements simulation but offers richer software experimentation. We use a thread-local socket to emulate DRAM and a remote socket to emulate NVM. We use standard C library routines to allocate heap memory on the DRAM and NVM sockets for use with explicit memory management or garbage collection. We evaluate the emulator using various configurations of write-rationing garbage collectors that improve NVM lifetimes by limiting writes to NVM, using 15 applications and various datasets and workload configurations. We show emulation and simulation confirm each other's trends in terms of writes to NVM for different software configurations, increasing our confidence in predicting future system effects. Emulation brings novel insights, such as the non-linear effects of multi-programmed workloads on NVM writes, and that Java applications write significantly more than their C++ equivalents. We make our software infrastructure publicly available to advance the evaluation of novel memory management schemes on hybrid memories.
Shoaib Akram 0001, Jennifer B. Sartor, Kathryn S. McKinley, Lieven Eeckhout
ISPASS2
2018 Write-rationing garbage collection for hybrid memories
abstract
Emerging Non-Volatile Memory (NVM) technologies offer high capacity and energy efficiency compared to DRAM, but suffer from limited write endurance and longer latencies. Prior work seeks the best of both technologies by combining DRAM and NVM in hybrid memories to attain low latency, high capacity, energy efficiency, and durability. Coarsegrained hardware and OS optimizations then spread writes out (wear-leveling) and place highly mutated pages in DRAM to extend NVM lifetimes. Unfortunately even with these coarse-grained methods, popular Java applications exact impractical NVM lifetimes of 4 years or less. This paper shows how to make hybrid memories practical, without changing the programming model, by enhancing garbage collection in managed language runtimes. We find object write behaviors offer two opportunities: (1) 70% of writes occur to newly allocated objects, and (2) 2% of objects capture 81% of writes to mature objects. We introduce writerationing garbage collectors that exploit these fine-grained behaviors. They extend NVM lifetimes by placing highly mutated objects in DRAM and read-mostly objects in NVM. We implement two such systems. (1) Kingsguard-nursery places new allocation in DRAM and survivors in NVM, reducing NVM writes by 5× versus NVM only with wear-leveling. (2) Kingsguard-writers (KG-W) places nursery objects in DRAM and survivors in a DRAM observer space. It monitors all mature object writes and moves unwritten mature objects from DRAM to NVM. Because most mature objects are unwritten, KG-W exploits NVM capacity while increasing NVM lifetimes by 11×. It reduces the energy-delay product by 32% over DRAM-only and 29% over NVM-only. This work opens up new avenues for making hybrid memories practical.
Shoaib Akram 0001, Jennifer B. Sartor, Kathryn S. McKinley, Lieven Eeckhout
PLDI2
2017 Analyzing the scalability of managed language applications with speedup stacks
abstract
Understanding the reasons why multi-threaded applications do not achieve perfect scaling on modern multicore hardware is challenging. Furthermore, more and more modern programs are written in managed languages, which have extra service threads (e.g., to perform memory management), which may retard scalability and complicate performance analysis. In this paper, we extend speedup stacks, a previously-presented visualization tool to analyze multi-threaded program scalability, to managed applications. Speedup stacks are comprehensive bar graphs that break down an application's execution to explain the main causes of sublinear speedup, i.e., when some threads are not allowing the application to progress, and thus increasing the execution time. We not only expand speedup stacks to analyze how the managed language's service threads affect overall scalability, but also implement speedup stacks while running on native hardware. We monitor the application and service threads' scheduling behavior using light-weight OS kernel modules, incurring under 1% overhead running unmodified Java benchmarks. We add two performance delimiters targeting managed applications: garbage collection and main initialization activities. We analyze the scalability limitations of these benchmarks and the impact of using both a stop-the-world and a concurrent garbage collector with speedup stacks. Our visualization tool facilitates the identification of scalability bottlenecks both between application threads and of service threads, pointing developers to whether optimization should be focused on the language runtime or the application. Speedup stacks provide better program understanding for both program and system designers, which can help optimize multicore processor performance.
Jennifer B. Sartor, Kristof Du Bois, Stijn Eyerman, Lieven Eeckhout
ISPASS1
2017 DEP+BURST: Online DVFS Performance Prediction for Energy-Efficient Managed Language Execution
abstract
Making modern computer systems energy-efficient is of paramount importance. Dynamic Voltage and Frequency Scaling (DVFS) is widely used to manage the energy and power consumption in modern processors; however, for DVFS to be effective, we need the ability to accurately predict the performance impact of scaling a processor's voltage and frequency. No accurate performance predictors exist for multithreaded applications, let alone managed language applications. In this work, we propose DEP+BURST, a new performance predictor for managed multithreaded applications that takes into account synchronization, interthread dependencies, and store bursts, which frequently occur in managed language workloads. Our predictor lowers the performance estimation error from 27 percent for a state-of-the-art predictor to 6 percent on average, for a set of multithreaded Java applications when the frequency is scaled from 1 to 4 GHz. We also novelly propose an energy management framework that uses DEP+BURST to reduce energy consumption. We first target reducing the processor's energy consumption by lowering its frequency and hence its power consumption, while staying within a user-specified maximum slowdown threshold. For a slowdown of 5 and 10 percent, our energy manager reduces on average 13 and 19 percent of energy consumed by the memory-intensive benchmarks. We then use the energy manager to optimize total system energy, achieving an average reduction of 15.6 percent for a set of Java benchmarks. Accurate performance predictors are key to achieving high performance while keeping energy consumption low for managed language applications using DVFS.
Shoaib Akram 0001, Jennifer B. Sartor, Lieven Eeckhout
IEEE Trans. Computers2
2016 DVFS performance prediction for managed multithreaded applications
abstract
Making modern computer systems energy-efficient is of paramount importance. Dynamic Voltage and Frequency Scaling (DVFS) is widely used to manage the energy and power consumption in modern processors; however, for DVFS to be effective, we need the ability to accurately predict the performance impact of scaling a processor's voltage and frequency. No accurate performance predictors exist for multithreaded applications, let alone managed language applications. In this work, we propose DEP+BURST, a new performance predictor for managed multithreaded applications that takes into account synchronization, inter-thread dependencies, and store bursts, which frequently occur in managed language workloads. Our predictor lowers the performance estimation error from 27% for a state-of-the-art predictor to 6% on average, for a set of multithreaded Java applications when the frequency is scaled from 1 to 4 GHz. We also novelly propose an energy management framework that uses DEP+BURST to save energy while meeting performance goals within a user-specified bound. Our proposed energy manager delivers average energy savings of 13% and 19% for a user-specified slowdown of 5% and 10% for memory-intensive Java benchmarks. Accurate performance predictors are key to achieving high performance while keeping energy consumption low for managed language applications using DVFS.
Shoaib Akram 0001, Jennifer B. Sartor, Lieven Eeckhout
ISPASS2
2016 Boosting the Priority of Garbage: Scheduling Collection on Heterogeneous Multicore Processors
abstract
While hardware is evolving toward heterogeneous multicore architectures, modern software applications are increasingly written in managed languages. Heterogeneity was born of a need to improve energy efficiency; however, we want the performance of our applications not to suffer from limited resources. How best to schedule managed language applications on a mix of big, out-of-order cores and small, in-order cores is an open question, complicated by the host of service threads that perform key tasks such as memory management. These service threads compete with the application for core and memory resources, and garbage collection (GC) must sometimes suspend the application if there is not enough memory available for allocation. In this article, we explore concurrent garbage collection’s behavior, particularly when it becomes critical, and how to schedule it on a heterogeneous system to optimize application performance. While some applications see no difference in performance when GC threads are run on big versus small cores, others—those with GC criticality —see up to an 18% performance improvement. We develop a new, adaptive scheduling algorithm that responds to GC criticality signals from the managed runtime, giving more big-core cycles to the concurrent collector when it is under pressure and in danger of suspending the application. Our experimental results show that our GC-criticality-aware scheduler is robust across a range of heterogeneous architectures with different core counts and frequency scaling and across heap sizes. Our algorithm is performance and energy neutral for GC-uncritical Java applications and significantly speeds up GC-critical applications by 16%, on average, while being 20% more energy efficient for a heterogeneous multicore with three big cores and one small core.
Shoaib Akram 0001, Jennifer B. Sartor, Kenzo Van Craeynest, Wim Heirman, Lieven Eeckhout
ACM Trans. Archit. Code Optim.2
2016 MInGLE: An Efficient Framework for Domain Acceleration Using Low-Power Specialized Functional Units
abstract
The end of Dennard scaling leads to new research directions that try to cope with the utilization wall in modern chips, such as the design of specialized architectures. Processor customization utilizes transistors more efficiently, optimizing not only for performance but also for power. However, hardware specialization for each application is costly and impractical due to time-to-market constraints. Domain-specific specialization is an alternative that can increase hardware reutilization across applications that share similar computations. This article explores the specialization of low-power processors with custom instructions (CIs) that run on a specialized functional unit. We are the first, to our knowledge, to design CIs for an application domain and across basic blocks, selecting CIs that maximize both performance and energy efficiency improvements. We present the Merged Instructions Generator for Large Efficiency (MInGLE), an automated framework that identifies and selects CIs. Our framework analyzes large sequences of code (across basic blocks) to maximize acceleration potential while also performing partial matching across applications to optimize for reuse of the specialized hardware. To do this, we convert the code into a new canonical representation, the Merging Diagram, which represents the code’s functionality instead of its structure. This is key to being able to find similarities across such large code sequences from different applications with different coding styles. Groups of potential CIs are clustered depending on their similarity score to effectively reduce the search space. Additionally, we create new CIs that cover not only whole-body loops but also fragments of the code to optimize hardware reutilization further. For a set of 11 applications from the media domain, our framework generates CIs that significantly improve the energy-delay product (EDP) and performance speedup. CIs with the highest utilization opportunities achieve an average EDP improvement of 3.8 × compared to a baseline processor modeled after an Intel Atom. We demonstrate that we can efficiently accelerate a domain with partially matched CIs, and that their design time, from identification to selection, stays within tractable bounds.
Cecilia González-Alvarez, Jennifer B. Sartor, Carlos Álvarez 0001, Daniel Jiménez-González, Lieven Eeckhout
ACM Trans. Archit. Code Optim.2
2015 Automatic design of domain-specific instructions for low-power processors
abstract
This paper explores hardware specialization of low-power processors to improve performance and energy efficiency. Our main contribution is an automated framework that analyzes instruction sequences of applications within a domain at the loop body level and identifies exactly and partially-matching sequences across applications that can become custom instructions. Our framework transforms sequences to a new code abstraction, a Merging Diagram, that improves similarity identification, clusters alike groups of potential custom instructions to effectively reduce the search space, and selects merged custom instructions to efficiently exploit the available customizable area. For a set of 11 media applications, our fast framework generates instructions that significantly improve the energy-delay product and speed-up, achieving more than double the savings as compared to a technique analyzing sequences within basic blocks. This paper shows that partially-matched custom instructions, which do not significantly increase design time, are crucial to achieving higher energy efficiency at limited hardware areas.
Cecilia González-Alvarez, Jennifer B. Sartor, Carlos Álvarez 0001, Daniel Jiménez-González, Lieven Eeckhout
ASAP2
2014 Cooperative cache scrubbing
abstract
Managing the limited resources of power and memory bandwidth while improving performance on multicore hardware is challenging. In particular, more cores demand more memory bandwidth, and multi-threaded applications increasingly stress memory systems, leading to more energy consumption. However, we demonstrate that not all memory traffic is necessary. For modern Java programs, 10 to 60% of DRAM writes are useless, because the data on these lines are dead - the program is guaranteed to never read them again. Furthermore, reading memory only to immediately zero initialize it wastes bandwidth. We propose a software/hardware cooperative solution: the memory manager communicates dead and zero lines with cache scrubbing instructions. We show how scrubbing instructions satisfy MESI cache coherence protocol invariants and demonstrate them in a Java Virtual Machine and multicore simulator. Scrubbing reduces average DRAM traffic by 59%, total DRAM energy by 14%, and dynamic DRAM energy by 57% on a range of configurations. Cooperative software/hardware cache scrubbing reduces memory bandwidth and improves energy efficiency, two critical problems in modern systems.
Jennifer B. Sartor, Wim Heirman, Steve Blackburn, Lieven Eeckhout, Kathryn S. McKinley
PACT1
2013 Criticality stacks: identifying critical threads in parallel programs using synchronization behavior
abstract
Analyzing multi-threaded programs is quite challenging, but is necessary to obtain good multicore performance while saving energy. Due to synchronization, certain threads make others wait, because they hold a lock or have yet to reach a barrier. We call these critical threads, i.e., threads whose performance is determinative of program performance as a whole. Identifying these threads can reveal numerous optimization opportunities, for the software developer and for hardware.
Kristof Du Bois, Stijn Eyerman, Jennifer B. Sartor, Lieven Eeckhout
ISCA3
2013 Bottle graphs: visualizing scalability bottlenecks in multi-threaded applications
abstract
Understanding and analyzing multi-threaded program performance and scalability is far from trivial, which severely complicates parallel software development and optimization. In this paper, we present bottle graphs, a powerful analysis tool that visualizes multi-threaded program performance, in regards to both per-thread parallelism and execution time. Each thread is represented as a box, with its height equal to the share of that thread in the total program execution time, its width equal to its parallelism, and its area equal to its total running time. The boxes of all threads are stacked upon each other, leading to a stack with height equal to the total program execution time. Bottle graphs show exactly how scalable each thread is, and thus guide optimization towards those threads that have a smaller parallel component (narrower), and a larger share of the total execution time (taller), i.e. to the 'neck' of the bottle.
Kristof Du Bois, Jennifer B. Sartor, Stijn Eyerman, Lieven Eeckhout
OOPSLA2
2013 Accelerating an application domain with specialized functional units
abstract
Hardware specialization has received renewed interest recently as chips are hitting power limits. Chip designers of traditional processor architectures have primarily focused on general-purpose computing, partially due to time-to-market pressure and simpler design processes. But new power limits require some chip specialization. Although hardware configured for a specific application yields large speedups for low-power dissipation, its design is more complex and less reusable. We instead explore domain-based specialization, a scalable approach that balances hardware’s reusability and performance efficiency. We focus on specialization using customized compute units that accelerate particular operations. In this article, we develop automatic techniques to identify code sequences from different applications within a domain that can be targeted to a new custom instruction that will be run inside a configurable specialized functional unit (SFU). We demonstrate that using a canonical representation of computations finds more common code sequences among applications that can be mapped to the same custom instruction, leading to larger speedups while specializing a smaller core area than previous pattern-matching techniques. We also propose new heuristics to narrow the search space of domain-specific custom instructions, finding those that achieve the best performance across applications. We estimate the overall performance achieved with our automatic techniques using hardware models on a set of nine media benchmarks, showing that when limiting the core area devoted to specialization, the SFU customization with the largest speedups includes both application- and domain-specific custom instructions. We demonstrate that exploring domain-specific hardware acceleration is key to continued computing system performance improvements.
Cecilia González-Alvarez, Jennifer B. Sartor, Carlos Álvarez 0001, Daniel Jiménez-González, Lieven Eeckhout
ACM Trans. Archit. Code Optim.2
2012 Exploring multi-threaded Java application performance on multicore hardware
abstract
While there have been many studies of how to schedule applications to take advantage of increasing numbers of cores in modern-day multicore processors, few have focused on multi-threaded managed language applications which are prevalent from the embedded to the server domain. Managed languages complicate performance studies because they have additional virtual machine threads that collect garbage and dynamically compile, closely interacting with application threads. Further complexity is introduced as modern multicore machines have multiple sockets and dynamic frequency scaling options, broadening opportunities to reduce both power and running time.
Jennifer B. Sartor, Lieven Eeckhout
OOPSLA1
2011 Why nothing matters: the impact of zeroing
abstract
Memory safety defends against inadvertent and malicious misuse of memory that may compromise program correctness and security. A critical element of memory safety is zero initialization. The direct cost of zero initialization is surprisingly high: up to 12.7%, with average costs ranging from 2.7 to 4.5% on a high performance virtual machine on IA32 architectures. Zero initialization also incurs indirect costs due to its memory bandwidth demands and cache displacement effects. Existing virtual machines either: a) minimize direct costs by zeroing in large blocks, or b) minimize indirect costs by zeroing in the allocation sequence, which reduces cache displacement and bandwidth. This paper evaluates the two widely used zero initialization designs, showing that they make different tradeoffs to achieve very similar performance. Our analysis inspires three better designs: (1) bulk zeroing with cache-bypassing (non-temporal) instructions to reduce the direct and indirect zeroing costs simultaneously, (2) concurrent non-temporal bulk zeroing that exploits parallel hardware to move work off the application's critical path, and (3) adaptive zeroing, which dynamically chooses between (1) and (2) based on available hardware parallelism. The new software strategies offer speedups sometimes greater than the direct overhead, improving total performance by 3% on average. Our findings invite additional optimizations and microarchitectural support.
Xi Yang 0021, Steve Blackburn, Daniel Frampton, Jennifer B. Sartor, Kathryn S. McKinley
OOPSLA4
2010 Z-rays: divide arrays and conquer speed and flexibility
abstract
Arrays are the ubiquitous organization for indexed data. Throughout programming language evolution, implementations have laid out arrays contiguously in memory. This layout is problematic in space and time. It causes heap fragmentation, garbage collection pauses in proportion to array size, and wasted memory for sparse and over-provisioned arrays. Because of array virtualization in managed languages, an array layout that consists of indirection pointers to fixed-size discontiguous memory blocks can mitigate these problems transparently. This design however incurs significant overhead, but is justified when real-time deadlines and space constraints trump performance.
Jennifer B. Sartor, Steve Blackburn, Daniel Frampton, Martin Hirzel, Kathryn S. McKinley
PLDI1
2008 No bit left behind: the limits of heap data compression
abstract
On one hand, the high cost of memory continues to drive demand for memory efficiency on embedded and general purpose computers. On the other hand, programmers are increasingly turning to managed languages like Java for their functionality, programmability, and reliability. Managed languages, however, are not known for their memory efficiency, creating a tension between productivity and performance. This paper examines the sources and types of memory inefficiencies in a set of Java benchmarks. Although prior work has proposed specific heap data compression techniques, they are typically restricted to one model of inefficiency. This paper generalizes and quantitatively compares previously proposed memorysaving approaches and idealized heap compaction. It evaluates a variety of models based on strict and deep object equality, field value equality, removing bytes that are zero, and compressing fields and arrays with a limited number and range of values. The results show that substantial memory reductions are possible in the Java heap. For example, removing bytes that are zero from arrays is particularly effective, reducing the application's memory footprint by 41% on average.We are the first to combine multiple savings models on the heap, which very effectively reduces the application by up to 86%, on average 58%. These results demonstrate that future work should be able to combine a high productivity programming language with memory efficiency.
Jennifer B. Sartor, Martin Hirzel, Kathryn S. McKinley
ISMM1