Demo Data from EDBT 2026 / reviewers in the wild / expert
Trishul M. Chilimbi
dblp:99/2941
· DBLP profile ↗
28ranked-venue papers
13as first author
0since 2021 · last 2017
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 21 · 11 first-authorSystems, architecture and hardware · 10 · 3 first-authorArtificial intelligence and machine learning · 2Databases, data management, data science and information retrieval · 2
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
17 papers |
Memory systems · 26% Performance modeling and evaluation · 23% Hardware accelerators and domain-specific architectures · 11% | |
| Software engineering, system software, and programming languages
15 papers |
Program analysis · 46% Debugging and program repair · 16% Software testing · 9% | |
| Databases, data mining, and information retrieval
3 papers |
Information retrieval · 100% | |
| Artificial intelligence
1 paper |
Efficient and distributed learning · 100% |
Topics — the 30 heaviest of 50, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Performance modeling and evaluation
workload characterization |
0.3 | 2 | 2017 | Optimizing CNNs on Multicores for Scalability, Performance and Goodput · ASPLOS 2017 Efficient Representations and Abstractions for Quantifying and Exploiting Data Reference Locality · PLDI 2001 |
Hardware accelerators and domain-specific architectures › machine learning accelerator › DNN training
CNN training |
0.3 | 1 | 2017 | Optimizing CNNs on Multicores for Scalability, Performance and Goodput · ASPLOS 2017 |
High-performance computing
performance optimization |
0.3 | 1 | 2017 | Optimizing CNNs on Multicores for Scalability, Performance and Goodput · ASPLOS 2017 |
Program analysis
dynamic analysis |
0.3 | 4 | 2009 | HOLMES: Effective statistical debugging via efficient path profiling · ICSE 2009 Preferential path profiling: compactly numbering interesting paths · POPL 2007 HeapMD: identifying heap-based bugs using anomaly detection · ASPLOS 2006 |
Parallel and multicore computing
distributed deep learning training |
0.2 | 1 | 2015 | Performance Modeling and Scalability Optimization of Distributed Deep Learning Systems · KDD 2015 |
Memory systems › memory management
virtual memory |
0.2 | 1 | 2015 | Page overlays: an enhanced virtual memory framework to enable fine-grained memory management · ISCA 2015 |
Information retrieval
web search |
0.2 | 2 | 2013 | Maguro, a system for indexing and searching over very large text collections · WSDM 2013 Mobile processors for energy-efficient web search · ACM Trans. Comput. Syst. 2011 |
Machine learning › Efficient and distributed learning › distributed training
distributed DNN training |
0.2 | 1 | 2014 | Project Adam: Building an Efficient and Scalable Deep Learning Training System · OSDI 2014 |
Memory systems › cache
cache performance |
0.2 | 5 | 2006 | Cache-conscious coallocation of hot data streams · PLDI 2006 Dynamic Hot Data Stream Prefetching for General-Purpose Programs · PLDI 2002 Efficient Representations and Abstractions for Quantifying and Exploiting Data Reference Locality · PLDI 2001 |
Program analysis › dynamic analysis › profiling
path profiling |
0.2 | 2 | 2009 | HOLMES: Effective statistical debugging via efficient path profiling · ICSE 2009 Preferential path profiling: compactly numbering interesting paths · POPL 2007 |
Information retrieval
search engines |
0.2 | 1 | 2013 | Maguro, a system for indexing and searching over very large text collections · WSDM 2013 |
Debugging and program repair
fault localization |
0.2 | 2 | 2009 | HOLMES: Effective statistical debugging via efficient path profiling · ICSE 2009 HeapMD: identifying heap-based bugs using anomaly detection · ASPLOS 2006 |
Memory systems › cache management
cache sharing |
0.1 | 1 | 2011 | All-window profiling and composable models of cache sharing · PPoPP 2011 |
Embedded and real-time systems › embedded processor
mobile processor |
0.1 | 1 | 2011 | Mobile processors for energy-efficient web search · ACM Trans. Comput. Syst. 2011 |
Memory systems › data layout optimization
cache-conscious data structure layout |
0.1 | 3 | 2006 | Cache-conscious coallocation of hot data streams · PLDI 2006 Cache-Conscious Structure Layout · PLDI 1999 Cache-Conscious Structure Definition · PLDI 1999 |
Emerging computing paradigms
approximate computing |
0.1 | 1 | 2010 | Green: a framework for supporting energy-conscious programming using controlled approximation · PLDI 2010 |
Energy-efficient computing › energy-efficient software
energy-aware programming |
0.1 | 1 | 2010 | Green: a framework for supporting energy-conscious programming using controlled approximation · PLDI 2010 |
Program analysis
static analysis |
0.1 | 1 | 2009 | SPEED: precise and efficient static estimation of program computational complexity · POPL 2009 |
Debugging and program repair › fault localization
statistical debugging |
0.1 | 1 | 2009 | HOLMES: Effective statistical debugging via efficient path profiling · ICSE 2009 |
Hardware accelerators and domain-specific architectures
machine learning accelerator |
0.1 | 1 | 2017 | Optimizing CNNs on Multicores for Scalability, Performance and Goodput · ASPLOS 2017 |
Concurrent programming › atomicity
atomic sections |
0.1 | 1 | 2008 | Inferring locks for atomic sections · PLDI 2008 |
Program analysis › concurrent program analysis
lock inference |
0.1 | 1 | 2008 | Inferring locks for atomic sections · PLDI 2008 |
Performance modeling and evaluation
profiling |
0.1 | 1 | 2008 | All-window profiling of concurrent executions · PPoPP 2008 |
Program analysis › dynamic analysis
profiling |
0.1 | 1 | 2007 | Preferential path profiling: compactly numbering interesting paths · POPL 2007 |
Software testing
test coverage |
0.1 | 1 | 2007 | Quantifying the effectiveness of testing via efficient residual path profiling · ESEC/SIGSOFT FSE 2007 |
Compilers and program optimization › memory optimization
data layout optimization |
0.1 | 4 | 2006 | An efficient profile-analysis framework for data-layout optimizations · POPL 2002 Cache-conscious coallocation of hot data streams · PLDI 2006 Cache-Conscious Structure Layout · PLDI 1999 |
Memory systems
data locality |
0.1 | 2 | 2002 | An efficient profile-analysis framework for data-layout optimizations · POPL 2002 Efficient Representations and Abstractions for Quantifying and Exploiting Data Reference Locality · PLDI 2001 |
Operating systems › resource management
memory management |
0.1 | 1 | 2015 | Page overlays: an enhanced virtual memory framework to enable fine-grained memory management · ISCA 2015 |
Software maintenance and evolution › log analysis
anomaly detection |
0.1 | 1 | 2006 | HeapMD: identifying heap-based bugs using anomaly detection · ASPLOS 2006 |
Runtime systems and virtual machines
garbage collection |
0.1 | 1 | 2006 | Profile-guided proactive garbage collection for locality optimization · PLDI 2006 |
Methods — techniques the papers use, named apart from their topics
performance characterization · 0.3parallelism analysis · 0.3workload characterization · 0.2performance-per-joule analysis · 0.2state space exploration · 0.2performance modeling · 0.2microarchitecture-level analysis · 0.2measurement · 0.2path profiling · 0.2interference modeling · 0.1all-window profiling · 0.1controlled approximation · 0.1statistical analysis · 0.1quantitative functions · 0.1linear invariant generation · 0.1counter instrumentation · 0.1software transactional memory · 0.1optimistic concurrency · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2017 | Optimizing CNNs on Multicores for Scalability, Performance and GoodputabstractConvolutional Neural Networks (CNN) are a class of Ar- tificial Neural Networks (ANN) that are highly efficient at the pattern recognition tasks that underlie difficult AI prob- lems in a variety of domains, such as speech recognition, object recognition, and natural language processing. CNNs are, however, computationally intensive to train. This paper presents the first characterization of the per- formance optimization opportunities for training CNNs on CPUs. Our characterization includes insights based on the structure of the network itself (i.e., intrinsic arithmetic inten- sity of the convolution and its scalability under parallelism) as well as dynamic properties of its execution (i.e., sparsity of the computation). Samyam Rajbhandari, Yuxiong He, Olatunji Ruwase, Michael Carbin, Trishul M. Chilimbi |
ASPLOS | 5 |
| 2015 | Page overlays: an enhanced virtual memory framework to enable fine-grained memory managementabstractMany recent works propose mechanisms demonstrating the potential advantages of managing memory at a fine (e.g., cache line) granularity---e.g., fine-grained deduplication and fine-grained memory protection. Unfortunately, existing virtual memory systems track memory at a larger granularity (e.g., 4 KB pages), inhibiting efficient implementation of such techniques. Simply reducing the page size results in an unacceptable increase in page table overhead and TLB pressure. Vivek Seshadri, Gennady Pekhimenko, Olatunji Ruwase, Onur Mutlu, Phillip B. Gibbons, Michael A. Kozuch, Todd C. Mowry, Trishul M. Chilimbi |
ISCA | 8 |
| 2015 | Performance Modeling and Scalability Optimization of Distributed Deep Learning SystemsabstractBig deep neural network (DNN) models trained on large amounts of data have recently achieved the best accuracy on hard tasks, such as image and speech recognition. Training these DNNs using a cluster of commodity machines is a promising approach since training is time consuming and compute-intensive. To enable training of extremely large DNNs, models are partitioned across machines. To expedite training on very large data sets, multiple model replicas are trained in parallel on different subsets of the training examples with a global parameter server maintaining shared weights across these replicas. The correct choice for model and data partitioning and overall system provisioning is highly dependent on the DNN and distributed system hardware characteristics. These decisions currently require significant domain expertise and time consuming empirical state space exploration. Feng Yan 0001, Olatunji Ruwase, Yuxiong He, Trishul M. Chilimbi |
KDD | 4 |
| 2014 | Project Adam: Building an Efficient and Scalable Deep Learning Training System
Trishul M. Chilimbi, Yutaka Suzue, Johnson Apacible, Karthik Kalyanaraman |
OSDI | 1 |
| 2013 | Maguro, a system for indexing and searching over very large text collectionsabstractMaguro is a system for efficiently searching very large collections of text content of up to 1 trillion documents at low cost. Search engines span across content that is very dynamic and highly augmented with metadata to the tail content of the web. A long tail distribution of content calls for different trade-offs in the design space for good efficiency across the entire index range. Maguro is designed for the long tail of content with less dynamics and less metadata, but very good cost efficiency. Maguro is part of the serving stack in Bing and allows us to scale the index significantly better. Knut Magne Risvik, Trishul M. Chilimbi, Henry Tan, Karthik Kalyanaraman |
WSDM | 2 |
| 2011 | All-window profiling and composable models of cache sharingabstractAs multi-core processors become commonplace and cloud computing is gaining acceptance, more applications are run in a shared cache environment. Cache sharing depends on a concept called footprint, which depends on all cache accesses not just cache misses. Previous work has recognized the importance of footprint but has not provided a method for accurate measurement, mainly because the complete measurement requires counting data access in all execution windows, which takes time quadratic in the length of a trace. The paper first presents an algorithm efficient enough for off-line use to approximately measure the footprint with a guaranteed precision. The cost of the analysis can be adjusted by changing the precision. Then the paper presents a composable model. For a set of programs, the model uses the all-window footprint of each program to predict its cache interference with other programs without running these programs together. The paper evaluates the efficiency of all-window profiling using the SPEC 2000 benchmarks and compares the footprint interference model with a miss-rate based model and with exhaustive testing. Xiaoya Xiang, Bin Bao, Tongxin Bai, Chen Ding 0001, Trishul M. Chilimbi |
PPoPP | 5 |
| 2011 | Mobile processors for energy-efficient web searchabstractAs cloud and utility computing spreads, computer architects must ensure continued capability growth for the data centers that comprise the cloud. Given megawatt scale power budgets, increasing data center capability requires increasing computing hardware energy efficiency. To increase the data center's capability for work, the work done per Joule must increase. We pursue this efficiency even as the nature of data center applications evolves. Unlike traditional enterprise workloads, which are typically memory or I/O bound, big data computation and analytics exhibit greater compute intensity. This article examines the efficiency of mobile processors as a means for data center capability. In particular, we compare and contrast the performance and efficiency of the Microsoft Bing search engine executing on the mobile-class Atom processor and the server-class Xeon processor. Bing implements statistical machine learning to dynamically rank pages, producing sophisticated search results but also increasing computational intensity. While mobile processors are energy-efficient, they exact a price for that efficiency. The Atom is 5× more energy-efficient than the Xeon when comparing queries per Joule. However, search queries on Atom encounter higher latencies, different page results, and diminished robustness for complex queries. Despite these challenges, quality-of-service is maintained for most, common queries. Moreover, as different computational phases of the search engine encounter different bottlenecks, we describe implications for future architectural enhancements, application tuning, and system architectures. After optimizing the Atom server platform, a large share of power and cost go toward processor capability. With optimized Atoms, more servers can fit in a given data center power budget. For a data center with 15MW critical load, Atom-based servers increase capability by 3.2× for Bing. Vijay Janapa Reddi, Benjamin C. Lee, Trishul M. Chilimbi, Kushagra Vaid |
ACM Trans. Comput. Syst. | 3 |
| 2010 | Web search using mobile cores: quantifying and mitigating the price of efficiencyabstractThe commoditization of hardware, data center economies of scale, and Internet-scale workload growth all demand greater power efficiency to sustain scalability. Traditional enterprise workloads, which are typically memory and I/O bound, have been well served by chip multiprocessors com- prising of small, power-efficient cores. Recent advances in mobile computing have led to modern small cores capable of delivering even better power efficiency. While these cores can deliver performance-per-Watt efficiency for data center workloads, small cores impact application quality-of-service robustness, and flexibility, as these workloads increasingly invoke computationally intensive kernels. These challenges constitute the price of efficiency. We quantify efficiency for an industry-strength online web search engine in production at both the microarchitecture- and system-level, evaluating search on server and mobile-class architectures using Xeon and Atom processors. Vijay Janapa Reddi, Benjamin C. Lee, Trishul M. Chilimbi, Kushagra Vaid |
ISCA | 3 |
| 2010 | Green: a framework for supporting energy-conscious programming using controlled approximationabstractEnergy-efficient computing is important in several systems ranging from embedded devices to large scale data centers. Several application domains offer the opportunity to tradeoff quality of service/solution (QoS) for improvements in performance and reduction in energy consumption. Programmers sometimes take advantage of such opportunities, albeit in an ad-hoc manner and often without providing any QoS guarantees. Woongki Baek, Trishul M. Chilimbi |
PLDI | 2 |
| 2009 | HOLMES: Effective statistical debugging via efficient path profilingabstractStatistical debugging aims to automate the process of isolating bugs by profiling several runs of the program and using statistical analysis to pinpoint the likely causes of failure. In this paper, we investigate the impact of using richer program profiles such as path profiles on the effectiveness of bug isolation. We describe a statistical debugging tool called HOLMES that isolates bugs by finding paths that correlate with failure. We also present an adaptive version of HOLMES that uses iterative, bug-directed profiling to lower execution time and space overheads. We evaluate HOLMES using programs from the SIR benchmark suite and some large, real-world applications. Our results indicate that path profiles can help isolate bugs more precisely by providing more information about the context in which bugs occur. Moreover, bug-directed profiling can efficiently isolate bugs with low overheads, providing a scalable and accurate alternative to sparse random sampling. Trishul M. Chilimbi, Ben Liblit, Krishna K. Mehra, Aditya V. Nori, Kapil Vaswani |
ICSE | 1 |
| 2009 | SPEED: precise and efficient static estimation of program computational complexityabstractThis paper describes an inter-procedural technique for computing symbolic bounds on the number of statements a procedure executes in terms of its scalar inputs and user-defined quantitative functions of input data-structures. Such computational complexity bounds for even simple programs are usually disjunctive, non-linear, and involve numerical properties of heaps. We address the challenges of generating these bounds using two novel ideas.We introduce a proof methodology based on multiple counter instrumentation (each counter can be initialized and incremented at potentially multiple program locations) that allows a given linear invariant generation tool to compute linear bounds individually on these counter variables. The bounds on these counters are then composed together to generate total bounds that are non-linear and disjunctive. We also give an algorithm for automating this proof methodology. Our algorithm generates complexity bounds that are usually precise not only in terms of the computational complexity, but also in terms of the constant factors.Next, we introduce the notion of user-defined quantitative functions that can be associated with abstract data-structures, e.g., length of a list, height of a tree, etc. We show how to compute bounds in terms of these quantitative functions using a linear invariant generation tool that has support for handling uninterpreted functions. We show application of this methodology to commonly used data-structures (namely lists, list of lists, trees, bit-vectors) using examples from Microsoft product code. We observe that a few quantitative functions for each data-structure are usually sufficient to allow generation of symbolic complexity bounds of a variety of loops that iterate over these data-structures, and that it is straightforward to define these quantitative functions.The combination of these techniques enables generation of precise computational complexity bounds for real-world examples (drawn from Microsoft product code and C++ STL library code) for some of which it is non-trivial to even prove termination. Such automatically generated bounds are very useful for early detection of egregious performance problems in large modular codebases that are constantly being changed by multiple developers who make heavy use of code written by others without a good understanding of their implementation complexity. Sumit Gulwani, Krishna K. Mehra, Trishul M. Chilimbi |
POPL | 3 |
| 2008 | Inferring locks for atomic sectionsabstractAtomic sections are a recent and popular idiom to support the development of concurrent programs. Updates performed within an atomic section should not be visible to other threads until the atomic section has been executed entirely. Traditionally, atomic sections are supported through the use of optimistic concurrency, either using a transactional memory hardware, or an equivalent software emulation (STM). Sigmund Cherem, Trishul M. Chilimbi, Sumit Gulwani |
PLDI | 2 |
| 2008 | All-window profiling of concurrent executionsabstractThis paper first demonstrates the need for all-window profiling in a concurrent execution, then presents an approximate algorithm, and finally discusses related work. Chen Ding 0001, Trishul M. Chilimbi |
PPoPP | 2 |
| 2007 | Preferential path profiling: compactly numbering interesting pathsabstractPath profiles provide a more accurate characterization of a program's dynamic behavior than basic block or edge profiles, but are relatively more expensive to collect. This has limited their use in practice despite demonstrations of their advantages over edge profiles for a wide variety of applications.We present a new algorithm called preferential path profiling (PPP), that reduces the overhead of path profiling. PPP leverages the observation that most consumers of path profiles are only interested in a subset of all program paths. PPP achieves low overhead by separating interesting paths from other paths and assigning a set of unique and compact numbers to these interesting paths. We draw a parallel between arithmetic coding and path numbering, and use this connection to prove an optimality result for the compactness of path numbering produced by PPP. This compact path numbering enables our PPP implementation to record path information in an array instead of a hash table. Our experimental results indicate that PPP reduces the runtime overhead of profiling paths exercised by the largest (ref) inputs of the SPEC CPU2000 benchmarks from 50% on average (maximum of 132%) to 15% on average (maximum of 26%) as compared to a state-of-the-art path profiler. Kapil Vaswani, Aditya V. Nori, Trishul M. Chilimbi |
POPL | 3 |
| 2007 | Quantifying the effectiveness of testing via efficient residual path profilingabstractSoftware testing is extensively used for uncovering bugs inlarge, complex software. Testing relies on well designed regression test suites that anticipate all reasonable software usage scenarios. Unfortunately, testers today have no way of knowing how much of real-world software usage was untested by their regression suite. Recent advances in low-overhead path profiling provide the opportunity to rectify this deficiency and perform residual path profiling on deployed software. Residual path profiling identifies all paths executed bydeployed software that were untested during software development. We extend prior research to perform low-overhead interprocedural path profiling. We demonstrate experimentally that low-overhead path profiling, both intraprocedural and interprocedural, provides valuable quantitative information on testing effectiveness. We also show that residual edge profiling is inadequate as a significant number of untested paths include no new untested edges. Trishul M. Chilimbi, Aditya V. Nori, Kapil Vaswani |
ESEC/SIGSOFT FSE | 1 |
| 2006 | HeapMD: identifying heap-based bugs using anomaly detectionabstractWe present the design, implementation, and evaluation of HeapMD, a dynamic analysis tool that finds heap-based bugs using anomaly detection. HeapMD is based upon the observation that, in spite of the evolving nature of the heap, several of its properties remain stable. HeapMD uses this observation in a novel way: periodically, during the execution of the program, it computes a suite of metrics which are sensitive to the state of the heap. These metrics track heap behavior, and the stability of the heap reflects quantitatively in the values of these metrics. The "normal" ranges of stable metrics, obtained by running a program on multiple inputs, are then treated as indicators of correct behaviour, and are used in conjunction with an anomaly detector to find heap-based bugs. Using HeapMD, we were able to find 40 heap-based bugs, 31 of them previously unknown, in 5 large, commercial applications. Trishul M. Chilimbi, Vinod Ganapathy |
ASPLOS | 1 |
| 2006 | Profile-guided proactive garbage collection for locality optimizationabstractMany applications written in garbage collected languages have large dynamic working sets and poor data locality. We present a new system for continuously improving program data locality at run time with low overhead. Our system proactively reorganizes the heap by leveraging the garbage collector and uses profile information collected through a low-overhead mechanism to guide the reorganization at run time. The key contributions include making a case that garbage collection should be viewed as a proactive technique for improving data locality by triggering garbage collection for locality optimization independently of normal garbage collection for space, combining page and cache locality optimization in the same system, and demonstrating that sampling provides sufficiently detailed data access information to guide both page and cache locality optimization with low runtime overhead. We present experimental results obtained by modifying a commercial, state-of-the-art garbage collector to support our claims. Independently triggering garbage collection for locality optimization significantly improved optimizations benefits. Combining page and cache locality optimizations in the same system provided larger average execution time improvements (17%) than either alone (page 8%, cache 7%). Finally, using sampling limited profiling overhead to less than 3%, on average. Wen-ke Chen, Sanjay Bhansali, Trishul M. Chilimbi, Xiaofeng Gao 0003, Weihaw Chuang |
PLDI | 3 |
| 2006 | Cache-conscious coallocation of hot data streamsabstractThe memory system performance of many programs can be improved by coallocating contemporaneously accessed heap objects in the same cache block. We present a novel profile-based analysis for producing such a layout. The analysis achieves cacheconscious coallocation of a hot data stream H (i.e., a regular data access pattern that frequently repeats) by isolating and combining allocation sites of object instances that appear in H such that intervening allocations coming from other sites are separated. The coallocation solution produced by the analysis is enforced by an automatic tool, cminstr, that redirects a program's heap allocations to a run-time coallocation library comalloc. We also extend the analysis to coallocation at object field granularity. The resulting field coallocation solution generalizes common data restructuring techniques, such as field reordering, object splitting, and object merging, and allows their combination. Furthermore, it provides insight into object restructuring by breaking down the coallocation benefit on a per-technique basis, which provides the opportunity to pick the "sweet spot" for each program. Experimental results using a set of memory-performance-limited benchmarks, including a few SPECInt2000 programs, and Microsoft VisualFoxPro, indicate that programs possess significant coallocation opportunities. Automatic object coallocation improves execution time by 13% on average in the presence of hardware prefetching. Hand-implemented field coallocation solutions for two of the benchmarks produced additional improvements (12% and 22%) but the effort involved suggests implementing an automated version for type-safe languages, such as Java and C#. Trishul M. Chilimbi, Ran Shaham |
PLDI | 1 |
| 2004 | Low-overhead memory leak detection using adaptive statistical profilingabstractSampling has been successfully used to identify performance optimization opportunities. We would like to apply similar techniques to check program correctness. Unfortunately, sampling provides poor coverage of infrequently executed code, where bugs often lurk. We describe an adaptive profiling scheme that addresses this by sampling executions of code segments at a rate inversely proportional to their execution frequency. To validate our ideas, we have implemented SWAT, a novel memory leak detection tool. SWAT traces program allocations/ frees to construct a heap model and uses our adaptive profiling infrastructure to monitor loads/stores to these objects with low overhead. SWAT reports 'stale' objects that have not been accessed for a 'long' time as leaks. This allows it to find all leaks that manifest during the current program execution. Since SWAT has low runtime overhead (‹5%), and low space overhead (‹10% in most cases and often less than 5%), it can be used to track leaks in production code that take days to manifest. In addition to identifying the allocations that leak memory, SWAT exposes where the program last accessed the leaked data, which facilitates debugging and fixing the leak. SWAT has been used by several product groups at Microsoft for the past 18 months and has proved effective at detecting leaks with a low false positive rate (‹10%). Matthias Hauswirth, Trishul M. Chilimbi |
ASPLOS | 2 |
| 2002 | Dynamic Hot Data Stream Prefetching for General-Purpose ProgramsabstractPrefetching data ahead of use has the potential to tolerate the growing processor-memory performance gap by overlapping long latency memory accesses with useful computation. While sophisticated prefetching techniques have been automated for limited domains, such as scientific codes that access dense arrays in loop nests, a similar level of success has eluded general-purpose programs, especially pointer-chasing codes written in languages such as C and C++. We address this problem by describing, implementing and evaluating a dynamic prefetching scheme. Our technique runs on stock hardware, is completely automatic, and works for generalpurpose programs, including pointer-chasing codes written in weakly-typed languages, such as C and C++. It operates in three phases. First, the profiling phase gathers a temporal data reference profile from a running program with low-overhead. Next, the profiling is turned off and a fast analysis algorithm extracts hot data streams, which are data reference sequences that frequently repeat in the same order, from the temporal profile. Then, the system dynamically injects code at appropriate program points to detect and prefetch these hot data streams. Finally, the process enters the hibernation phase where no profiling or analysis is performed, and the program continues to execute with the added prefetch instructions. At the end of the hibernation phase, the program is deoptimized to remove the inserted checks and prefetch instructions, and control returns to the profiling phase. For long-running programs, this profile, analyze and optimize, hibernate, cycle will repeat multiple times. Our initial results from applying dynamic prefetching are promising, indicating overall execution time improvements of 5–19 % for several memory-performance-limited SPECint2000 benchmarks running their largest (ref) inputs. Trishul M. Chilimbi, Martin Hirzel |
PLDI | 1 |
| 2002 | An efficient profile-analysis framework for data-layout optimizationsabstractData-layout optimizations rearrange fields within objects, objects within objects, and objects within the heap, with the goal of increasing spatial locality. While the importance of data-layout optimizations has been growing, their deployment has been limited, partly because they lack a unifying framework. We propose a parameterizable framework for data-layout optimization of general-purpose applications. Acknowledging that finding an optimal layout is not only NP-hard, but also poorly approximable, our framework finds a good layout by searching the space of possible layouts, with the help of profile feedback. The search process iteratively prototypes candidate data layouts, evaluating them by "simulating" the program on a representative trace of memory accesses. To make the search process practical, we develop space-reduction heuristics and optimize the expensive simulation via memoization. Equipped with this iterative approach, we can synthesize layouts that outperform existing non-iterative heuristics, tune application-specific memory allocators, as well as compose multiple data-layout optimizations. Shai Rubin, Rastislav Bodík, Trishul M. Chilimbi |
POPL | 3 |
| 2001 | Efficient Representations and Abstractions for Quantifying and Exploiting Data Reference LocalityabstractWith the growing processor-memory performance gap, understanding and optimizing a program's reference locality, and consequently, its cache performance, is becoming increasingly important. Unfortunately, current reference locality optimizations rely on heuristics and are fairly ad-hoc. In addition, while optimization technology for improving instruction cache performance is fairly mature (though heuristic-based), data cache optimizations are still at an early stage. We believe the primary reason for this imbalance is the lack of a suitable representation of a program's dynamic data reference behavior and a quantitative basis for understanding this behavior. Trishul M. Chilimbi |
PLDI | 1 |
| 2000 | Designing a Trace Format for Heap Allocation EventsabstractDynamic storage allocation continues to play an important role in the performance and correctness of systems ranging from user productivity software to high-performance servers. While algorithms for dynamic storage allocation have been studied for decades, much of the literature is based on measuring the performance of benchmark programs unrepresentative of many important allocation-intensive workloads. Furthermore, to date no standard has emerged or been proposed for publishing and exchanging representative allocation workloads. In this paper, we describe a preliminary design of a trace format for such workloads and investigate its e#ectiveness at representing large allocation traces. Our proposal allows for a flexible encoding of information in the trace to achieve greater compression. We evaluate our preliminary design in two dimensions. First, we measure how e#ective these encodings are at reducing trace size. Second we consider how a meta-level specification language could be used... Trishul M. Chilimbi, Richard E. Jones, Benjamin G. Zorn |
ISMM | 1 |
| 1999 | Cache-Conscious Structure DefinitionabstractA program's cache performance can be improved by changing the organization and layout of its data---even complex, pointer-based data structures. Previous techniques improved the cache performance of these structures by arranging distinct instances to increase reference locality. These techniques produced significant performance improvements, but worked best for small structures that could be packed into a cache block.This paper extends that work by concentrating on the internal organization of fields in a data structure. It describes two techniques---structure splitting and field reordering---that improve the cache behavior of structures larger than a cache block. For structures comparable in size to a cache block, structure splitting can increase the number of hot fields that can be placed in a cache block. In five Java programs, structure splitting reduced cache miss rates 10--27% and improved performance 6--18% beyond the benefits of previously described cache-conscious reorganization techniques.For large structures, which span many cache blocks, reordering fields, to place those with high temporal affinity in the same cache block can also improve cache utilization. This paper describes bbcache, a tool that recommends C structure field reorderings. Preliminary measurements indicate that reordering fields in 5 active structures improves the performance of Microsoft SQL Server 7.0 2--3%. Trishul M. Chilimbi, Bob Davidson, James R. Larus |
PLDI | 1 |
| 1999 | Cache-Conscious Structure LayoutabstractHardware trends have produced an increasing disparity between processor speeds and memory access times. While a variety of techniques for tolerating or reducing memory latency have been proposed, these are rarely successful for pointer-manipulating programs.This paper explores a complementary approach that attacks the source (poor reference locality) of the problem rather than its manifestation (memory latency). It demonstrates that careful data organization and layout provides an essential mechanism to improve the cache locality of pointer-manipulating programs and consequently, their performance. It explores two placement techniques---clustering and coloring---that improve cache performance by increasing a pointer structure's spatial and temporal locality, and by reducing cache-conflicts.To reduce the cost of applying these techniques, this paper discusses two strategies---cache-conscious reorganization and cache-conscious allocation---and describes two semi-automatic tools---ccmorph and ccmalloc---that use these strategies to produce cache-conscious pointer structure layouts. ccmorph is a transparent tree reorganizer that utilizes topology information to cluster and color the structure. ccmalloc is a cache-conscious heap allocator that attempts to co-locate contemporaneously accessed data elements in the same physical cache block. Our evaluations, with microbenchmarks, several small benchmarks, and a couple of large real-world applications, demonstrate that the cache-conscious structure layouts produced by ccmorph and ccmalloc offer large performance benefits---in most cases, significantly outperforming state-of-the-art prefetching. Trishul M. Chilimbi, Mark D. Hill, James R. Larus |
PLDI | 1 |
| 1998 | Using Generational Garbage Collection To Implement Cache-Conscious Data PlacementabstractThe cost of accessing main memory is increasing. Machine designers have tried to mitigate the consequences of the processor and memory technology trends underlying this increasing gap with a variety of techniques to reduce or tolerate memory latency. These techniques, unfortunately, are only occasionally successful for pointer-manipulating programs. Recent research has demonstrated the value of a complementary approach, in which pointer-based data structures are reorganized to improve cache locality.This paper studies a technique for using a generational garbage collector to reorganize data structures to produce a cache-conscious data layout, in which objects with high temporal affinity are placed next to each other, so that they are likely to reside in the same cache block. The paper explains how to collect, with low overhead, real-time profiling information about data access patterns in object-oriented languages, and describes a new copying algorithm that utilizes this information to produce a cache-conscious object layout.Preliminary results show that this technique reduces cache miss rates by 21--42%, and improves program performance by 14--37% over Cheney's algorithm. We also compare our layouts against those produced by the Wilson-Lam-Moher algorithm, which attempts to improve program locality at the page level. Our cache-conscious object layouts reduces cache miss rates by 20--41% and improves program performance by 18--31% over their algorithm, indicating that improving locality at the page level is not necessarily beneficial at the cache level. Trishul M. Chilimbi, James R. Larus |
ISMM | 1 |
| 1995 | Storm Watch: A Tool for Visualizing Memory System ProtocolsabstractRecent research has offered programmers increased options for programming parallel computers by exposing system policies (e.g., memory coherence protocols) or by providing several programming paradigms (e.g. message passing and shared memory) on the same platform. Increased flexibility can lead to higher performance, but it is also a double-edged sword that demands a programmer understand his or her application and system at a more fundamental level. Our system, Tempest, allows a programmer to select or implement communication and memory coherence policies that fit an application's communication patterns. With it, we have achieved substantial performance gains without making major changes in programs. However, the process of selecting, designing, and implementing coherence protocols is difficult and time consuming, without tools to supply detailed information about an application's behavior and interaction with the memory system. StormWatch is a new visualization tool that aids a programmer through four mechanisms: tightly-coupled bidirectionally linked views, interactive filters, animation, and performance slicing. Multiple views present several aspects of program behavior simultaneously and show the same phenomenon from different perspectives. Real-time linking between views enables a programmer to explore levels of abstraction by changing a view and observing the effect on other views. Interactive filters, along with bidirectional linking, can isolate the effects of statements, loops, procedures, or files. StormWatch can also animate a program's dynamic behavior to show the evolution of program execution and communication. Finally, performance slicing captures causality among events. The examples in the paper illustrate how StormWatch helped us substantially improve the performance of two applications. Trishul M. Chilimbi, Thomas Ball 0001, Stephen G. Eick, James R. Larus |
SC | 1 |
| 1994 | Cachier: A Tool for Automatically Inserting CICO AnnotationsabstractShared memory in a parallel computer provides programmers with the valuable abstraction of a shared address space--through which any part of a computation can access any datum Although uniform access simplifies programming, it also hides communication, which can lead to inefficient programs The check-in, check-out (CICO) performance model for cache-coherent, shared-memory parallel computers helps a programmer identify the communication underlying memory references and account for its cost CICO consists of annotations that a programmer can use to elucidate communication and a model that attributes costs to these annotations The annotations can also serve as directives to a memory system to improve program performance Inserting CICO annotations requires reasoning about the dynamic cache behavior of a program, which is not always easy This paper describes Cachier, a tool that automatically inserts CICO annotations into shared-memory programs A novel feature of this tool is its use of both dynamic information, obtained from a program execution trace, as well as static information, obtained from program analysis We measured several benchmarks annotated by Cachier by running them on a simulation of the DiriSW cache coherence protocol [10], which supports these directives The results show that programs annotated by Cachier perform significantly better than both programs without CICO annotations and programs that were annotated by hand Trishul M. Chilimbi, James R. Larus |
ICPP (2) | 1 |