I learnt a lot from him. Ajay Kumar Sharma .amarjeet for their assistance . help and motivation. Apart from the subject of my research.ACKNOWLEDGEMENT I take this opportunity with much pleasure to thank all the people who have helped me through the course of my journey towards producing this project .criticisms and useful insights.navin . I would like to acknowledge the support and encouragement of my friends who help me to make this project. I am especially grateful to my group mates kamlesh .I sincerely thank my faculty Mr. which I am sure will be useful in different stages of my life. Sourav Bhattacharya for him guidance.

GNIIT SEMESTER C SIGNATURE INTRODUCTION Intel® VTune™ analyzers help locate and remove software performance bottlenecks by collecting. and remote support for IA-32 and Intel® Itanium® processor-based Linux* applications as well as sampling on Intel® PXA250. call graph capability. optional Visual Studio* . and PXA26x processor-based applications. Intel VTune Performance Analyzer provides both a graphical and a command line interface on Windows* platforms. and displaying performance data from the system down to the source level.NET integration. counter monitor. PXA255. analyzing. Key features include sampling capability. and an enhanced Intel® Tuning Assistant. .

In essence. such as an analysis that .1. Thus. to take advantage of Hyper-Threading technology and other advanced performance features of Intel's latest processors -. by analyzing Event Based Sampling data to quickly identify both what optimizations you should make.With VTune analyzer 6. It includes tuning advice for Counter Monitor.What's in Intel VTune Performance Analyzer • • • Hyperthreading support -. operating system counters. and Pentium III processor and Pentium 4 processor counter-based data. Each node in the Call Graph represents a function (f) and each edge represents the function (g) being called by (f). AHA technology unlocks the power of Intel's latest Pentium 4 and Xeon Processors. Call graphs are a basic program analysis result that can be used for human understanding of programs. this support includes visibility into the threads running on the Hyperthreaded Intel processors Itanium 2 support Enhancements to Tuning Asst --. Java. Specifically. each node represents a procedure and each edge (f. A node can be thought of as the "Parent function" and each node as the "Child function A call graph (also known as a call multigraph) is a directed graph that represents calling relationships between subroutines in a computer program.speeding up your code by up to an additional 40% (beyond the speedup you can achieve through algorithmic improvements alone). and where in your code to make them. a cycle in the graph indicates recursive procedure calls. g) indicates that procedure f calls procedure g. or as a basis for further analyses. What is a Call Graph? A Call Graph allows the user to view the relationship between Parents and Child subroutines in their program.1.The Tuning Assistant provides tuning advice based on source code. and Pentium 4 processors with Hyper-Threading technology Automatic Hotspot Analysis (AHA) is a new expert system technology in the Intel Tuning Assistant in VTune 6.

every call relationship that occurs is represented in the graph. the caller . a dynamic call graph can be exact.g. A dynamic call graph is a record of an execution of the program. so static call graph algorithms are generally overapproximations. synchronized views: graph . Thus. In a call graphs . A static call graph is a call graph intended to represent every possible run of the program. This function contain the maximum edges time values in the application . you can identify the critical path in the application or module. but only describes one run of the program. The exact static call graph is undecidable. VTune Performance Analyzer displays the results of the call graph in three . Fully context-sensitive call graphs are usually not computed statically.tracks the flow of values between procedures. One simple application of call graphs is finding procedures that are never called. A more precise call graph more precisely approximates the behavior of the real program. The critical path is the most time-consuming path in the call sequence of an application that originates from the root function . Call graphs can be defined to represent varying degrees of precision. Using the three views . although it may take up a large amount of memory. because it would take too long for a large program. Graph View The graph view display the graphical of the application that you run in VTune Performance Analyzer . the graph contains a separate node for each call stack that procedure can be activated with. The most precise call graph is fully context-sensitive. which means that there is only one node for each procedure.. you can identify the most time-consuming function in a call sequence. at the cost of taking longer to compute and more memory to store. The edges time is the total time taken by a caller function to execute when it is called from a specific caller function. and functional summary. e. as output by a profiler. Identifying Critical Paths Using Call Graphs Using the call graph collector . The least precise call graph is context-insensitive. call list . The graph view also display the caller function . which means that for each procedure. That is. Call graphs can be dynamic or static. the critical path is displayed with a thick red edges and starts from the most time-consuming function or thread. A fully contextsensitive call graph can be computed dynamically easily. and possibly also some call relationships that would never occur in actual runs of the program.

