Você está na página 1de 16

NIIT

ISAS PRESENTATION PRESENTATION BY NAME AJAY KUMAR SHARMA SEMESTER- SEM C BATCH CODE- B110342 REGISTRATION NOR100002500342 BATCH CO.ORDINATORS.Bhattacharya SUBMITED ON -07/05/2011

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 .I sincerely thank my faculty Mr. Sourav Bhattacharya for him guidance, help and motivation. Apart from the subject of my research, I learnt a lot from him, which I am sure will be useful in different stages of my life.

I am especially grateful to my group mates kamlesh ,navin ,amarjeet for their assistance ,criticisms and useful insights. I would like to acknowledge the support and encouragement of my friends who help me to make this project.

Ajay Kumar Sharma

GNIIT SEMESTER C SIGNATURE

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

What's in Intel VTune Performance Analyzer

Hyperthreading support -- With VTune analyzer 6.1, this support includes visibility into the threads running on the Hyperthreaded Intel processors Itanium 2 support Enhancements to Tuning Asst --- The Tuning Assistant provides tuning advice based on source code, operating system counters, and Pentium III processor and Pentium 4 processor counter-based data. It includes tuning advice for Counter Monitor, Java, 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.1. AHA technology unlocks the power of Intel's latest Pentium 4 and Xeon Processors, by analyzing Event Based Sampling data to quickly identify both what optimizations you should make, and where in your code to make them, to take advantage of Hyper-Threading technology and other advanced performance features of Intel's latest processors -- speeding up your code by up to an additional 40% (beyond the speedup you can achieve through algorithmic improvements alone).

What is a Call Graph?


A Call Graph allows the user to view the relationship between Parents and Child subroutines in their program. In essence, Each node in the Call Graph represents a function (f) and each edge represents the function (g) being called by (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. Specifically, each node represents a procedure and each edge (f, g) indicates that procedure f calls procedure g. Thus, a cycle in the graph indicates recursive procedure calls. Call graphs are a basic program analysis result that can be used for human understanding of programs, or as a basis for further analyses, such as an analysis that

tracks the flow of values between procedures. One simple application of call graphs is finding procedures that are never called. Call graphs can be dynamic or static. A dynamic call graph is a record of an execution of the program, e.g., as output by a profiler. Thus, a dynamic call graph can be exact, but only describes one run of the program. A static call graph is a call graph intended to represent every possible run of the program. The exact static call graph is undecidable, so static call graph algorithms are generally overapproximations. That is, every call relationship that occurs is represented in the graph, and possibly also some call relationships that would never occur in actual runs of the program. Call graphs can be defined to represent varying degrees of precision. A more precise call graph more precisely approximates the behavior of the real program, at the cost of taking longer to compute and more memory to store. The most precise call graph is fully context-sensitive, which means that for each procedure, the graph contains a separate node for each call stack that procedure can be activated with. A fully contextsensitive call graph can be computed dynamically easily, although it may take up a large amount of memory. Fully context-sensitive call graphs are usually not computed statically, because it would take too long for a large program. The least precise call graph is context-insensitive, which means that there is only one node for each procedure.

Identifying Critical Paths Using Call Graphs


Using the call graph collector , you can identify the critical path in the application or module. The critical path is the most time-consuming path in the call sequence of an application that originates from the root function . In a call graphs , the critical path is displayed with a thick red edges and starts from the most time-consuming function or thread. This function contain the maximum edges time values in the application . The edges time is the total time taken by a caller function to execute when it is called from a specific caller function. VTune Performance Analyzer displays the results of the call graph in three , synchronized views: graph , call list , and functional summary. Using the three views , you can identify the most time-consuming function in a call sequence.

Graph View
The graph view display the graphical of the application that you run in VTune Performance Analyzer . The graph view also display the caller function , the caller

function ,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. Find potential performance bottlenecks. Find the critical path.

Function Summary View


The function summary view displays all the functions that your application calls along with the performance metrics list in tabular format. Performance Metric Total time Description Time spend between the start of the execution of a function and its termination. Time spend inside a function ,including time ,spent waiting between executing activities. However, self time does not include the time spend on child functions. Time spent on a function and its child function when the thread is suspended. Time spent on a function when the thread is suspended. However , the wait time

Self time

Total wait time Wait time

does not include the time spend on the child functions of the function. Calls Number of times a function is called.

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. The focus function is the function summary or the graph view. The call list view has three different section: focus function, caller function, and callee function ,as 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; The time spent in each function and Functions on a critical path.

Each node (box) in the call graph (above) represents a function. Each edge (line with an arrow) connecting two nodes represents the call from the caller to the caller function. 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). The edge to the caller with the highest call time is colored in blue. The number next to the edge (line) indicates the number of calls to that function. To indicate which function or edge you are trying to get information about, the function changes its color to blue when you click on it, and the edge changes its color to red when you click on its arrow. If you select one or more functions with the selection tool, all selected nodes turn blue and edges turn red.

