diff options
| -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 | ||
