Hi Tom,

Thanks for your suggestion, my Kcachegrind works well now.

But this method (explicitly call through python interpreter) doesn't work
for Oprofile, I still can't find the session name "dial_tone" in the
profiled data. BTW, if Kcachegrind works well with python application, why
do you guys recommend Oprofile?

Sincerely,
--
Yang, Qing
Information Engineering, CUHK



2012/8/28 Tom Rondeau <t...@trondeau.com>

> On Tue, Aug 28, 2012 at 4:21 AM, Qing Yang <yangqing0...@gmail.com> wrote:
> > Hi everyone,
> >
> > Where can I find a concrete example on how to profile the gnuradio code
> in
> > Python?
> >
> > My PC is Linux 2.6.35-32-generic-pae #67-Ubuntu SMP Mon Mar 5 21:23:19
> UTC
> > 2012 i686 GNU/Linux. I use Ubuntu 10.10 and Xeon W3530.
> >
> > I can use Kcachegrind to profile code written in C++. But when I profile
> > python code(e.g., dial_tone.py), there is no profile data output.
> >
> > address@hidden:~/Public$ valgrind --tool=callgrind ./dial_tone.py
>
> Qing,
>
> Try this:
>
> address@hidden:~/Public$ valgrind --tool=callgrind python ./dial_tone.py
>
> I've used callgrind with Python before, but you need to explicitly
> call it through the interpreter for callgrind to catch on. I _think_
> this works, but it's just from memory. If it doesn't, Google callgrind
> and Python; I know the answer is out there.
>
> Tom
>
>
> > ==30385== Callgrind, a call-graph generating cache profiler
> > ==30385== Copyright (C) 2002-2010, and GNU GPL'd, by Josef Weidendorfer
> et
> > al.
> > ==30385== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for
> > copyright info
> > ==30385== Command: ./dial_tone.py
> > ==30385==
> > ==30385== For interactive control, run 'callgrind_control -h'.
> > address@hidden:~/Public$ ls -l
> > total 12
> > -rw-------  1 yangqing yangqing    0 2012-08-27 16:29 callgrind.out.30385
> > ** the size of profile data is 0? **
> > -rwxr-xr-x  1 yangqing yangqing 2006 2012-07-05 16:37 dial_tone.py
> > -rwxr-xr-x  1 yangqing yangqing  249 2012-08-27 16:22 mainloop.py
> > drwxr-xr-x 25 yangqing yangqing 4096 2012-08-27 00:23 oprofile
> >
> > Then I try Oprofile, but also failed :(
> >
> > address@hidden:~/Public$ sudo opcontrol --init
> > address@hidden:~/Public$ sudo opcontrol --setup --no-vmlinux
> > address@hidden:~/Public$ sudo opcontrol --start
> > ATTENTION: Use of opcontrol is discouraged.  Please see the man page for
> > operf.
> > Using default event: CPU_CLK_UNHALTED:100000:0:1:1
> > Using 2.6+ OProfile kernel interface.
> > Using log file /var/lib/oprofile/samples/oprofiled.log
> > Daemon started.
> > Profiler running.
> > address@hidden:~/Public$ sudo opcontrol --reset
> > Signalling daemon... done
> > address@hidden:~/Public$ ./dial_tone.py
> > address@hidden:~/Public$ sudo opcontrol --dump
> > address@hidden:~/Public$ sudo opcontrol --shutdown
> > Stopping profiling.
> > Killing daemon.
> > address@hidden:~/Public$ opreport -l dial_tone.py
> > Using /var/lib/oprofile/samples/ for samples directory.
> > error: no sample files found: profile specification too strict ?  **
> can't
> > find the profile data? **
> >
> > and I try
> > address@hidden:~/Public$ opreport -l|less
> > CPU: Intel Core/i7, speed 2.794e+06 MHz (estimated)
> > Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a
> unit
> > mask of 0x00 (No unit mask) count 100000
> > samples  %        image name               app name
> symbol
> > name
> > 97293    44.4076  no-vmlinux               no-vmlinux
> > /no-vmlinux
> > 43324    19.7744  nvidia_drv.so            nvidia_drv.so
> > /usr/lib/nvidia-173/xorg/nvidia_drv.so
> > 23189    10.5842  chromium-browser         chromium-browser
> > /usr/lib/chromium-browser/chromium-browser
> > 8264      3.7719  libpixman-1.so.0.18.4    libpixman-1.so.0.18.4
> > /usr/lib/libpixman-1.so.0.18.4
> > 5975      2.7272  libglib-2.0.so.0.2600.1  libglib-2.0.so.0.2600.1
> > /lib/libglib-2.0.so.0.2600.1
> > 4409      2.0124  libgobject-2.0.so.0.2600.1 libgobject-2.0.so.0.2600.1
> > /usr/lib/libgobject-2.0.so.0.2600.1
> > 3811      1.7395  libcairo.so.2.11000.0    libcairo.so.2.11000.0
> > /usr/lib/libcairo.so.2.11000.0
> > 3001      1.3698  libpangoft2-1.0.so.0.2800.2 libpangoft2-1.0.so.0.2800.2
> > /usr/lib/libpangoft2-1.0.so.0.2800.2
> > 2714      1.2388  python2.6                python2.6
> > /usr/bin/python2.6
> > 2083      0.9507  libdbus-1.so.3.5.2       libdbus-1.so.3.5.2
> > /lib/libdbus-1.so.3.5.2
> > 2003      0.9142  libwfb.so                libwfb.so
> > /usr/lib/xorg/modules/libwfb.so
> > 1969      0.8987  Xorg                     Xorg
> > /usr/bin/Xorg
> > 1894      0.8645  libgtk-x11-2.0.so.0.2200.0 libgtk-x11-2.0.so.0.2200.0
> > /usr/lib/libgtk-x11-2.0.so.0.2200.0
> > 1732      0.7905  libgnuradio-core-3.5.2git.so.0.0.0
> > libgnuradio-core-3.5.2git.so.0.0.0 gr_sig_source_f::work(int,
> > std::vector<void const*, std::allocat
> > or<void const*> >&, std::vector<void*, std::allocator<void*> >&)
> > 1578      0.7202  libgdk-x11-2.0.so.0.2200.0 libgdk-x11-2.0.so.0.2200.0
> > /usr/lib/libgdk-x11-2.0.so.0.2200.0
> > 1378      0.6290  libpango-1.0.so.0.2800.2 libpango-1.0.so.0.2800.2
> > /usr/lib/libpango-1.0.so.0.2800.2
> > 962       0.4391  [vdso] (tgid:1237 range:0xb77ec000-0xb77ed000) Xorg
> > [vdso] (tgid:1237 range:0xb77ec000-0xb77ed000)
> > 802       0.3661  libpthread-2.12.1.so     libpthread-2.12.1.so
> > pthread_mutex_lock
> > 690       0.3149  libc-2.12.1.so           libc-2.12.1.so
> > __memcpy_ssse3_rep
> > 640       0.2921  libpthread-2.12.1.so     libpthread-2.12.1.so
> > __pthread_mutex_unlock_usercnt
> > 459       0.2095  libX11.so.6.3.0          libX11.so.6.3.0
> > /usr/lib/libX11.so.6.3.0
> > 444       0.2027  libQtGui.so.4.7.0        libQtGui.so.4.7.0
> > /usr/lib/libQtGui.so.4.7.0
> > 409       0.1867  libc-2.12.1.so           libc-2.12.1.so
> > _int_malloc
> > 354       0.1616  librt-2.12.1.so          librt-2.12.1.so
> > clock_gettime
> > 341       0.1556  libc-2.12.1.so           libc-2.12.1.so
> > __memset_sse2_rep
> > 337       0.1538  libgnuradio-audio-3.5.2git.so.0.0.0
> > libgnuradio-audio-3.5.2git.so.0.0.0 audio_alsa_sink::work_s32(int,
> > std::vector<void const*, std::allocator<void const*> >&,
> std::vector<void*,
> > std::allocator<void*> >&)
> > 332       0.1515  anon (tgid:25090 range:0x4fc0a000-0x4fcff000)
> > chromium-browser         anon (tgid:25090 range:0x4fc0a000-0x4fcff000)
> > 322       0.1470  libc-2.12.1.so           libc-2.12.1.so
> > __strcmp_sse4_2
> > 237       0.1082  oprofiled                oprofiled
> > odb_update_node_with_offset
> > 230       0.1050  libpangocairo-1.0.so.0.2800.2
> > libpangocairo-1.0.so.0.2800.2 /usr/lib/libpangocairo-1.0.so.0.2800.2
> > 224       0.1022  libpthread-2.12.1.so     libpthread-2.12.1.so
> > pthread_getspecific
> > 223       0.1018  libstdc++.so.6.0.14      libstdc++.so.6.0.14
> > /usr/lib/libstdc++.so.6.0.14
> > 214       0.0977  libxcb.so.1.1.0          libxcb.so.1.1.0
> > /usr/lib/libxcb.so.1.1.0
> > 210       0.0959  metacity                 metacity
> > /usr/bin/metacity
> > 204       0.0931  libc-2.12.1.so           libc-2.12.1.so
> fgetc
> > 180       0.0822  ld-2.12.1.so             ld-2.12.1.so
> > do_lookup_x
> > 168       0.0767  libc-2.12.1.so           libc-2.12.1.so
> > __i686.get_pc_thunk.bx
> > 165       0.0753  libc-2.12.1.so           libc-2.12.1.so
> > _IO_vfscanf
> > 163       0.0744  ibus-daemon              ibus-daemon
> > /usr/bin/ibus-daemon
> > ... ....
> >
> > I can't find my thread of dial_tone.py. I guess I use Oprofile in the
> wrong
> > way, could you give me some tips?
> >
> > Sincerely,
> > --
> > Yang, Qing
> > Information Engineering, CUHK
> >
> >
> > _______________________________________________
> > Discuss-gnuradio mailing list
> > Discuss-gnuradio@gnu.org
> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to