Understanding VirtualAlloc usage using Windows Performance Analyzer
-
Upload
aubrey-little -
Category
Documents
-
view
225 -
download
0
description
Transcript of Understanding VirtualAlloc usage using Windows Performance Analyzer
![Page 1: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/1.jpg)
www.buildwindows.com
Understanding VirtualAlloc usage using Windows Performance AnalyzerJoe LaughlinPrincipal SDEMicrosoft Corporation
HW-977P
![Page 2: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/2.jpg)
www.buildwindows.com
Agenda• VirtualAlloc Overview• Demo: Collecting and Analyzing VirtualAlloc Data• Guidelines and Best Practices• Key Takeaways
![Page 3: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/3.jpg)
VirtualAlloc Overview
![Page 4: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/4.jpg)
www.buildwindows.com
VirtualAlloc Overview• VirtualAlloc is used for large dynamic memory
allocations• Allocations are made directly via VirtualAlloc API• Typical usage – Bitmaps, Buffers
• Key Concepts• Reservation - Reserves an address range for usage but
does not acquire memory resources• Commit - Ensures that either physical memory or page
file space will be available if the addresses are referenced
• Reference - Allocates a physical memory page
![Page 5: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/5.jpg)
VirtualAlloc Data Collectionand Analysis
![Page 6: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/6.jpg)
www.buildwindows.com
VirtualAlloc Vocabulary• General • Reserve, Commit
• Basic Data• Commit/Reserve Lifetime – How long
an allocation remains outstanding• Stack – Stack corresponding to the
allocation• Address – Address corresponding to
allocation
• Metadata• Flags – Flags passed to the VirtualAlloc
APIs• Desired size – Requested size of a
reservation or commit• Committed/Reserved Actual –
Amount of memory actually committed/reserved
• Context:• Transient – allocations with a short
lifetime, measured in milliseconds• Outstanding Committed/Reserved–
allocations that remain alive at the point in time being investigated
![Page 7: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/7.jpg)
www.buildwindows.com
Data Collection• VirtualAlloc data is collected
system wide and not restricted to a single process
• Steps1. Open Windows performance
recorder UI2. Select Target application to be
“Entire System”3. Select VAlloc Usage from the
Memory Profiles4. Select scenario of Interest5. Click on ‘Start’ to start tracing and
‘Save’ to save the trace when done
Windows Performance Recorder UI
![Page 8: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/8.jpg)
www.buildwindows.com
WPA VirtualAlloc Analysis• VirtualAlloc Cumulative Commit Count• What is the total number of allocations alive at a given point in
time?• VirtualAlloc Cumulative Commit Size• What is the total number of allocation to a particular point in
time?• VirtualAlloc Outstanding Commit Size• What is the total size of allocations alive at a given point in
time?• VirtualAlloc Outstanding Commit Count• What is the total number of allocations to a particular point in
time?
![Page 9: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/9.jpg)
www.buildwindows.com
Summary Table• Raw data is exposed via summary tables• Vocabulary• Allocation lifetime is expressed based on the
visible portion of the graph• AIFO - Allocated inside, freed outside• AIFI - Allocated inside, freed inside• AOFO - Allocated outside, freed outside• AOFI - Allocated outside, freed inside
![Page 10: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/10.jpg)
Demo
![Page 11: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/11.jpg)
Guidelines and Best Practices
![Page 12: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/12.jpg)
www.buildwindows.com
Guidelines and Best Practices• Approach
• Understand how dynamic memory allocations impact the VA space of a process
• Follow your allocation patterns – Transient and Steady state• Guidance
• Reduce • Number and size of outstanding allocations• Total number of allocations
• Be judicious about what you Commit• Ensure that scenario specific transient allocations are freed as
soon as possible• Avoid intermingling long lived allocations with short lived ones
which can fragment VA space
![Page 13: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/13.jpg)
www.buildwindows.com
Key Takeaways• Concepts of Commit, Reserve and Reference• Understand the VirtualAlloc usage of your
component and utilize the tools to identify areas for optimization
![Page 14: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/14.jpg)
www.buildwindows.com
For more informationRELATED 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-928P Understanding heap data Using Windows Performance Analyzer
• HW-925P Customizing WPA Trace Views• HW-926P Introduction to the new WPA
User interface
![Page 15: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/15.jpg)
www.buildwindows.com
• Feedback and questions http://forums.dev.windows.com
• Session feedbackhttp://bldw.in/SessionFeedback
thank you
![Page 16: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/16.jpg)
© 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.
![Page 17: Understanding VirtualAlloc usage using Windows Performance Analyzer](https://reader035.fdocuments.us/reader035/viewer/2022062401/5a4d1b7d7f8b9ab0599b9bb9/html5/thumbnails/17.jpg)