Copyright by Emery David Berger 2002

Total Page:16

File Type:pdf, Size:1020Kb

Copyright by Emery David Berger 2002 Copyright by Emery David Berger 2002 The Dissertation Committee for Emery David Berger certifies that this is the approved version of the following dissertation: Memory Management for High-Performance Applications Committee: Kathryn S. McKinley, Supervisor James C. Browne Michael D. Dahlin Stephen W. Keckler Benjamin G. Zorn Memory Management for High-Performance Applications by Emery David Berger, M.S., B.S. Dissertation Presented to the Faculty of the Graduate School of The University of Texas at Austin in Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy The University of Texas at Austin August 2002 To my wife and family. Acknowledgments I’d like to thank my advisor, Kathryn McKinley, and my de facto co-advisor Ben Zorn, for their invaluable guidance, insights, and help along the way. If not for Kathryn and Ben, it wouldn’t have happened. Really. I’d also like to thank my first advisor, Bobby Blumofe, for helping me to develop a rigorous analytical and experimental approach to systems work. Thanks to the Novell Corporation for supporting my doctoral work with a fellow- ship, and special thanks to Ben Zorn and Microsoft Research for supporting my doctorate with two internships, a grant, and a Microsoft Research Fellowship. Thanks to Bruce Porter for his advice and support through the years, going above and beyond in rescuing certain unnamed people’s chestnuts from fires, and to Steve Keckler and Calvin Lin, for great advice and hilarious conversation. Systems work requires lots of resources, and the CS staff have been tremendously helpful if not downright necessary, especially Patti Spencer, Fletcher Mattox, Boyd Merworth, and Kay Nettle. It would have been possible, but far less enjoyable, were it not for the life support system that was “the lunch bunch”, who made graduate school arguably a little too fun, except for the grueling spectacle of practice talks: Brendon Cahoon (thanks for bringing me your advisor!), Rich Cardone, Sam Guyer, Daniel Jimenez,´ Ram Mettu, and Phoebe Weidmann. The fact that we were never kicked out of any restaurant/cafe/bar´ is testament v to Austin’s reputation as a tolerant city. It’s been a blast. Thanks to Scott Kaplan and Yannis Smaragdakis for their friendship, support of my work, and advice that probably saved my career multiple times. Thanks to Tim Collins for all of the above, plus for the zeal of his unending quest to help get me through to the other side. Thanks to my mom and dad and to my mother-in-law Joyce for helping us out in so many ways. Finally, I dedicate this thesis to my wife Elayne, the love of my life. El, you are my density. And thanks to our babies, Sophia and Benjamin, just for being wonderful. EMERY DAVID BERGER The University of Texas at Austin August 2002 vi Memory Management for High-Performance Applications Publication No. Emery David Berger, Ph.D. The University of Texas at Austin, 2002 Supervisor: Kathryn S. McKinley Memory managers are a source of performance and robustness problems for ap- plication software. Current general-purpose memory managers do not scale on multipro- cessors, cause false sharing of heap objects, and systematically leak memory. Even on uniprocessors, the memory manager is often a performance bottleneck. General-purpose memory managers also do not provide the bulk deletion semantics required by many ap- plications, including web servers and compilers. The approaches taken to date to address these and other memory management problems have been largely ad hoc. Programmers often attempt to work around these problems by writing custom memory managers. This approach leads to further difficulties, including data corruption caused when programmers inadvertently free custom-allocated objects to the general-purpose memory manager. In this thesis, we develop a framework for analyzing and designing high-quality memory managers. We develop a memory management infrastructure called heap layers that allows programmers to compose efficient memory managers from reusable and inde- vii pendently testable components. We conduct the first comprehensive examination of custom memory managers and show that most of these achieve slight or no performance improve- ments over a state-of-the-art general-purpose memory manager. Building on the knowledge gained in this study, we develop a hybrid memory management abstraction called reaps that combines the best of both approaches, allowing server applications to manage memory quickly and flexibly while avoiding memory leaks. We identify a number of previously unnoticed problems with concurrent memory management and analyze previous work in the light of these discoveries. We then present a concurrent memory manager called Hoard and prove that it avoids these problems. viii Table of Contents Acknowledgments v Abstract vii List of Tables xiv List of Figures xvii Chapter 1 Introduction 1 1.1 Problems with Current Memory Managers . 1 1.2 Contributions . 3 1.3 Summary of Contributions . 5 1.4 Outline . 6 Chapter 2 Background and Related Work 8 2.1 Basic Concepts . 8 2.2 General-Purpose Memory Management . 10 2.3 Memory Management Infrastructures . 11 2.3.1 Vmalloc . 11 ix 2.3.2 CMM . 12 2.4 Custom Memory Management . 13 2.4.1 Construction and Use of Custom Memory Managers . 13 2.4.2 Evaluation of Custom Memory Management . 15 Chapter 3 Experimental Methodology 17 3.1 Benchmarks . 17 3.1.1 Memory-Intensive Benchmarks . 17 3.1.2 General-Purpose Benchmarks . 19 3.2 Platforms . 20 3.3 Execution Environment . 20 Chapter 4 Composing High-Performance Memory Managers 22 4.1 Heap Layers . 24 4.1.1 Example: Composing a Per-Class Allocator . 27 4.1.2 A Library of Heap Layers . 29 4.2 Building Special-Purpose Allocators . 31 4.2.1 197.parser . 31 4.2.2 176.gcc . 33 4.3 Building General-Purpose Allocators . 35 4.3.1 The Kingsley Allocator . 36 4.3.2 The Lea Allocator . 38 4.3.3 Experimental Results . 40 4.4 Software Engineering Benefits . 41 4.5 Heap Layers as an Experimental Infrastructure . 43 x 4.6 Conclusion . 44 Chapter 5 Reconsidering Custom Memory Management 51 5.1 Benchmarks . 52 5.1.1 Emulating Custom Semantics . 54 5.2 Custom Memory Managers . 55 5.2.1 Why Programmers Use Custom Memory Managers . 55 5.2.2 A Taxonomy of Custom Memory Managers . 59 5.3 Evaluating Custom Memory Managers . 61 5.3.1 Evaluating Regions . 63 5.4 Results . 64 5.4.1 Runtime Performance . 64 5.4.2 Memory Consumption . 65 5.4.3 Evaluating the Memory Consumption of Region Allocation . 67 5.5 Discussion . 68 5.6 Conclusions . 70 Chapter 6 Memory Management for Servers 71 6.1 Drawbacks of Regions . 72 6.2 Desiderata . 73 6.3 Reaps: Generalizing Regions and Heaps . 73 6.3.1 Design and Implementation . 74 6.4 Results . 76 6.4.1 Runtime Performance . 77 6.4.2 Memory Consumption . 78 xi 6.4.3 Experimental Comparison to Previous Work . 78 6.4.4 Reap in Apache . 79 6.5 Conclusion . 80 Chapter 7 Scalable Concurrent Memory Management 82 7.1 Motivation . 85 7.1.1 Allocator-Induced False Sharing of Heap Objects . 86 7.1.2 Blowup . 88 7.2 The Hoard Memory Allocator . 90 7.2.1 Bounding Blowup . 91 7.2.2 Example . 92 7.2.3 Avoiding False Sharing . 94 7.3 Analytical Results . 96 7.4 Bounds on Blowup . 96 7.4.1 Proof . 97 7.5 Bounds on Synchronization . 98 7.5.1 Per-processor Heap Contention . 98 7.5.2 Global Heap Contention . 99 7.6 Experimental Results . 100 7.6.1 Speed . 102 7.6.2 Scalability . 103 7.7 False sharing . 107 7.8 Fragmentation . 109 7.8.1 Single-threaded Applications . 109 7.8.2 Multithreaded Applications . 110 xii 7.8.3 Sensitivity Study . 110 7.9 Related Work . 112 7.9.1 Taxonomy of Memory Allocator Algorithms . 112 7.9.2 Single Heap Allocation . 113 7.9.3 Multiple Heap Allocation . 114 7.10 Conclusion . 117 Chapter 8 Conclusion 119 8.1 Contributions . 119 8.2 Future Work . 120 8.3 Availability of Software . 122 Bibliography 123 Vita 134 xiii List of Tables 3.1 Memory-intensive benchmarks. All programs are written in C, except as noted. 18 3.2 Statistics for the memory-intensive benchmarks. We divide by runtime with the Lea allocator to obtain memory operations per second. 18 3.3 General-purpose benchmarks. All programs are written in C, except as noted. 19 3.4 Statistics for the General-Purpose Benchmark suite. 19 3.5 Platform characteristics. The number in parenthesis after CPU clock speed indicates the number of processors. In every case, the L2 caches are unified and the L1 caches are not. 20 4.1 Executable sizes for variants of 197.parser. 32 4.2 A library of heap layers, divided by category. 46 4.3 Runtime (in seconds) for the general-purpose allocators described in this chapter. See Figure 4.9(a) for the graph of this data normalized to the Lea allocator. 47 xiv 4.4 Memory consumption (in bytes) for the general-purpose allocators.
Recommended publications
  • Quantifying the Performance of Garbage Collection Vs. Explicit Memory Management
    Quantifying the Performance of Garbage Collection vs. Explicit Memory Management ¤ Matthew Hertz Emery D. Berger Computer Science Department Dept. of Computer Science Canisius College University of Massachusetts Amherst Buffalo, NY 14208 Amherst, MA 01003 [email protected] [email protected] ABSTRACT physical memory is scarce, paging causes garbage collection to run Garbage collection yields numerous software engineering benefits, an order of magnitude slower than explicit memory management. but its quantitative impact on performance remains elusive. One Categories and Subject Descriptors can compare the cost of conservative garbage collection to explicit memory management in C/C++ programs by linking in an appro- D.3.3 [Programming Languages]: Dynamic storage management; priate collector. This kind of direct comparison is not possible for D.3.4 [Processors]: Memory management (garbage collection) languages designed for garbage collection (e.g., Java), because pro- General Terms grams in these languages naturally do not contain calls to free. Experimentation, Measurement, Performance Thus, the actual gap between the time and space performance of explicit memory management and precise, copying garbage collec- Keywords tion remains unknown. oracular memory management, garbage collection, explicit mem- We introduce a novel experimental methodology that lets us quan- ory management, performance analysis, time-space tradeoff, through- tify the performance of precise garbage collection versus explicit put, paging memory management. Our system allows us to treat unaltered Java programs as if they used explicit memory management by relying 1. Introduction on oracles to insert calls to free. These oracles are generated Garbage collection, or automatic memory management, provides from profile information gathered in earlier application runs.
    [Show full text]
  • ACDC: Towards a Universal Mutator for Benchmarking Heap Management Systems
    ACDC: Towards a Universal Mutator for Benchmarking Heap Management Systems Martin Aigner Christoph M. Kirsch University of Salzburg fi[email protected] Abstract liveness deallocation delay We present ACDC, an open-source benchmark that may be config- ured to emulate explicit single- and multi-threaded memory alloca- tion, sharing, access, and deallocation behavior to expose virtually time any relevant allocator performance differences. ACDC mimics pe- ... ... allocation accesses last access deallocation riodic memory allocation and deallocation (AC) as well as persis- tent memory (DC). Memory may be allocated thread-locally and shared among multiple threads to study multicore scalability and even false sharing. Memory may be deallocated by threads other lifetime than the allocating threads to study blowup memory fragmentation. Memory may be accessed and deallocated sequentially in alloca- Figure 1: The lifecycle of an object tion order or in tree-like traversals to expose allocator deficiencies in exploiting spatial locality. We demonstrate ACDC’s capabili- ties with seven state-of-the-art allocators for C/C++ in an empir- ical study which also reveals interesting performance differences accesses to the allocated memory, and ends with the deallocation between the allocators. of the allocated memory. The time from allocation to deallocation is called the lifetime of an object. The time from allocation to last Categories and Subject Descriptors D.3.4 [Programming Lan- access is called the liveness of an object which ACDC, unlike other guages]: Memory management benchmarking tools, also emulates explicitly by controlling object General Terms Performance, Measurement access. The difference between lifetime and liveness of an object, here called deallocation delay, emulates mutator inefficiencies in Keywords benchmark; explicit heap management; multicore identifying dead objects for deallocation which may in turn expose allocator inefficiencies in handling dead memory.
    [Show full text]
  • Linux Multicore Performance Analysis and Optimization in a Nutshell
    LLiinnuuxx MMuullttiiccoorree PPeerrffoorrmmaannccee AAnnaallyyssiiss aanndd OOppttiimmiizzaattiioonn iinn aa NNuuttsshheellll PPhhiilliipp MMuuccccii mmuuccccii aatt eeeeccss..uuttkk..eedduu NNOOTTUURR 22000099 TTrroonnddhheeiimm,, NNoorrwwaayy NOTUR2009 Philip Mucci, Multicore Optimization 1 SScchheedduullee ● 10:15 Begin ● (1:00) ● 11:15 – 11:30 Coffee ● (1:30) ● 13:00 – 14:00 Lunch ● (2:00) ● 16:00 Finish ● 18:00 Beer NOTUR2009 Philip Mucci, Multicore Optimization 2 OOuuttlliinnee ● Commentary ● Programming Models ● HW/SW Overview ● Multicore ● Working With the Optimization Compiler ● Performance Analysis ● Single Core Optimization NOTUR2009 Philip Mucci, Multicore Optimization 3 IInniittiiaall CCoommmmeennttaarryy NOTUR2009 Philip Mucci, Multicore Optimization 4 OOppttiimmiizzaattiioonn iiss aann AArrtt FFoorrmm ● As such, this tutorial is partially subjective. ● Expect some contradictions to your experience(s). – Don't panic. ● Negative comments (on the tutorial) are welcomed (afterwards). – Please include “bug fixes”. – mucci at eecs.utk.edu NOTUR2009 Philip Mucci, Multicore Optimization 5 WWhhaatt''ss ssoo ssppeecciiaall aabboouutt MMuullttiiccoorree?? ● Parallel programming is somewhat easier... – Shared address space means direct access to data. ● Multicore is a great latency hiding mechanism. – Most computers are doing many different activities at once. (What about us?) ● We really can't get much faster without liquid cooling. ● Multicore appears to lower power and cooling requirements per FLOP. NOTUR2009 Philip Mucci, Multicore
    [Show full text]
  • Predicting Execution Times with Partial Simulations in Virtual Memory Research: Why and How
    2020 53rd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO) Predicting Execution Times With Partial Simulations in Virtual Memory Research: Why and How Mohammad Agbarya∗ Idan Yaniv∗ Jayneel Gandhi Dan Tsafrir Technion – Israel Institute of Technology VMware Research Technion & VMware Research Abstract—Computer architects frequently use cycle-accurate simulations, which incur heavy overheads. Recently, virtual mem- workload W full simulator runtime ory studies increasingly employ a lighter-weight methodology (e.g., gem5) that utilizes partial simulations—of only the memory subsystem— of processor P whose output is fed into a mathematical linear model that predicts execution runtimes. The latter methodology is much faster, but its accuracy is only assumed, never rigorously validated. workload W partial simulator TLB metrics runtime model runtime We question the assumption and put it to the test by developing (e.g., only TLB) for processor P e.g., the TLB Mosalloc, the Mosaic Memory Allocator. Mosalloc backs the of processor P and workload W virtual memory of applications with arbitrary combinations of miss-rate 4KB, 2MB, and 1GB pages (each combination forms a “mosaic” of pages). Previous studies used a single page size per execution Figure 1: Partial vs. full (cycle-accurate) simulation. (either 4KB or 2MB) to generate exactly two execution samples, which defined the aforementioned linear model. In contrast, Mosalloc can generate numerous samples, allowing us to test processor P while experiencing a TLB miss rate of M (where instead of assume the model’s accuracy. We find that prediction M can be the output of a partial simulation), then the runtime of errors of existing models can be as high as 25%–192%.
    [Show full text]
  • Quantifying and Improving the Performance of Garbage Collection
    QUANTIFYING AND IMPROVING THE PERFORMANCE OF GARBAGE COLLECTION A Dissertation Presented by MATTHEW HERTZ Submitted to the Graduate School of the University of Massachusetts Amherst in partial fulfillment of the requirements for the degree of DOCTOR OF PHILOSOPHY September 2006 Computer Science °c Copyright by Matthew Hertz 2006 All Rights Reserved QUANTIFYING AND IMPROVING THE PERFORMANCE OF GARBAGE COLLECTION A Dissertation Presented by MATTHEW HERTZ Approved as to style and content by: Emery D. Berger, Chair J. Eliot B. Moss , Member Kathryn S. McKinley, Member Scott F. Kaplan, Member Andras Csaba Moritz, Member W. Bruce Croft, Department Chair Computer Science To Sarah for reminding me of everything I can do and to Shoshanna for inspiring me to do more. ACKNOWLEDGMENTS I am most grateful to my advisor, Emery Berger, for everything he has done throughout this thesis. I appreciate his guidance, suggestions, and inspiration. I feel especially fortu- nate for the patience he has shown with me throughout all the twists and turns my life took getting through this dissertation. I must also thank Eliot Moss and Kathryn McKinley for their leadership and support. I will be forever grateful that they took a chance on a student with a less-than-stellar aca- demic record and provided me with a fertile, inspiring research environment. They are both very knowledgeable and I benefited from our discussions in a myriad of ways. They have also served as members of my committee and I appreciate their helpful comments and sug- gestions. Thanks also to Scott Kaplan, another member of my committee, for his advice and feedback.
    [Show full text]
  • Efficient Intra-Operating System Protection Against Harmful Dmas
    Efficient Intra-Operating System Protection Against Harmful DMAs Moshe Malka, Nadav Amit, and Dan Tsafrir, Technion—Israel Institute of Technology https://www.usenix.org/conference/fast15/technical-sessions/presentation/malka This paper is included in the Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST ’15). February 16–19, 2015 • Santa Clara, CA, USA ISBN 978-1-931971-201 Open access to the Proceedings of the 13th USENIX Conference on File and Storage Technologies is sponsored by USENIX Efficient Intra-Operating System Protection Against Harmful DMAs Moshe Malka Nadav Amit Dan Tsafrir Technion – Israel Institute of Technology Abstract this mode, the VM directly programs device DMAs using Operating systems can defend themselves against mis- its notion of (guest) “physical” addresses. The host uses behaving I/O devices and drivers by employing intra-OS the IOMMU to redirect these accesses to where the VM protection. With “strict” intra-OS protection, the OS uses memory truly resides, thus protecting its own memory the IOMMU to map each DMA buffer immediately before and the memory of the other VMs. With inter protec- the DMA occurs and to unmap it immediately after. Strict tion, IOVAs are mapped to physical memory locations protection is costly due to IOMMU-related hardware over- infrequently, only upon such events as VM creation and heads, motivating “deferred” intra-OS protection, which migration, and host management operations such as mem- trades off some safety for performance. ory swapping, deduplication, and NUMA migration. Such We investigate the Linux intra-OS protection mapping mappings are therefore denoted persistent or static [57].
    [Show full text]
  • Heapshield: Library-Based Heap Overflow Protection for Free
    HeapShield: Library-Based Heap Overflow Protection for Free Emery D. Berger Dept. of Computer Science University of Massachusetts Amherst Amherst, MA 01003 [email protected] Abstract scalable multiprocessor memory management [6, 21]. It has also While numerous approaches have been proposed to prevent stack been used as the basis for the default memory manager in the overflows, heap overflows remain both a security vulnerability and FreeBSD operating system [19]. a frequent source of bugs. Previous approaches to preventing these We show here how we can apply this heap layout to ensure that overflows require source code or can slow programs down by a library functions never cause heap overflows. Our approach incurs factor of two or more. We present HeapShield, an approach that no space overhead beyond that used to manage the heap because it prevents all library-based heap overflows at runtime. It works with relies only on data structures already in place to support ordinary malloc free arbitrary, unaltered binaries. It incurs no space overhead and is memory allocation operations ( and ). We use this efficient, imposing minimal impact on real application performance heap layout to efficiently implement a function that computes the (2% on average). remaining size of any allocated buffer, and then replace all unsafe library functions with safe variants that silently truncate overflows. HeapShield imposes no perceivable performance impact on 1. Introduction these library functions, and it adds no overhead to any other as- The C library contains a host of library calls that present well- pect of program execution. It is also orthogonal to techniques that known security vulnerabilities.
    [Show full text]
  • Vysok´E Uˇcení Technick´Ev Brnˇe
    VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ INTELIGENTN´ICH SYSTEM´ U˚ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS A TOOL FOR ANALYZING PERFORMANCE OF MEM- ORY ALLOCATORS IN LINUX DIPLOMOVA´ PRACE´ MASTER’S THESIS AUTOR PRACE´ Bc. PETR MULLER AUTHOR BRNO 2010 VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ INTELIGENTN´ICH SYSTEM´ U˚ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS NASTROJ´ PRO ANALYZU´ VYKONU´ ALOKATOR´ U˚ PAMETIˇ V OPERACNˇ ´IM SYSTEMU´ LINUX A TOOL FOR ANALYZING PERFORMANCE OF MEMORY ALLOCATORS IN LINUX DIPLOMOVA´ PRACE´ MASTER’S THESIS AUTOR PRACE´ Bc. PETR MULLER AUTHOR VEDOUC´I PRACE´ Doc. Ing. TOMA´ Sˇ VOJNAR, Ph.D. SUPERVISOR BRNO 2010 Abstrakt Tato diplomov´apr´ace prezentuje n´astroj, kter´yumoˇzˇnujeanal´yzuvlastnost´ıdynamick´ych pamˇet'ov´ych alok´ator˚use zamˇeˇren´ımna jejich v´ykon. Pr´aceidentifikuje d˚uleˇzit´ev´ykonnostn´ı metriky pamˇet'ov´ych alok´ator˚ua tak´efaktory prostˇred´ıa programu, kter´etyto metriky mo- hou ovlivnit. Na z´akladˇetˇechto nalezen´ych metrik byl navrhnut a implementov´ann´astroj, kter´yumoˇznuje jejich sbˇera anal´yzu. N´astroj umoˇzˇnujetvorbu r˚uzn´ych sc´en´aˇr˚upouˇzit´ı alok´ator˚utak, aby bylo moˇzn´eanalyzovat chov´an´ıalok´ator˚uza r˚uzn´ych podm´ınek. Tento n´astroj byl testov´anna nˇekolika dostupn´ych pamˇet'ov´ych alok´atorech se svobodnou licenc´ı. Abstract This diploma thesis presents a tool for dynamic memory allocator analysis, focused on their performance. The work identifies the important memory allocator performance metrics, as well as the environment and program factors influencing these metrics.
    [Show full text]
  • Bilal Shirazi 98107317 CS499 Research Paper: an Analysis of Concurrent Memory Allocators Presented To: Dr
    Bilal Shirazi 98107317 CS499 Research Paper: An analysis of concurrent memory allocators Presented To: Dr. Peter Buhr 1 1.0 Introduction: This project examines concurrent dynamic memory-allocation. Dynamic memory-allocation occurs when a program requests storage other than for local variables on the stack. Dynamic memory- allocation and deallocation is made available via programming language statements such as new and delete, or via runtime routines such as malloc and free. Some programming languages provide garbage collection so there is no explicit deallocation. In a concurrent environment, each task has its own stack so allocation and deallocation of local variables never causes contention among tasks. Furthermore, it is rare to share stack storage among tasks. However, heap allocation and deallocation often occurs among tasks via the shared heap-storage area. This shared resource can cause significant contention during allocation and deallocation. Furthermore, allocated heap storage is often passed around among tasks, resulting in shared access. These issues do not exist in a sequential environment. Hence, the demands of dynamic memory allocation are more complex in a concurrent environment and can have a significant effect on the performance of dynamic memory-intensive applications. Therefore, it is crucial to have good dynamic memory-allocation in a concurrent system. 2 2.0 Objectives : The objectives of this research project are: 1. To understand and validate the claims made by the researchers who created the Hoard memory allocator [1], currently considered the best dynamic memory allocator for concurrent systems. 2. To compare the uC++ memory allocator to the Hoard memory allocator. uC++ [3] is a concurrent system for C++.
    [Show full text]
  • 0Sim: Preparing System Software for a World with Terabyte-Scale Memories
    Session 4A: Huge memories and distributed databases — Now I remember! 0sim: Preparing System Software for a World with Terabyte-scale Memories Mark Mansi Michael M. Swift [email protected] [email protected] University of Wisconsin – Madison University of Wisconsin – Madison Abstract of the Twenty-Fifth International Conference on Architectural Support Recent advances in memory technologies mean that com- for Programming Languages and Operating Systems (ASPLOS ’20), modity machines may soon have terabytes of memory; how- March 16–20, 2020, Lausanne, Switzerland. ACM, New York, NY, USA, 16 pages. https://doi.org/10.1145/3373376.3378451 ever, such machines remain expensive and uncommon today. Hence, few programmers and researchers can debug and pro- totype fixes for scalability problems or explore new system 1 Introduction behavior caused by terabyte-scale memories. Computer memory sizes have grown continuously since the To enable rapid, early prototyping and exploration of sys- dawn of computing. Past designs that rigidly limited the max- tem software for such machines, we built and open-sourced imum amount of memory faced huge difficulties as memory the 0sim simulator. 0sim uses virtualization to simulate the capacity increased exponentially (e.g., IBM’s System/360 had execution of huge workloads on modest machines. Our key an architectural limit of 28MB [11]). This growth trend will observation is that many workloads follow the same control continue as technological advances greatly expand the den- flow regardless of their input. We call such workloads data- sity and decrease the cost of memory. Most recently, Intel’s oblivious. 0sim harnesses data-obliviousness to make huge 3D Xpoint memory supports up to 6TB on a two-socket simulations feasible and fast via memory compression.
    [Show full text]
  • Hoard: a Scalable Memory Allocator For
    Hoard: A Scalable Memory Allocator for Multithreaded Applications Ý £ £ Emery D. Berger£ Kathryn S. McKinley Robert D. Blumofe Paul R. Wilson Ý £ Department of Computer Sciences Department of Computer Science The University of Texas at Austin University of Massachusetts Austin, Texas 78712 Amherst, Massachusetts 01003 g femery, rdb, wilson @cs.utexas.edu [email protected] ABSTRACT servers. Many of these applications make intensive use of dynamic Parallel, multithreaded C and C++ programs such as web servers, memory allocation. Unfortunately, the memory allocator is often a database managers, news servers, and scientific applications are be- bottleneck that severely limits program scalability on multiproces- coming increasingly prevalent. For these applications, the memory sor systems [21]. Existing serial memory allocators do not scale allocator is often a bottleneck that severely limits program perfor- well for multithreaded applications, and existing concurrent allo- mance and scalability on multiprocessor systems. Previous alloca- cators do not provide one or more of the following features, all of tors suffer from problems that include poor performance and scal- which are needed in order to attain scalable and memory-efficient ability, and heap organizations that introduce false sharing. Worse, allocator performance: many allocators exhibit a dramatic increase in memory consump- Speed. A memory allocator should perform memory operations tion when confronted with a producer-consumer pattern of object (i.e., malloc and free) about as fast as a state-of-the-art se- allocation and freeing. This increase in memory consumption can rial memory allocator. This feature guarantees good allocator range from a factor of È (the number of processors) to unbounded performance even when a multithreaded program executes memory consumption.
    [Show full text]
  • Copyright by Emery D. Berger 2002
    Copyright by Emery D. Berger 2002 The Dissertation Committee for Emery D. Berger certifies that this is the approved version of the following dissertation: Memory Management for High-Performance Applications Committee: Kathryn S. McKinley, Supervisor James C. Browne Michael D. Dahlin Stephen W. Keckler Benjamin G. Zorn Memory Management for High-Performance Applications by Emery D. Berger, M.S., B.S. Dissertation Presented to the Faculty of the Graduate School of The University of Texas at Austin in Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy The University of Texas at Austin August 2002 Memory Management for High-Performance Applications Publication No. Emery D. Berger, Ph.D. The University of Texas at Austin, 2002 Supervisor: Kathryn S. McKinley Fast and effective memory management is crucial for many applications, including web servers, database managers, and scientific codes. Unfortunately, current memory managers often do not meet these requirements. These memory managers also do not provide the support required to avoid memory leaks in server applications, and prevent multithreaded applications from scaling on multiprocessor systems. In fact, current memory managers cause some applications to slow down with the addition of more processors. In this thesis, we address these memory management problems for high-performance applications. We develop a memory management infrastructure called heap layers that allows us to compose efficient general-purpose memory managers from components. We show that most custom memory managers achieve slight or no performance improvements over current general-purpose memory managers. We build a hybrid memory manager called reap that combines region-based and general-purpose memory management, sim- plifying memory management for server applications.
    [Show full text]