ACM Home Page
Please provide us with feedback. Feedback
Go with the flow: profiling copies to find runtime bloat
Full text PdfPdf (569 KB)
Source
Conference on Programming Language Design and Implementation archive
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation table of contents
Dublin, Ireland
SESSION: Memory management and bloat table of contents
Pages 419-430  
Year of Publication: 2009
ISBN:978-1-60558-392-1
Also published in ...
Authors
Guoqing Xu  Ohio State University, Columbus, OH, USA
Matthew Arnold  IBM T.J. Watson Research Center, Hawthorne, NY, USA
Nick Mitchell  IBM T.J. Watson Research Center, Hawthorne, NY, USA
Atanas Rountev  Ohio State University, Columbus, OH, USA
Gary Sevitsky  IBM T.J. Watson Research Center, Hawthorne, NY, USA
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 16,   Downloads (12 Months): 127,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1542476.1542523
What is a DOI?

ABSTRACT

Many large-scale Java applications suffer from runtime bloat. They execute large volumes of methods, and create many temporary objects, all to execute relatively simple operations. There are large opportunities for performance optimizations in these applications, but most are being missed by existing optimization and tooling technology. While JIT optimizations struggle for a few percent, performance experts analyze deployed applications and regularly find gains of 2x or more.

Finding such big gains is difficult, for both humans and compilers, because of the diffuse nature of runtime bloat. Time is spread thinly across calling contexts, making it difficult to judge how to improve performance. Bloat results from a pile-up of seemingly harmless decisions. Each adds temporary objects and method calls, and often copies values between those temporary objects. While data copies are not the entirety of bloat, we have observed that they are excellent indicators of regions of excessive activity. By optimizing copies, one is likely to remove the objects that carry copied values, and the method calls that allocate and populate them.

We introduce copy profiling, a technique that summarizes runtime activity in terms of chains of data copies. A flat copy profile counts copies by method. We show how flat profiles alone can be helpful. In many cases, diagnosing a problem requires data flow context. Tracking and making sense of raw copy chains does not scale, so we introduce a summarizing abstraction called the copy graph. We implement three clients analyses that, using the copy graph, expose common patterns of bloat, such as finding hot copy chains and discovering temporary data structures. We demonstrate, with examples from a large-scale commercial application and several benchmarks, that copy profiling can be used by a programmer to quickly find opportunities for large performance gains.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
G. Ammons, J.-D. Choi, M. Gupta, and N. Swamy. Finding and removing performance bottlenecks in large systems. In ECOOP, pages 172--196, 2004.
 
2
M. Arnold, S. Fink, D. Grove, M. Hind, and P. F. Sweeney. A survey of adaptive optimization in virtual machines. Proc. IEEE, 92(2):449--466, 2005.
 
3
4
 
5
6
7
8
9
10
 
11
ej-technologies. JProfiler. www.ej-technologies.com.
 
12
Java Development Blog. dld.blog-city.com.
 
13
Java Heap Analyzer Tool (HAT). hat.dev.java.net.
14
15
16
17
 
18
N. Mitchell, G. Sevitsky, and H. Srinivasan. Modeling runtime behavior in framework-based applications. In ECOOP, pages 429--451, 2006.
19
 
20
J. Newsome and D. Song. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In NDSS, 2005.
 
21
 
22
Quest Software. JProbe memory debugging. www.quest.com/jprobe.
23
24
25
26
 
27
Sun Java Forum. forums.java.net/jive/thread.jspa?messageID=180784.
28
29
 
30
31
32
 
33
 
34

Collaborative Colleagues:
Guoqing Xu: colleagues
Matthew Arnold: colleagues
Nick Mitchell: colleagues
Atanas Rountev: colleagues
Gary Sevitsky: colleagues