Hi Tom, Kcachegrind can only show the cost of C++ functions, can we get the cost of python functions or python modules? Because it is more interesting to look at the cost of each gr modules in the python code level.
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