Exporting the Call Graph

MPLAB X allows you to export the Call Graph in a .png file. To export the Call Graph, right click anywhere in the Call Graph window and select "Export". A "Export Graph As" window will appear, type a file name for your graph and click Save.

Working with Call Graphs in MPLAB X


Call Graph functionality is supported by MPLAB X. To view its functionality, go to the toolbar click on Window-> Output-> Call Graph. An empty (Call Graph) window should appear below your code. To populate the Call Graph window, we must first highlight a function in your code, do a right-click and select "Show Call Graph". 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. 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. The Call Graph window is divided into two sections. The left hand side of the call graph window shows a Collapsing/Expanding tree menu of the Parent and Children function. The right hand side of the Call Graph window shows a graphical representation of the Parent/Children functions. To view the declaration of the function, hover over the desired function, right click on it and select "Go to Declaration" . MPLAB X will then open the .c file where the function was declared.

[edit] References

Intel Releases Thread Tools, Library For Multicore CPUs CRN test center article on VTune Performance Analyzer 9.0, Thread Profiler 3.1 and Thread Checker 3.1.

Product Review: Intels 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. Acknowledgement 3. What is Call graph . Page : 1 Page : 2 Page : 3 Page : 4 Page : 4 Page : 5 Page: 5 2. Introduction of VTune 4. Identifying Critical path using call graph 5. Graph view 6. Call List view 7. Function Summary view

8. Call Graph profiling reveals 9. Exporting the Call graphs 10. Working with call Graphs in MPLABX . 11. Edit Refernces

Page : 6 Page : 7 Page : 8 Page : 9

Bibliography :www.Google .com www.Wikipedia.com www.msdn.microsoft.com www.scribd.com

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. These two methods are explained below:

Viewing "The children of the parent function" using the tree menu Select a function whom you wish to know its children functions. Click on the (+) sign to expand the menu tree. 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 Callee". A list of children functions should appear in the menu tree as well as in the Graphical representation of the call graph. In the graphical representation of the Call Graph, select a function whom you wish to

know its parent function. Right click on the function and select "Expand Callers". A graphical representation of all the parents functions calling the selected function should appear in the Call Graph window. 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. Call graph can now profile applications on remote Intel Itanium processor-based systems running Linux. Intel Tuning Assistant has extensive tuning knowledge that enables it to suggest optimization

techniques. It has been enhanced with tuning advice for software running on Intel Itanium 2 processor and Intel processor code named Prescott. Java* and .NET support has been improved. Remote Java profiling on IA-32 systems on Linux is now available. 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. For .NET the VTune analyzer can profile Managed C++ applications, including mixed DLLs. Both the Java and .NET wizards are now better tailored to different profiling scenarios such as profiling an application that is launched outside of the VTune analyzer. You can now remotely profile software running on Intel PXA250, PXA255, and PXA26x processors using the VTune Performance Analyzer GUI.

VTune Analyzer Product Support Engineer Use the Intel VTune Performance Analyzer to profile your Win32* executable files or Java* applications, and generate a call graph of active functions. Call Graph profiling allows you to analyze your Windows* or Java application, generate a call graph and identify critical functions and call sequences. It shows threads created, functions executed in memory and caller and callee functions of a specific function. The call graph profiling also generates a Call Graph spreadsheet and call list all shown in the Call Graph View window. Call list tab The window has a Call List tab in the bottom of the Call Graph view. 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. In addition, 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.

Call graph With languages that feature dynamic dispatch, such as Java and C++, computing a static call graph precisely requires alias analysis results. Conversely, computing precise aliasing requires a call graph. Many static analysis systems solve the apparent infinite regress by computing both simultaneously. This term is frequently used in the compiler and binary translation community. By tracking a call graph, it may be possible to detect anomalies of program execution or code injection attacks[citation needed].

Graph view

Call graph Provides a graphical view of the flow of an application, and helps to identify critical functions and timing details in the applications. Call graph profiling offers a graphical high-level, algorithmic view of program execution, 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. Time-based sampling finds program hot spots that consume a lot of CPU time. Event based sampling finds places where cache misses, branch mis-predictions and other performance issues occur. Source view Sampling results are displayed line by line on the source / assembly code. Counter monitor Provides system level performance information, 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. It shows the distribution of work to threads and locates load imbalances. Performance Tuning Utility (PTU) PTU is a separate download that gives VTune analyzer users access to experimental tuning technology. This includes things like Data Access Analysis that identifies memory hotspots and relates them to code hotspots. Intel Parallel Amplifier Parallel Amplifier is the performance profiler component of Intel Parallel Studio. If you purchase VTune analyzer, you can also download and use Parallel Amplifier. It adds a statistical call graph (hotspot analysis) which is lower overhead than VTune's exact call graph, plus concurrency analysis and locks & waits analysis.

Você também pode gostar