summaryrefslogtreecommitdiffstats
path: root/documentation/profile-manual
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2013-01-17 13:45:06 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-27 13:56:03 +0000
commit697b9ec4f7572e7b9ce361948ad8addc40197745 (patch)
tree3c42b52291086953cca9371cf2502e842dc82453 /documentation/profile-manual
parentacb86de34e3262cd6233da66bf2fa0b9c8a22171 (diff)
downloadpoky-697b9ec4f7572e7b9ce361948ad8addc40197745.tar.gz
profile-manual: Added Sysprof section to usage chapter.
No re-writing. (From yocto-docs rev: e3fd833c4bf7cdc50138ac940af8a2b35c37c52b) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/profile-manual')
-rw-r--r--documentation/profile-manual/profile-manual-usage.xml123
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