diff options
Diffstat (limited to 'documentation/profile-manual/profile-manual-usage.xml')
-rw-r--r-- | documentation/profile-manual/profile-manual-usage.xml | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/documentation/profile-manual/profile-manual-usage.xml b/documentation/profile-manual/profile-manual-usage.xml index f2bc868b28..31ccfe6ebf 100644 --- a/documentation/profile-manual/profile-manual-usage.xml +++ b/documentation/profile-manual/profile-manual-usage.xml | |||
@@ -2763,6 +2763,129 @@ | |||
2763 | <ulink url='http://oprofile.sourceforge.net/about/'>About OProfile</ulink> | 2763 | <ulink url='http://oprofile.sourceforge.net/about/'>About OProfile</ulink> |
2764 | </para> | 2764 | </para> |
2765 | </section> | 2765 | </section> |
2766 | </section> | ||
2767 | |||
2768 | <section id='profile-manual-sysprof'> | ||
2769 | <title>Sysprof</title> | ||
2770 | |||
2771 | <para> | ||
2772 | Sysprof is a very easy to use system-wide profiler that consists | ||
2773 | of a single window with three panes and a few buttons which allow | ||
2774 | you to start, stop, and view the profile from one place. | ||
2775 | </para> | ||
2776 | |||
2777 | <section id='sysprof-setup'> | ||
2778 | <title>Setup</title> | ||
2779 | |||
2780 | <para> | ||
2781 | For this section, we'll assume you've already performed the | ||
2782 | basic setup outlined in the General Setup section. | ||
2783 | </para> | ||
2784 | |||
2785 | <para> | ||
2786 | Sysprof is a GUI-based application that runs on the target | ||
2787 | system. For the rest of this document we assume you've | ||
2788 | ssh'ed to the host and will be running Sysprof on the | ||
2789 | target (you can use the '-X' option to ssh and have the | ||
2790 | Sysprof GUI run on the target but display remotely on the | ||
2791 | host if you want). | ||
2792 | </para> | ||
2793 | </section> | ||
2794 | |||
2795 | <section id='sysprof-basic-usage'> | ||
2796 | <title>Basic Usage</title> | ||
2797 | |||
2798 | <para> | ||
2799 | To start profiling the system, you simply press the 'Start' | ||
2800 | button. To stop profiling and to start viewing the profile data | ||
2801 | in one easy step, press the 'Profile' button. | ||
2802 | </para> | ||
2803 | |||
2804 | <para> | ||
2805 | Once you've pressed the profile button, the three panes will | ||
2806 | fill up with profiling data: | ||
2807 | </para> | ||
2808 | |||
2809 | <para> | ||
2810 | <imagedata fileref="figures/sysprof-copy-to-user.png" width="6in" depth="7in" align="center" scalefit="1" /> | ||
2811 | </para> | ||
2812 | |||
2813 | <para> | ||
2814 | The left pane shows a list of functions and processes. | ||
2815 | Selecting one of those expands that function in the right | ||
2816 | pane, showing all its callees. Note that this caller-oriented | ||
2817 | display is essentially the inverse of perf's default | ||
2818 | callee-oriented callchain display. | ||
2819 | </para> | ||
2820 | |||
2821 | <para> | ||
2822 | In the screenshot above, we're focusing on __copy_to_user_ll() | ||
2823 | and looking up the callchain we can see that one of the callers | ||
2824 | of __copy_to_user_ll is sys_read() and the complete callpath | ||
2825 | between them. Notice that this is essentially a portion of the | ||
2826 | same information we saw in the perf display shown in the perf | ||
2827 | section of this page. | ||
2828 | </para> | ||
2829 | |||
2830 | <para> | ||
2831 | <imagedata fileref="figures/sysprof-copy-from-user.png" width="6in" depth="7in" align="center" scalefit="1" /> | ||
2832 | </para> | ||
2833 | |||
2834 | <para> | ||
2835 | Similarly, the above is a snapshot of the Sysprof display of a | ||
2836 | copy-from-user callchain. | ||
2837 | </para> | ||
2838 | |||
2839 | <para> | ||
2840 | Finally, looking at the third Sysprof pane in the lower left, | ||
2841 | we can see a list of all the callers of a particular function | ||
2842 | selected in the top left pane. In this case, the lower pane is | ||
2843 | showing all the callers of __mark_inode_dirty: | ||
2844 | </para> | ||
2845 | |||
2846 | <para> | ||
2847 | <imagedata fileref="figures/sysprof-callers.png" width="6in" depth="7in" align="center" scalefit="1" /> | ||
2848 | </para> | ||
2849 | |||
2850 | <para> | ||
2851 | Double-clicking on one of those functions will in turn change the | ||
2852 | focus to the selected function, and so on. | ||
2853 | </para> | ||
2854 | |||
2855 | <note> | ||
2856 | Tying It Together: If you like sysprof's 'caller-oriented' | ||
2857 | display, you may be able to approximate it in other tools as | ||
2858 | well. For example, 'perf report' has the -g (--call-graph) | ||
2859 | option that you can experiment with; one of the options is | ||
2860 | 'caller' for an inverted caller-based callgraph display. | ||
2861 | </note> | ||
2862 | |||
2863 | <note> | ||
2864 | Tying It Together: sysprof does have build options to enable | ||
2865 | use of the perf_event subsystem and benefit from the perf_event | ||
2866 | infrastructure by adding support for something other than | ||
2867 | system-wide profiling i.e. per-process or workload profiling, | ||
2868 | but the version in danny doesn't yet take advantage of those | ||
2869 | capabilities (sysprof officially added the ability. | ||
2870 | to make use of perf_events just as we were going to press). | ||
2871 | </note> | ||
2872 | </section> | ||
2873 | |||
2874 | <section id='sysprof-documentation'> | ||
2875 | <title>Documentation</title> | ||
2876 | |||
2877 | <para> | ||
2878 | There doesn't seem to be any documentation for Sysprof, but | ||
2879 | maybe that's because it's pretty self-explanatory. | ||
2880 | The Sysprof website, however, is here: | ||
2881 | <ulink url='http://sysprof.com/'>Sysprof, System-wide Performance Profiler for Linux</ulink> | ||
2882 | </para> | ||
2883 | </section> | ||
2884 | |||
2885 | |||
2886 | |||
2887 | |||
2888 | |||
2766 | 2889 | ||
2767 | 2890 | ||
2768 | 2891 | ||