Time spent on a function when the thread is suspended. Time spend inside a function . Performance Metric Total time Description Time spend between the start of the execution of a function and its termination. the wait time Self time Total wait time Wait time .and time information as seen in the following figure. The time information that the graph view provides enables you to Estimate the performance of your application. However. Find potential performance bottlenecks.including time . However .function . self time does not include the time spend on child functions. Find the critical path.spent waiting between executing activities. Function Summary View The function summary view displays all the functions that your application calls along with the performance metrics list in tabular format. Time spent on a function and its child function when the thread is suspended.

The call list view has three different section: focus shown in the following figure. Call Graph profiling reveals: • • • • The structure of your program on a function level. The number of times a function is called from a particular location. Different Value of Performance Metrics in a Call Graph Call List View The call list view displays information about time and calls of the focus function.does not include the time spend on the child functions of the function. Calls Number of times a function is called. and callee function . . caller function. The focus function is the function summary or the graph view. The time spent in each function and Functions on a critical path.

the function changes its color to blue when you click on it. Call Graph profiling implements the following conventions to represent the computing activity: • • • • Nodes colored red designate functions that are on the critical path from the root (thread). and the edge changes its color to red when you click on its arrow. The number next to the edge (line) indicates the number of calls to that function. • Exporting the Call Graph . Each edge (line with an arrow) connecting two nodes represents the call from the caller to the caller function. To indicate which function or edge you are trying to get information about. If you select one or more functions with the selection tool. The edge to the caller with the highest call time is colored in blue. all selected nodes turn blue and edges turn red.Each node (box) in the call graph (above) represents a function.

A "Export Graph As" window will appear. To view the declaration of the function. The right hand side of the Call Graph window shows a graphical representation of the Parent/Children functions. To export the Call Graph. To populate the Call Graph window. At this point you should see the Call Graph Window populated with a graphical image showing the relationship between the selected Parent function and its Children functions. An empty (Call Graph) window should appear below your code.MPLAB X allows you to export the Call Graph in a . . right click on it and select "Go to Declaration" .c file where the function was declared. Thread Profiler 3.1 and Thread Checker 3. The Call Graph in MPLAB X allows you to perform certain functionalities such as: • • • • Viewing the function declaration View the child of the parent function View the parents of the child function Exporting the Call Graph Viewing Function Declaration MPLAB X allows the user to view the declaration of the selected function using Call Graphs.png file.0. right click anywhere in the Call Graph window and select "Export". Library For Multicore CPUs CRN test center article on VTune Performance Analyzer 9. [edit] References • Intel Releases Thread Tools.1. do a right-click and select "Show Call Graph". hover over the desired function. The Call Graph window is divided into two sections. type a file name for your graph and click Save. MPLAB X will then open the . To view its functionality. we must first highlight a function in your code. The left hand side of the call graph window shows a Collapsing/Expanding tree menu of the Parent and Children function. go to the toolbar click on Window-> Output-> Call Graph. Working with Call Graphs in MPLAB X Call Graph functionality is supported by MPLAB X.

Graph view ………………………………………………………… 6. What is Call graph ………………………………………………. Identifying Critical path using call graph ………………………… 5. Function Summary view .• • • • • Product Review: Intel’s VTune 6 Performance Analyzer Gamasutra web site Performance Analysis Tools: A Look at the Intel VTune Performance Analyzer Real World Technologies IEEE Explore (registration required) New Intel VTune Performance Analyzer Helps Optimize Web Services Applications Lock and Lock INDEX 1. Introduction of VTune …………………………………………… 4. …………………………………………… Page : 1 Page : 2 Page : 3 Page : 4 Page : 4 Page : 5 Page: 5 2. Call List view ……………………………………………………… …………………………………………… 7. Acknowledgement 3.

8. Exporting the Call graphs ……………………………………………… Working with call Graphs in MPLABX …………………………….scribd. 11. Call Graph profiling reveals ………………………………………… www. Edit Refernces ……………………………………………………… Page : 6 Page : 7 Page : 8 Page : 9 Bibliography .com www.Google .msdn.

