understanding heap data using windows performance analyzer n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Understanding heap data Using Windows Performance Analyzer PowerPoint Presentation
Download Presentation
Understanding heap data Using Windows Performance Analyzer

play fullscreen
1 / 19

Understanding heap data Using Windows Performance Analyzer

997 Views Download Presentation
Download Presentation

Understanding heap data Using Windows Performance Analyzer

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. HW-928P Understanding heap data Using Windows Performance Analyzer Joe Laughlin Principal SDE Microsoft Corporation

  2. Agenda • Heap Overview and Concepts • Demo: Collecting and Analyzing Heap Data • Guidelines and Best Practices • Key Takeaways

  3. Heap Overview

  4. Mainline (NT Heap) Low Fragmentation Heap (LFH) • VirtualAlloc • Services allocation requests of all sizes < 64 KB, until allocation thresholds are reached • Composed of sub-segments that service allocation requests using fixed size blocks once allocation thresholds are met • All allocation requests above 64 KB are serviced using VirtualAlloc The Windows Heap • The Windows heap is a memory pool that processes use to dynamically allocate memory as needed • Primary Audience – Application developers • The Windows heap has three basic allocation areas:

  5. Heap Overview • Heap is used for all dynamic allocations • Allocations are made directly via Heap APIs, HeapAlloc, HeapRealloc • C/C++ allocators , new, alloc, realloc, calloc • Understand how allocations impact the Heap usage of a process • Key Concepts • Low Fragmentation Heap (LFH) –once allocation thresholds are met • Sub-segment – chunks of LFH bucket size • Fragmentation – caused by intermingling allocations of differing lifetimes

  6. Heap Data Collectionand Analysis

  7. Heap Vocabulary • Basic Data • Allocation Lifetime – How long an allocation remains outstanding • Stack – Stack corresponding to the allocation • Address – Address corresponding to allocation • Page Address – Page within which the allocation resides • LFH Bucket Size – size of block the allocation is placed within • Metadata • Sub-segment Slot Count – number of bucket sized chunks in the sub-segment • Heap Overhead – each allocation has an overhead of 8 bytes on 32 bit and 16 bytes on 64 bit • Context • Transient – allocations with a short lifetime, measured in milliseconds • Outstanding – allocations that remain alive at the point in time being investigated

  8. Data Collection • Heap data collection is restricted to a single process • Steps • Open Windows performance recorder UI • Select Target application • Select Heap usage from the Memory Profiles • Click on ‘Start’ to start tracing • Execute scenario of interest • Click on ‘Save’ to save the trace when done Windows Performance Recorder UI

  9. WPA Heap Analysis • Heap Outstanding Allocation Size • What is the total size of allocations alive at a given point in time? • Heap Outstanding Allocation Count • What is the total number of allocations to a particular point in time? • Heap Total Allocation Size • What is the total number of allocation to a particular point in time? • Heap Total Allocation Count • What is the total number of allocations alive at a given point in time?

  10. WPA Heap Analysis • Low Frag Heap Outstanding Allocation Slots • What is the total number of allocations slots available at a given point in time? • Low Frag Heap Unused Allocation Slots • What is the total number of unused allocation slots at a given point in time? • Low Frag Heap Unused Allocation Slot Size • What is the total size of unused allocation slots at a given point in time? • Heap Extents • What is the size of the heaps and the contained allocations (includes overhead)

  11. Summary Table • Raw data is exposed via summary tables • Vocabulary • Allocation lifetime is expressed based on the visible region of the trace • AIFO - Allocated inside, freed outside • AIFI - Allocated inside, freed inside • AOFO - Allocated outside, freed outside • AOFI - Allocated outside, freed inside

  12. Demo

  13. Guidelines and Best Practices

  14. Guidance/Best Practices • Approach • Understand how dynamic memory allocations impact the Heap usage of a process • Follow your allocation patterns – Transient and Steady state • Guidance • Reduce • Number and size of outstanding allocations • Reduce the number of sub-segments • Reduce the total number of allocations • Reduce the number of heaps • Avoid intermingling long lived allocations with short lived ones which causes fragmentation

  15. Key Takeaways • Understand how heap allocations impact the memory usage of your process • Understand the concepts of LFH, sub-segments, and fragmentation • Understand Heap usage of your component and utilize the tools to identify areas for optimization

  16. For more information RELATED SESSIONS • HW-59T Improving performance with the Windows Performance Toolkit • HW-141T Reducing the memory footprint of drivers and apps • HW-927P Understanding pool usage using Windows Performance Analyzer • HW-977P Understanding VirtualAlloc usage using Windows Performance Analyzer • HW-925P Customizing WPA Trace Views • HW-926P Introduction to the new WPA Uuser interface

  17. thank you Feedback and questions http://forums.dev.windows.com Session feedbackhttp://bldw.in/SessionFeedback

  18. © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.