Loading…

Binary Analysis for Measurement and Attribution of Program Performance

Modern programs frequently employ sophisticated modular designs. As a result, performance problems cannot be identified from costs attributed to routines in isolation; understanding code performance requires information about a routine's calling context. Existing performance tools fall short in...

Full description

Saved in:
Bibliographic Details
Published in:ACM SIGPLAN notices 2009-06, Vol.44 (6), p.441-452
Main Authors: TALLENT, Nathan R, MELLOR-CRUMMEY, John M, FAGAN, Michael W
Format: Article
Language:English
Subjects:
Citations: Items that this one cites
Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by cdi_FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83
cites cdi_FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83
container_end_page 452
container_issue 6
container_start_page 441
container_title ACM SIGPLAN notices
container_volume 44
creator TALLENT, Nathan R
MELLOR-CRUMMEY, John M
FAGAN, Michael W
description Modern programs frequently employ sophisticated modular designs. As a result, performance problems cannot be identified from costs attributed to routines in isolation; understanding code performance requires information about a routine's calling context. Existing performance tools fall short in this respect. Prior strategies for attributing context-sensitive performance at the source level either compromise measurement accuracy, remain too close to the binary, or require custom compilers. To understand the performance of fully optimized modular code, we developed two novel binary analysis techniques: 1) on-the-fly analysis of optimized machine code to enable minimally intrusive and accurate attribution of costs to dynamic calling contexts; and 2) post-mortem analysis of optimized machine code and its debugging sections to recover its program structure and reconstruct a mapping back to its source code. By combining the recovered static program structure with dynamic calling context information, we can accurately attribute performance metrics to calling contexts, procedures, loops, and inlined instances of procedures. We demonstrate that the fusion of this information provides unique insight into the performance of complex modular codes. This work is implemented in the HPCToolkit performance tools (http://hpctoolkit.org).
doi_str_mv 10.1145/1543135.1542526
format article
fullrecord <record><control><sourceid>pascalfrancis_cross</sourceid><recordid>TN_cdi_pascalfrancis_primary_22149981</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>22149981</sourcerecordid><originalsourceid>FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83</originalsourceid><addsrcrecordid>eNo9kD1PwzAQhi0EEqUws3phTOs7f8QZQ0UBqYgOMEe2Y6OgfFR2OvTfk6oR03vDPa_uHkIega0AhFyDFBy4XE2JEtUVWYCUOgNQ7Po8I89Qq_yW3KX0yxhoyHFBts9Nb-KJlr1pT6lJNAyRfniTjtF3vh-p6WtajmNs7HFshp4Oge7j8BNNR_c-Ttud6Z2_JzfBtMk_zLkk39uXr81btvt8fd-Uu8xhDmNmhXOhRoO2hgLBWV0Ew2xwXHG0mBeguRG8xsCt4HkomHXKS1Vbr5yuNV-S9aXXxSGl6EN1iE03PVABq84aqllDNWuYiKcLcTDJmTbE6dwm_WOIIIpCA_8DTN5dUw</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Binary Analysis for Measurement and Attribution of Program Performance</title><source>Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)</source><creator>TALLENT, Nathan R ; MELLOR-CRUMMEY, John M ; FAGAN, Michael W</creator><creatorcontrib>TALLENT, Nathan R ; MELLOR-CRUMMEY, John M ; FAGAN, Michael W</creatorcontrib><description>Modern programs frequently employ sophisticated modular designs. As a result, performance problems cannot be identified from costs attributed to routines in isolation; understanding code performance requires information about a routine's calling context. Existing performance tools fall short in this respect. Prior strategies for attributing context-sensitive performance at the source level either compromise measurement accuracy, remain too close to the binary, or require custom compilers. To understand the performance of fully optimized modular code, we developed two novel binary analysis techniques: 1) on-the-fly analysis of optimized machine code to enable minimally intrusive and accurate attribution of costs to dynamic calling contexts; and 2) post-mortem analysis of optimized machine code and its debugging sections to recover its program structure and reconstruct a mapping back to its source code. By combining the recovered static program structure with dynamic calling context information, we can accurately attribute performance metrics to calling contexts, procedures, loops, and inlined instances of procedures. We demonstrate that the fusion of this information provides unique insight into the performance of complex modular codes. This work is implemented in the HPCToolkit performance tools (http://hpctoolkit.org).</description><identifier>ISSN: 1523-2867</identifier><identifier>ISSN: 0362-1340</identifier><identifier>EISSN: 1558-1160</identifier><identifier>DOI: 10.1145/1543135.1542526</identifier><language>eng</language><publisher>New York, NY: Association for Computing Machinery</publisher><subject>Applied sciences ; Computer science; control theory; systems ; Computer systems performance. Reliability ; Exact sciences and technology ; Software ; Software engineering</subject><ispartof>ACM SIGPLAN notices, 2009-06, Vol.44 (6), p.441-452</ispartof><rights>2015 INIST-CNRS</rights><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83</citedby><cites>FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>309,310,780,784,789,790,23930,23931,25140,27925</link.rule.ids><backlink>$$Uhttp://pascal-francis.inist.fr/vibad/index.php?action=getRecordDetail&amp;idt=22149981$$DView record in Pascal Francis$$Hfree_for_read</backlink></links><search><creatorcontrib>TALLENT, Nathan R</creatorcontrib><creatorcontrib>MELLOR-CRUMMEY, John M</creatorcontrib><creatorcontrib>FAGAN, Michael W</creatorcontrib><title>Binary Analysis for Measurement and Attribution of Program Performance</title><title>ACM SIGPLAN notices</title><description>Modern programs frequently employ sophisticated modular designs. As a result, performance problems cannot be identified from costs attributed to routines in isolation; understanding code performance requires information about a routine's calling context. Existing performance tools fall short in this respect. Prior strategies for attributing context-sensitive performance at the source level either compromise measurement accuracy, remain too close to the binary, or require custom compilers. To understand the performance of fully optimized modular code, we developed two novel binary analysis techniques: 1) on-the-fly analysis of optimized machine code to enable minimally intrusive and accurate attribution of costs to dynamic calling contexts; and 2) post-mortem analysis of optimized machine code and its debugging sections to recover its program structure and reconstruct a mapping back to its source code. By combining the recovered static program structure with dynamic calling context information, we can accurately attribute performance metrics to calling contexts, procedures, loops, and inlined instances of procedures. We demonstrate that the fusion of this information provides unique insight into the performance of complex modular codes. This work is implemented in the HPCToolkit performance tools (http://hpctoolkit.org).</description><subject>Applied sciences</subject><subject>Computer science; control theory; systems</subject><subject>Computer systems performance. Reliability</subject><subject>Exact sciences and technology</subject><subject>Software</subject><subject>Software engineering</subject><issn>1523-2867</issn><issn>0362-1340</issn><issn>1558-1160</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2009</creationdate><recordtype>article</recordtype><recordid>eNo9kD1PwzAQhi0EEqUws3phTOs7f8QZQ0UBqYgOMEe2Y6OgfFR2OvTfk6oR03vDPa_uHkIega0AhFyDFBy4XE2JEtUVWYCUOgNQ7Po8I89Qq_yW3KX0yxhoyHFBts9Nb-KJlr1pT6lJNAyRfniTjtF3vh-p6WtajmNs7HFshp4Oge7j8BNNR_c-Ttud6Z2_JzfBtMk_zLkk39uXr81btvt8fd-Uu8xhDmNmhXOhRoO2hgLBWV0Ew2xwXHG0mBeguRG8xsCt4HkomHXKS1Vbr5yuNV-S9aXXxSGl6EN1iE03PVABq84aqllDNWuYiKcLcTDJmTbE6dwm_WOIIIpCA_8DTN5dUw</recordid><startdate>20090601</startdate><enddate>20090601</enddate><creator>TALLENT, Nathan R</creator><creator>MELLOR-CRUMMEY, John M</creator><creator>FAGAN, Michael W</creator><general>Association for Computing Machinery</general><scope>IQODW</scope><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20090601</creationdate><title>Binary Analysis for Measurement and Attribution of Program Performance</title><author>TALLENT, Nathan R ; MELLOR-CRUMMEY, John M ; FAGAN, Michael W</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2009</creationdate><topic>Applied sciences</topic><topic>Computer science; control theory; systems</topic><topic>Computer systems performance. Reliability</topic><topic>Exact sciences and technology</topic><topic>Software</topic><topic>Software engineering</topic><toplevel>online_resources</toplevel><creatorcontrib>TALLENT, Nathan R</creatorcontrib><creatorcontrib>MELLOR-CRUMMEY, John M</creatorcontrib><creatorcontrib>FAGAN, Michael W</creatorcontrib><collection>Pascal-Francis</collection><collection>CrossRef</collection><jtitle>ACM SIGPLAN notices</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>TALLENT, Nathan R</au><au>MELLOR-CRUMMEY, John M</au><au>FAGAN, Michael W</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Binary Analysis for Measurement and Attribution of Program Performance</atitle><jtitle>ACM SIGPLAN notices</jtitle><date>2009-06-01</date><risdate>2009</risdate><volume>44</volume><issue>6</issue><spage>441</spage><epage>452</epage><pages>441-452</pages><issn>1523-2867</issn><issn>0362-1340</issn><eissn>1558-1160</eissn><abstract>Modern programs frequently employ sophisticated modular designs. As a result, performance problems cannot be identified from costs attributed to routines in isolation; understanding code performance requires information about a routine's calling context. Existing performance tools fall short in this respect. Prior strategies for attributing context-sensitive performance at the source level either compromise measurement accuracy, remain too close to the binary, or require custom compilers. To understand the performance of fully optimized modular code, we developed two novel binary analysis techniques: 1) on-the-fly analysis of optimized machine code to enable minimally intrusive and accurate attribution of costs to dynamic calling contexts; and 2) post-mortem analysis of optimized machine code and its debugging sections to recover its program structure and reconstruct a mapping back to its source code. By combining the recovered static program structure with dynamic calling context information, we can accurately attribute performance metrics to calling contexts, procedures, loops, and inlined instances of procedures. We demonstrate that the fusion of this information provides unique insight into the performance of complex modular codes. This work is implemented in the HPCToolkit performance tools (http://hpctoolkit.org).</abstract><cop>New York, NY</cop><pub>Association for Computing Machinery</pub><doi>10.1145/1543135.1542526</doi><tpages>12</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 1523-2867
ispartof ACM SIGPLAN notices, 2009-06, Vol.44 (6), p.441-452
issn 1523-2867
0362-1340
1558-1160
language eng
recordid cdi_pascalfrancis_primary_22149981
source Association for Computing Machinery:Jisc Collections:ACM OPEN Journals 2023-2025 (reading list)
subjects Applied sciences
Computer science
control theory
systems
Computer systems performance. Reliability
Exact sciences and technology
Software
Software engineering
title Binary Analysis for Measurement and Attribution of Program Performance
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-07T14%3A47%3A38IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-pascalfrancis_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Binary%20Analysis%20for%20Measurement%20and%20Attribution%20of%20Program%20Performance&rft.jtitle=ACM%20SIGPLAN%20notices&rft.au=TALLENT,%20Nathan%20R&rft.date=2009-06-01&rft.volume=44&rft.issue=6&rft.spage=441&rft.epage=452&rft.pages=441-452&rft.issn=1523-2867&rft.eissn=1558-1160&rft_id=info:doi/10.1145/1543135.1542526&rft_dat=%3Cpascalfrancis_cross%3E22149981%3C/pascalfrancis_cross%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-c271t-b4ccfd2a2bd1921cb89fa0bfc3632b279183a43d2f3b437f90bc6e56dbe6c8d83%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true