These two methods are explained below: .THANK YOU Viewing "The children of the parent function" (Expanding Caller) There are two ways to view what functions are being called from the selected function.

A list of children functions should appear in the menu tree as well as in the Graphical representation of the call graph. Viewing "The children of the parent function" using the graphical representation Select a function whom you wish to know its children functions. Right click on the function and select "Expand Callers". In the graphical representation of the Call Graph.Viewing "The children of the parent function" using the tree menu Select a function whom you wish to know its children functions. Intel® Software Development Products for Intel® Platforms and Technologies Intel® VTune™ Performance Analyzer Call Graph Call graph profiling quickly identifies critical functions and call sequences. Click on the (+) sign to expand the menu tree. Intel Tuning Assistant has extensive tuning knowledge that enables it to suggest optimization . A list of children functions should appear in the menu tree as well as in the Graphical representation of the call graph. Call graph can now profile applications on remote Intel Itanium processor-based systems running Linux. A graphical representation of all the parents functions calling the selected function should appear in the Call Graph window. Right click on the function and select "Expand Callee". select a function whom you wish to know its parent function.

and PXA26x processors using the VTune Performance Analyzer GUI.NET the VTune analyzer can profile Managed C++ applications. Both the Java and . Call graph With languages that feature dynamic dispatch. Conversely. For .techniques. Java* and . In addition. and generate a call graph of active functions. VTune™ Analyzer Product Support Engineer Use the Intel® VTune™ Performance Analyzer to profile your Win32* executable files or Java* applications. This term is frequently used in the compiler and binary translation community.NET support has been improved. functions executed in memory and caller and callee functions of a specific function. computing a static call graph precisely requires alias analysis results. You can now remotely profile software running on Intel PXA250. generate a call graph and identify critical functions and call sequences. Call Graph profiling allows you to analyze your Windows* or Java application. computing precise aliasing requires a call graph. Call list tab The window has a Call List tab in the bottom of the Call Graph view. Many static analysis systems solve the apparent infinite regress by computing both simultaneously. . PXA255.NET wizards are now better tailored to different profiling scenarios such as profiling an application that is launched outside of the VTune analyzer. The call graph profiling also generates a Call Graph spreadsheet and call list – all shown in the Call Graph View window. the Call List has a View by Call Sites in which you can see call information represented by call sites: addresses from where the function was actually called. it may be possible to detect anomalies of program execution or code injection attacks[citation needed]. Remote Java profiling on IA-32 systems on Linux is now available. By tracking a call graph. including mixed DLLs. Mixed mode call graph of Java calls and native module calls is supported on Windows operating systems running on Itanium and Itanium 2 processor-based systems. such as Java and C++. The Call List view lists all the callers and the callee of the function selected in the spreadsheet (also referred to as the function in question) and displayed in the Call Graph view. It has been enhanced with tuning advice for software running on Intel Itanium 2 processor and Intel processor code named Prescott. It shows threads created.

Event based sampling finds places where cache misses. Counter monitor Provides system level performance information. and helps to identify critical functions and timing details in the applications. you can also download and use Parallel Amplifier. based on instrumenting the binary executable files which is used to produce function calling sequence data Time-based and Event based sampling Sampling is a low overhead statistical method for locating performance bottlenecks. such as resource consumption during the execution of an application Intel Thread Profiler A timeline view shows what threads are doing and how they interact. algorithmic view of program execution. Performance Tuning Utility (PTU) PTU is a separate download that gives VTune analyzer users access to experimental tuning technology. If you purchase VTune analyzer. It adds a statistical call graph (hotspot analysis) which is lower overhead than VTune's exact call graph. This includes things like Data Access Analysis that identifies memory hotspots and relates them to code hotspots.Graph view Call graph Provides a graphical view of the flow of an application. Source view Sampling results are displayed line by line on the source / assembly code. Intel Parallel Amplifier Parallel Amplifier is the performance profiler component of Intel Parallel Studio. It shows the distribution of work to threads and locates load imbalances. branch mis-predictions and other performance issues occur. plus concurrency analysis and locks & waits analysis. Time-based sampling finds program “hot spots” that consume a lot of CPU time. Call graph profiling offers a graphical high-level. .