From: RocChen <sin...@gm...> - 2013-04-26 03:15:10
|
Hello, every one: I am a newer to the oprofile and I met some problems with the oprofile. I was profiling some applications on the Zynq board (with a dual core Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). 1. First, I installed the oproile with apt-get, the oprofile version was 0.9.6. I ran the following command lists; > opcontrol --init > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux > opcontrol --start-daemon > opcontrol --start > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... > opcontrol --stop > opcontrol --dump > opreport The opreport reported that no sample had been got. 2. Then I deleted all in /var/lib/oprofile and the /root/.oprofile/*, reboot the machine, rerun commands above. The opreport for all applications : CPU: ARM Cortex-A9, speed 1998 MHz (estimated) Counted CPU_CYCLES events (Number of CPU cycles) with a unit mask of 0x00 (No unit mask) count 1000 samples % image name symbol name 10000 100.000 no-vmlinux /no-vmlinux but no sample for functions in the applications. 3. I download the oprofile0.9.7 source file and compiled on the board, then profile with it, the results ware the same with the oprofile0.9.6. > ./autogen.sh > ./configure > # to configure with kernel 3.3 header, run: ln -sf generated/autogen.h linux/autogen.sh > make > make install 4. so does the oprofile 0.9.8 version compiled from source. BTW, if I run: dmesg | grep oprofile, it gives: oprofile: using arm/armv7-ca9 So I am wondering whether I was running something wrong setups or the oprofile is now not supportting the kernel 3.3 version ? Hope I have describled the situation clearly. Any replies are appreciated~~ |
From: RocChen <sin...@gm...> - 2013-04-26 03:18:44
|
# to configure with kernel 3.3 header, run: ln -sf generated/autogen.h linux/autogen.sh should be: # to configure with kernel 3.3 header, run: cd $KINC/include && ln -sf generated/autoconf.h linux/autoconf.h On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm...> wrote: > Hello, every one: > I am a newer to the oprofile and I met some problems with the oprofile. > > I was profiling some applications on the Zynq board (with a dual core > Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). > > 1. First, I installed the oproile with apt-get, the oprofile version was > 0.9.6. > I ran the following command lists; > > opcontrol --init > > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux > > opcontrol --start-daemon > > opcontrol --start > > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... > > opcontrol --stop > > opcontrol --dump > > opreport > > The opreport reported that no sample had been got. > > 2. Then I deleted all in /var/lib/oprofile and the /root/.oprofile/*, > reboot the machine, rerun commands above. > The opreport for all applications : > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (Number of CPU cycles) with a unit mask of 0x00 > (No unit mask) count 1000 > samples % image name symbol name > 10000 100.000 no-vmlinux /no-vmlinux > > but no sample for functions in the applications. > > 3. I download the oprofile0.9.7 source file and compiled on the board, > then profile with it, the results ware the same with the oprofile0.9.6. > > ./autogen.sh > > ./configure > > # to configure with kernel 3.3 header, run: ln -sf generated/autogen.h > linux/autogen.sh > > make > > make install > 4. so does the oprofile 0.9.8 version compiled from source. > > BTW, if I run: dmesg | grep oprofile, it gives: > oprofile: using arm/armv7-ca9 > > So I am wondering whether I was running something wrong setups or the > oprofile is now not supportting the kernel 3.3 version ? > > Hope I have describled the situation clearly. > Any replies are appreciated~~ > |
From: Maynard J. <may...@us...> - 2013-04-26 12:27:05
|
On 04/25/2013 10:18 PM, RocChen wrote: > # to configure with kernel 3.3 header, run: ln -sf generated/autogen.h linux/autogen.sh > should be: > # to configure with kernel 3.3 header, run: cd $KINC/include && > ln -sf generated/autoconf.h linux/autoconf.h > > > On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm... <mailto:sin...@gm...>> wrote: > > Hello, every one: > I am a newer to the oprofile and I met some problems with the oprofile. > > I was profiling some applications on the Zynq board (with a dual core Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). > > 1. First, I installed the oproile with apt-get, the oprofile version was 0.9.6. > I ran the following command lists; > > opcontrol --init > > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux > > opcontrol --start-daemon > > opcontrol --start > > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... > > opcontrol --stop > > opcontrol --dump > > opreport Are you running the opcontrol commands in a script or manually from the command line? The Coretex-A9 processor is not supported in oprofile 0.9.6, so I would have expected the opcontrol setup command to fail. It's possible the 'opcontrol --start' command would succeed if ARM is capable of falling back to timer mode. *Will*, on cc, can perhaps answer that. With the proper setup, you should be able to get this to work with oprofile 0.9.7 or later. But I'm not an ARM expert, so hopefully Will can help determine what's not setup correctly. -Maynard > > The opreport reported that no sample had been got. > > 2. Then I deleted all in /var/lib/oprofile and the /root/.oprofile/*, reboot the machine, rerun commands above. > The opreport for all applications : > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (Number of CPU cycles) with a unit mask of 0x00 (No unit mask) count 1000 > samples % image name symbol name > 10000 100.000 no-vmlinux /no-vmlinux > > but no sample for functions in the applications. > > 3. I download the oprofile0.9.7 source file and compiled on the board, then profile with it, the results ware the same with the oprofile0.9.6. > > ./autogen.sh > > ./configure > > # to configure with kernel 3.3 header, run: ln -sf generated/autogen.h linux/autogen.sh > > make > > make install > 4. so does the oprofile 0.9.8 version compiled from source. > > BTW, if I run: dmesg | grep oprofile, it gives: > oprofile: using arm/armv7-ca9 > > So I am wondering whether I was running something wrong setups or the oprofile is now not supportting the kernel 3.3 version ? > > Hope I have describled the situation clearly. > Any replies are appreciated~~ > > > > > ------------------------------------------------------------------------------ > Try New Relic Now & We'll Send You this Cool Shirt > New Relic is the only SaaS-based application performance monitoring service > that delivers powerful full stack analytics. Optimize and monitor your > browser, app, & servers with just a few lines of code. Try New Relic > and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr > > > > _______________________________________________ > oprofile-list mailing list > opr...@li... > https://lists.sourceforge.net/lists/listinfo/oprofile-list > |
From: Will D. <wil...@ar...> - 2013-04-26 12:40:19
|
On Fri, Apr 26, 2013 at 01:26:54PM +0100, Maynard Johnson wrote: > On 04/25/2013 10:18 PM, RocChen wrote: > > # to configure with kernel 3.3 header, run: ln -sf generated/autogen.h linux/autogen.sh > > should be: > > # to configure with kernel 3.3 header, run: cd $KINC/include && > > ln -sf generated/autoconf.h linux/autoconf.h > > > > > > On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm... <mailto:sin...@gm...>> wrote: > > > > Hello, every one: > > I am a newer to the oprofile and I met some problems with the oprofile. > > > > I was profiling some applications on the Zynq board (with a dual core Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). > > > > 1. First, I installed the oproile with apt-get, the oprofile version was 0.9.6. > > I ran the following command lists; > > > opcontrol --init > > > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux > > > opcontrol --start-daemon > > > opcontrol --start > > > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... > > > opcontrol --stop > > > opcontrol --dump > > > opreport > Are you running the opcontrol commands in a script or manually from the command line? The Coretex-A9 processor is not supported in oprofile 0.9.6, so I would have expected the opcontrol setup command to fail. It's possible the 'opcontrol --start' command would succeed if ARM is capable of falling back to timer mode. *Will*, on cc, can perhaps answer that. With the proper setup, you should be able to get this to work with oprofile 0.9.7 or later. But I'm not an ARM expert, so hopefully Will can help determine what's not setup correctly. [adding Koteswararao, who previously reported using OProfile with Zynq] Timer mode should work fine. If you want to use the PMU, you need to check that perf is enabled in your kernel (CONFIG_HW_PERF_EVENTS=y) and that your interrupts are being registered correctly; either via device tree or as a platform device. Will |
From: Koteswararao N. <kne...@mv...> - 2013-04-26 13:16:17
|
Hi, Please use oprofile-0.9.7 userland tool for profiling events for CortexA9 board.(ARMv7) Regards koteswararao On Fri, Apr 26, 2013 at 6:10 PM, Will Deacon <wil...@ar...> wrote: > On Fri, Apr 26, 2013 at 01:26:54PM +0100, Maynard Johnson wrote: > > On 04/25/2013 10:18 PM, RocChen wrote: > > > # to configure with kernel 3.3 header, run: ln -sf generated/autogen.h > linux/autogen.sh > > > should be: > > > # to configure with kernel 3.3 header, run: cd $KINC/include && > > > ln -sf generated/autoconf.h linux/autoconf.h > > > > > > > > > On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm...<mailto: > sin...@gm...>> wrote: > > > > > > Hello, every one: > > > I am a newer to the oprofile and I met some problems with the > oprofile. > > > > > > I was profiling some applications on the Zynq board (with a dual > core Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). > > > > > > 1. First, I installed the oproile with apt-get, the oprofile > version was 0.9.6. > > > I ran the following command lists; > > > > opcontrol --init > > > > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all > --no-vmlinux > > > > opcontrol --start-daemon > > > > opcontrol --start > > > > // here my program, namely the jpg2000dec, jpg2000enc, > mpeg2dec... > > > > opcontrol --stop > > > > opcontrol --dump > > > > opreport > > Are you running the opcontrol commands in a script or manually from the > command line? The Coretex-A9 processor is not supported in oprofile 0.9.6, > so I would have expected the opcontrol setup command to fail. It's > possible the 'opcontrol --start' command would succeed if ARM is capable of > falling back to timer mode. *Will*, on cc, can perhaps answer that. With > the proper setup, you should be able to get this to work with oprofile > 0.9.7 or later. But I'm not an ARM expert, so hopefully Will can help > determine what's not setup correctly. > > [adding Koteswararao, who previously reported using OProfile with Zynq] > > Timer mode should work fine. If you want to use the PMU, you need to check > that perf is enabled in your kernel (CONFIG_HW_PERF_EVENTS=y) and that your > interrupts are being registered correctly; either via device tree or as a > platform device. > > Will > |
From: RocChen <sin...@gm...> - 2013-04-26 13:39:21
|
Hai, thanks very much for your attention, sir. I indeed have used the oprofile 0.9.7 and even 0.9.8. Since the oprofile version is update to 0.9.6 via the apt-get install, I compiled the oprofile 0.9.7 and 0.9.8 from the source files. But the results were the same, reported no samples. The opcontrol commands ware executed manually from a ssh shell. Timer mode should work fine. If you want to use the PMU, you need to check that perf is enabled in your kernel (CONFIG_HW_PERF_EVENTS=y) and that your interrupts are being registered correctly; either via device tree or as a platform device I have not tested in the timer mode and I will try it right now. I check the CONFIG_HW_PERF_EVENTS in the .config, it is set 'y', but I am not sure the interrupts are registered correctly or not, maybe it casues the problem. 3. I download the oprofile 0.9.7 source file and compiled on the board, then profile with it, the results ware the same with the oprofile 0.9.6. > ./autogen.sh > ./configure > # to configure with kernel 3.3 header, run: ln -sf generated/autoconf.h linux/autoconf.sh > make > make install 4. so does the oprofile 0.9.8 version compiled from source. On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm...> wrote: > Hello, every one: > I am a newer to the oprofile and I met some problems with the oprofile. > > I was profiling some applications on the Zynq board (with a dual core > Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). > > 1. First, I installed the oproile with apt-get, the oprofile version was > 0.9.6. > I ran the following command lists; > > opcontrol --init > > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux > > opcontrol --start-daemon > > opcontrol --start > > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... > I think my applications ran long enough at the rate CPU_CYCLES:1000, so it might give at leaset few hundred samples) > opcontrol --stop > > opcontrol --dump > > opreport > > The opreport reported that no sample had been got. > > 2. Then I deleted all in /var/lib/oprofile and the /root/.oprofile/*, > reboot the machine, rerun commands above. > The opreport for all applications : > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (Number of CPU cycles) with a unit mask of 0x00 > (No unit mask) count 1000 > samples % image name symbol name > 10000 100.000 no-vmlinux /no-vmlinux > > but no sample for functions in the applications. > *************************************************** > =====>: > 3. I download the oprofile 0.9.7 source file and compiled on the board, > then profile with it, the results ware the same with the oprofile0.9.6. > > ./autogen.sh > > ./configure > > # to configure with kernel 3.3 header, run: ln -sf generated/autoconf.h > linux/autoconf.sh > > make > > make install > 4. so does the oprofile 0.9.8 version compiled from source. > > BTW, if I run: dmesg | grep oprofile, it gives: > oprofile: using arm/armv7-ca9 > > **************************************** > So I am wondering whether I was running something wrong setups or the > oprofile is now not supportting the kernel 3.3 version ? > > Hope I have describled the situation clearly. > Any replies are appreciated~~ > |
From: Maynard J. <may...@us...> - 2013-05-03 13:18:14
|
On 05/02/2013 08:34 PM, RocChen wrote: > Yes, I execute a 'opcontrol --deinit' after every iteration of the command sequence. > > Above all, I must thank to the warmhearted people here for helping me to get the expected profiling results with oprofile. > > Currently, the only problem for me seems to be that it sometimes gives the profiling results with thousands or more samples for the user application functions, libaries and the no-vmlinux (I call it 'nice results'), but some other times it only gives several tens of samples totally ('bad results'). > Besides, it seems to have no issue with the '--image' parameter for this problem. The profiling results are sometimes 'nice' or somtimes 'bad' or even sometimes reporting no samples no matter I set the parameter '--image=all' or '--image=<application name>' or just leave it out. *Will*, is it possible the ARM oprofile kernel driver (or perf_events subsystem) had a bug in kernel 3.3 involving PMU hardware reservation and/or resource release? A couple years ago, when perf_events was first being introduced, I recall seeing a similar symptom, where oprofile would simply stop getting PMU interrupts, and it had to do with some incorrect handshaking between oprofile and perf_events. -Maynard > Same opcontrol command sequence (the sample event may be different on different CPUs, for example, I use the 'global_power_events:6000' event on the i386/p4-ht CPU) and applications on my PCs (x86 platform) work very well and always give the nice profiling results. > > On Mon, Apr 29, 2013 at 10:08 PM, Maynard Johnson <may...@us... <mailto:may...@us...>> wrote: > > On 04/27/2013 03:44 AM, RocChen wrote: > > Thank you for your enthusiastic guidance, sir: > > > > I could get nice profiling results with the command list. (but with another issue I can not understand, described below) > > > > Command List: > >> rm -rf /var/lib/oprofile > >> rm -rf /root/.oprofile > >> opcontrol --init > >> opcontrol --no-vmlinux > >> opcontrol --setup --event=CPU_CYCLES:10000 --separate=lib,kernel > >> opcontrol --start --image=all > >> ./array > >> ./../mpeg2dec/oprofile_results/mpeg2dec -b ../mpeg2dec/input_base/input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_%03d > >> opcontrol --dump > >> opreport -l array > >> opreport -l ./../mpeg2dec/oprofile_results/mpeg2dec > > > > Nice Results: > > [root]$ opreport -l array > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > > samples % image name symbol name > > 70547 95.8858 array slow_multiply > > 1181 1.6052 array fast_multiply > > 983 1.3361 array main > > 828 1.1254 no-vmlinux /no-vmlinux > > 29 0.0394 ld-2.13.so <http://ld-2.13.so> <http://ld-2.13.so> /lib/arm-linux-gnueabi/ld-2.13.so <http://ld-2.13.so> <http://ld-2.13.so> > > 6 0.0082 libc-2.13.so <http://libc-2.13.so> <http://libc-2.13.so> /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> <http://libc-2.13.so> > > [root]$ opreport -l mpeg2decode > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > > samples % image name symbol name > > 23899 16.9694 mpeg2decode conv420to422 > > 23648 16.7912 mpeg2decode store_ppm_tga > > 16695 11.8542 mpeg2decode conv422to444 > > 16072 11.4119 mpeg2decode Decode_Picture > > 15934 11.3139 mpeg2decode Fast_IDCT > > 15133 10.7451 no-vmlinux /no-vmlinux > > 14614 10.3766 mpeg2decode putbyte > > 9260 6.5750 mpeg2decode form_component_prediction > > 1631 1.1581 mpeg2decode Flush_Buffer > > 825 0.5858 mpeg2decode Decode_MPEG2_Intra_Block > > 481 0.3415 mpeg2decode form_prediction.constprop.0 > > 415 0.2947 mpeg2decode Decode_MPEG2_Non_Intra_Block > > 304 0.2159 mpeg2decode Get_Bits > > 200 0.1420 mpeg2decode Show_Bits > > 195 0.1385 mpeg2decode macroblock_modes > > ........ > > > > (*) However, there is an issue that I can hardly understand: after I repeated the commands list above several times (with the same event and sample rate, just exactly the same command sequences), it may give the different results, the total sample numbers are only several tens and no samples for user application functions. > > From the sequence of commands listed above, I don't see that you ever issue any commands to stop, shutdown or deinit oprofile. If you simply leave oprofile running and issue another opcontrol --start' command, that should basically be a NOP, so I'm not aware of any oprofile userspace issues with what you're doing. Have you tried any of the '--stop', '--shutdown', or '--deinit' options between profiling runs? > > -Maynard > > > > In my thought, the profiling shoud be at least similar to above nice results. > > > > Bad results: > > [root]$ opreport -l array > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > > samples % image name symbol name > > 63 92.6471 no-vmlinux /no-vmlinux > > 5 7.3529 libc-2.13.so <http://libc-2.13.so> <http://libc-2.13.so> /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> <http://libc-2.13.so> > > (0)-(linaro-chenp)-[Sat Apr 27][15:06:36]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/workspace] > > [root]$ opreport -l mpeg2decode > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > > samples % image name symbol name > > 69 95.8333 no-vmlinux /no-vmlinux > > 3 4.1667 libc-2.13.so <http://libc-2.13.so> <http://libc-2.13.so> /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> <http://libc-2.13.so> > > > > |
From: Will D. <wil...@ar...> - 2013-05-03 15:57:06
|
On Fri, May 03, 2013 at 02:17:58PM +0100, Maynard Johnson wrote: > On 05/02/2013 08:34 PM, RocChen wrote: > > Yes, I execute a 'opcontrol --deinit' after every iteration of the command sequence. > > > > Above all, I must thank to the warmhearted people here for helping me to get the expected profiling results with oprofile. > > > > Currently, the only problem for me seems to be that it sometimes gives the profiling results with thousands or more samples for the user application functions, libaries and the no-vmlinux (I call it 'nice results'), but some other times it only gives several tens of samples totally ('bad results'). > > Besides, it seems to have no issue with the '--image' parameter for this problem. The profiling results are sometimes 'nice' or somtimes 'bad' or even sometimes reporting no samples no matter I set the parameter '--image=all' or '--image=<application name>' or just leave it out. > > *Will*, is it possible the ARM oprofile kernel driver (or perf_events subsystem) had a bug in kernel 3.3 involving PMU hardware reservation and/or resource release? A couple years ago, when perf_events was first being introduced, I recall seeing a similar symptom, where oprofile would simply stop getting PMU interrupts, and it had to do with some incorrect handshaking between oprofile and perf_events. Hmm, doesn't ring any bells I'm afraid. The only things I can think of are either (a) some other task takes over the PMU via perf or (b) power management decides to turn off the PMU/Interrupt controller. Will |
From: Koteswararao N. <kne...@mv...> - 2013-04-26 13:53:26
|
Dear RocChen, I hope i understood your situation.From the log your showed in previous mail, your are successfully updated the oprofile userland tool. Coming to profiling of applications, you need do it as below rm -rf /var/lib/oprofile/ rm -rf /root/.oprofile opcontrol --start --image=<application name> gcc -g <applicationname> -o <binary application name> ex: gcc -g array.c -o array ./applicationame ex. ./array opcontrol --dump opreport array is sample application which is simply doing some multiplication etc. you can use any application that will put load over CPU so that i can use H/W counter to count the samples. Light Load application will not generate Events and CPU can't use much of it's time to it and hence samples might not be generated. Regards koteswararao On Fri, Apr 26, 2013 at 7:08 PM, RocChen <sin...@gm...> wrote: > Hai, thanks very much for your attention, sir. > > I indeed have used the oprofile 0.9.7 and even 0.9.8. Since the oprofile > version is update to 0.9.6 via the apt-get install, I compiled the oprofile > 0.9.7 and 0.9.8 from the source files. But the results were the same, > reported no samples. > > The opcontrol commands ware executed manually from a ssh shell. > > > Timer mode should work fine. If you want to use the PMU, you need to check > that perf is enabled in your kernel (CONFIG_HW_PERF_EVENTS=y) and that your > interrupts are being registered correctly; either via device tree or as a > platform device > > I have not tested in the timer mode and I will try it right now. I check > the CONFIG_HW_PERF_EVENTS in the .config, it is set 'y', but I am not sure > the interrupts are registered correctly or not, maybe it casues the problem. > > > > 3. I download the oprofile 0.9.7 source file and compiled on the board, > then profile with it, the results ware the same with the oprofile 0.9.6. > > ./autogen.sh > > ./configure > > # to configure with kernel 3.3 header, run: ln -sf generated/autoconf.h > linux/autoconf.sh > > make > > make install > 4. so does the oprofile 0.9.8 version compiled from source. > > > On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm...> wrote: > >> Hello, every one: >> I am a newer to the oprofile and I met some problems with the oprofile. >> >> I was profiling some applications on the Zynq board (with a dual core >> Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). >> >> 1. First, I installed the oproile with apt-get, the oprofile version was >> 0.9.6. >> I ran the following command lists; >> > opcontrol --init >> > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all >> --no-vmlinux >> > opcontrol --start-daemon >> > opcontrol --start >> > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... >> > > I think my applications ran long enough at the rate CPU_CYCLES:1000, so it > might give at leaset few hundred samples) > > > opcontrol --stop >> > opcontrol --dump >> > opreport >> >> The opreport reported that no sample had been got. >> >> 2. Then I deleted all in /var/lib/oprofile and the /root/.oprofile/*, >> reboot the machine, rerun commands above. >> The opreport for all applications : >> >> CPU: ARM Cortex-A9, speed 1998 MHz (estimated) >> Counted CPU_CYCLES events (Number of CPU cycles) with a unit mask of 0x00 >> (No unit mask) count 1000 >> samples % image name symbol name >> 10000 100.000 no-vmlinux /no-vmlinux >> >> but no sample for functions in the applications. >> > > *************************************************** > >> =====>: >> 3. I download the oprofile 0.9.7 source file and compiled on the board, >> then profile with it, the results ware the same with the oprofile0.9.6. >> > ./autogen.sh >> > ./configure >> > # to configure with kernel 3.3 header, run: ln -sf generated/autoconf.h >> linux/autoconf.sh >> > make >> > make install >> 4. so does the oprofile 0.9.8 version compiled from source. >> >> BTW, if I run: dmesg | grep oprofile, it gives: >> oprofile: using arm/armv7-ca9 >> >> **************************************** > >> So I am wondering whether I was running something wrong setups or the >> oprofile is now not supportting the kernel 3.3 version ? >> >> Hope I have describled the situation clearly. >> Any replies are appreciated~~ >> > > |
From: Koteswararao N. <kne...@mv...> - 2013-04-26 14:14:20
|
>>opcontrol --start --image=<application name> Provide binary application name . ex. opcontrol --start --image=array Regards koteswararao On Fri, Apr 26, 2013 at 7:17 PM, Koteswararao Nelakurthi < kne...@mv...> wrote: > Dear RocChen, > > I hope i understood your situation.From the log your showed > in previous mail, your are successfully updated the oprofile > userland tool. > Coming to profiling of applications, you need do it as below > > rm -rf /var/lib/oprofile/ > rm -rf /root/.oprofile > > opcontrol --start --image=<application name> > > gcc -g <applicationname> -o <binary application name> > ex: gcc -g array.c -o array > > ./applicationame > ex. ./array > > opcontrol --dump > > opreport > > array is sample application which is simply doing some multiplication etc. > you can use any application that will put load over CPU so that i can use > H/W counter to count the samples. > > Light Load application will not generate Events and CPU can't use much > of it's time to it and hence samples might not be generated. > > > Regards > koteswararao > > > > On Fri, Apr 26, 2013 at 7:08 PM, RocChen <sin...@gm...> wrote: > >> Hai, thanks very much for your attention, sir. >> >> I indeed have used the oprofile 0.9.7 and even 0.9.8. Since the oprofile >> version is update to 0.9.6 via the apt-get install, I compiled the oprofile >> 0.9.7 and 0.9.8 from the source files. But the results were the same, >> reported no samples. >> >> The opcontrol commands ware executed manually from a ssh shell. >> >> >> Timer mode should work fine. If you want to use the PMU, you need to check >> that perf is enabled in your kernel (CONFIG_HW_PERF_EVENTS=y) and that >> your >> interrupts are being registered correctly; either via device tree or as a >> platform device >> >> I have not tested in the timer mode and I will try it right now. I check >> the CONFIG_HW_PERF_EVENTS in the .config, it is set 'y', but I am not sure >> the interrupts are registered correctly or not, maybe it casues the problem. >> >> >> >> 3. I download the oprofile 0.9.7 source file and compiled on the board, >> then profile with it, the results ware the same with the oprofile 0.9.6. >> > ./autogen.sh >> > ./configure >> > # to configure with kernel 3.3 header, run: ln -sf generated/autoconf.h >> linux/autoconf.sh >> > make >> > make install >> 4. so does the oprofile 0.9.8 version compiled from source. >> >> >> On Fri, Apr 26, 2013 at 11:14 AM, RocChen <sin...@gm...> wrote: >> >>> Hello, every one: >>> I am a newer to the oprofile and I met some problems with the oprofile. >>> >>> I was profiling some applications on the Zynq board (with a dual core >>> Cortex-A9 integratd, Linux kernel 3.3, linaro 12.01 file system). >>> >>> 1. First, I installed the oproile with apt-get, the oprofile version was >>> 0.9.6. >>> I ran the following command lists; >>> > opcontrol --init >>> > opcontrol --setup --event=CPU_CYCLES:1000 --separate=all >>> --no-vmlinux >>> > opcontrol --start-daemon >>> > opcontrol --start >>> > // here my program, namely the jpg2000dec, jpg2000enc, mpeg2dec... >>> >> >> I think my applications ran long enough at the rate CPU_CYCLES:1000, so >> it might give at leaset few hundred samples) >> >> > opcontrol --stop >>> > opcontrol --dump >>> > opreport >>> >>> The opreport reported that no sample had been got. >>> >>> 2. Then I deleted all in /var/lib/oprofile and the /root/.oprofile/*, >>> reboot the machine, rerun commands above. >>> The opreport for all applications : >>> >>> CPU: ARM Cortex-A9, speed 1998 MHz (estimated) >>> Counted CPU_CYCLES events (Number of CPU cycles) with a unit mask of >>> 0x00 (No unit mask) count 1000 >>> samples % image name symbol name >>> 10000 100.000 no-vmlinux /no-vmlinux >>> >>> but no sample for functions in the applications. >>> >> >> *************************************************** >> >>> =====>: >>> 3. I download the oprofile 0.9.7 source file and compiled on the board, >>> then profile with it, the results ware the same with the oprofile0.9.6. >>> > ./autogen.sh >>> > ./configure >>> > # to configure with kernel 3.3 header, run: ln -sf >>> generated/autoconf.h linux/autoconf.sh >>> > make >>> > make install >>> 4. so does the oprofile 0.9.8 version compiled from source. >>> >>> BTW, if I run: dmesg | grep oprofile, it gives: >>> oprofile: using arm/armv7-ca9 >>> >>> **************************************** >> >>> So I am wondering whether I was running something wrong setups or the >>> oprofile is now not supportting the kernel 3.3 version ? >>> >>> Hope I have describled the situation clearly. >>> Any replies are appreciated~~ >>> >> >> > |
From: RocChen <sin...@gm...> - 2013-04-26 14:26:02
|
Very sorry for forgetting cc to the maillist~ ---------- Forwarded message ---------- From: RocChen <sin...@gm...> Date: Fri, Apr 26, 2013 at 10:14 PM Subject: Re: no sample when profiling ARM Cortex-A9 with Linux kernel 3.3 To: Koteswararao Nelakurthi <kne...@mv...> Hai,Koteswararao Thanks for for quick reply. Here is my profiling procedure (opcontrol: oprofile 0.9.7 compiled on Apr 26 2013 08:47:51): [root]$ rm -rf /var/lib/oprofile/ (0)-(linaro)-[Fri Apr 26][22:03:05]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ rm -rf ~/.oprofile/ (0)-(linaro)-[Fri Apr 26][22:03:13]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ opcontrol --init (0)-(linaro)-[Fri Apr 26][22:03:29]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux (0)-(linaro)-[Fri Apr 26][22:04:20]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ opcontrol --start --image=../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode Using 2.6+ OProfile kernel interface. Using log file /var/lib/oprofile/samples/oprofiled.log Daemon started. Profiler running. (0)-(linaro)-[Fri Apr 26][22:05:25]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ time ./../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode -b input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_ %03d saving output_base_4CIF_96bps_000.ppm saving output_base_4CIF_96bps_001.ppm saving output_base_4CIF_96bps_002.ppm saving output_base_4CIF_96bps_003.ppm saving output_base_4CIF_96bps_004.ppm saving output_base_4CIF_96bps_005.ppm saving output_base_4CIF_96bps_006.ppm saving output_base_4CIF_96bps_007.ppm saving output_base_4CIF_96bps_008.ppm real 0m1.593s user 0m1.490s sys 0m0.100s (0)-(linaro)-[Fri Apr 26][22:05:54]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ opcontrol --dump (0)-(linaro)-[Fri Apr 26][22:06:06]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] [root]$ opreport -l ../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode WARNING! The OProfile kernel driver reports sample buffer overflows. Such overflows can result in incorrect sample attribution, invalid sample files and other symptoms. See the oprofiled.log for details. You should adjust your sampling frequency to eliminate (or at least minimize) these overflows. error: no sample files found: profile specification too strict ? ****************************************** I review the dmesg log for something related with the pmu: > dmesg | grep PMU hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available > dmesg | grep pmu registering platform device 'arm-pmu' id 0 On Fri, Apr 26, 2013 at 9:52 PM, Koteswararao Nelakurthi < kne...@mv...> wrote: > >>opcontrol --start --image=<application name> > Provide binary application name . > ex. opcontrol --start --image=array > > Regards > koteswararao > > > On Fri, Apr 26, 2013 at 7:17 PM, Koteswararao Nelakurthi < > kne...@mv...> wrote: > >> Dear RocChen, >> >> I hope i understood your situation.From the log your showed >> in previous mail, your are successfully updated the oprofile >> userland tool. >> Coming to profiling of applications, you need do it as below >> >> rm -rf /var/lib/oprofile/ >> rm -rf /root/.oprofile >> >> opcontrol --start --image=<application name> >> >> gcc -g <applicationname> -o <binary application name> >> ex: gcc -g array.c -o array >> >> ./applicationame >> ex. ./array >> >> opcontrol --dump >> >> opreport >> >> array is sample application which is simply doing some multiplication etc. >> you can use any application that will put load over CPU so that i can use >> H/W counter to count the samples. >> >> Light Load application will not generate Events and CPU can't use much >> of it's time to it and hence samples might not be generated. >> >> >> Regards >> koteswararao >> >> |
From: Maynard J. <may...@us...> - 2013-04-26 16:08:10
|
On 04/26/2013 09:25 AM, RocChen wrote: > > Very sorry for forgetting cc to the maillist~ > > > ---------- Forwarded message ---------- > From: *RocChen* <sin...@gm... <mailto:sin...@gm...>> > Date: Fri, Apr 26, 2013 at 10:14 PM > Subject: Re: no sample when profiling ARM Cortex-A9 with Linux kernel 3.3 > To: Koteswararao Nelakurthi <kne...@mv... <mailto:kne...@mv...>> > > > Hai,Koteswararao > > Thanks for for quick reply. > > Here is my profiling procedure (opcontrol: oprofile 0.9.7 compiled on Apr 26 2013 08:47:51): > > [root]$ rm -rf /var/lib/oprofile/ > (0)-(linaro)-[Fri Apr 26][22:03:05]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ rm -rf ~/.oprofile/ > (0)-(linaro)-[Fri Apr 26][22:03:13]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ opcontrol --init > (0)-(linaro)-[Fri Apr 26][22:03:29]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux The '--separate=all' option categorizes your samples by kernel, library, thread, and CPU. The 'thread' and 'cpu' categorization is rarely needed and just leads to confusion when trying to generate reports. Use '--separate=lib,kernel' instead. CPU_CYCLES:1000 is a very high sampling rate, which is undoubtedly why you get the "WARNING! The OProfile kernel driver reports sample buffer overflows" message. I recommend a count of 100000 (or maybe even higher) versus 1000. > (0)-(linaro)-[Fri Apr 26][22:04:20]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ opcontrol --start --image=../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode For starters, don't use the '--image' option. Please revert that with 'opcontrol --image=all' and try again. -Maynard > Using 2.6+ OProfile kernel interface. > Using log file /var/lib/oprofile/samples/oprofiled.log > Daemon started. > Profiler running. > (0)-(linaro)-[Fri Apr 26][22:05:25]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ time ./../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode -b input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_ %03d > saving output_base_4CIF_96bps_000.ppm > saving output_base_4CIF_96bps_001.ppm > saving output_base_4CIF_96bps_002.ppm > saving output_base_4CIF_96bps_003.ppm > saving output_base_4CIF_96bps_004.ppm > saving output_base_4CIF_96bps_005.ppm > saving output_base_4CIF_96bps_006.ppm > saving output_base_4CIF_96bps_007.ppm > saving output_base_4CIF_96bps_008.ppm > > real 0m1.593s > user 0m1.490s > sys 0m0.100s > (0)-(linaro)-[Fri Apr 26][22:05:54]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ opcontrol --dump > (0)-(linaro)-[Fri Apr 26][22:06:06]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > [root]$ opreport -l ../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode > WARNING! The OProfile kernel driver reports sample buffer overflows. > Such overflows can result in incorrect sample attribution, invalid sample > files and other symptoms. See the oprofiled.log for details. > You should adjust your sampling frequency to eliminate (or at least minimize) > these overflows. > error: no sample files found: profile specification too strict ? > > ****************************************** > I review the dmesg log for something related with the pmu: > >> dmesg | grep PMU > hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available >> dmesg | grep pmu > registering platform device 'arm-pmu' id 0 > > > > > On Fri, Apr 26, 2013 at 9:52 PM, Koteswararao Nelakurthi <kne...@mv... <mailto:kne...@mv...>> wrote: > > >>opcontrol --start --image=<application name> > Provide binary application name . > ex. opcontrol --start --image=array > > Regards > koteswararao > > > On Fri, Apr 26, 2013 at 7:17 PM, Koteswararao Nelakurthi <kne...@mv... <mailto:kne...@mv...>> wrote: > > Dear RocChen, > > I hope i understood your situation.From the log your showed > in previous mail, your are successfully updated the oprofile > userland tool. > Coming to profiling of applications, you need do it as below > > rm -rf /var/lib/oprofile/ > rm -rf /root/.oprofile > > opcontrol --start --image=<application name> > > gcc -g <applicationname> -o <binary application name> > ex: gcc -g array.c -o array > > ./applicationame > ex. ./array > > opcontrol --dump > > opreport > > array is sample application which is simply doing some multiplication etc. > you can use any application that will put load over CPU so that i can use > H/W counter to count the samples. > > Light Load application will not generate Events and CPU can't use much > of it's time to it and hence samples might not be generated. > > > Regards > koteswararao > > > |
From: RocChen <sin...@gm...> - 2013-04-27 08:45:18
|
Thank you for your enthusiastic guidance, sir: I could get nice profiling results with the command list. (but with another issue I can not understand, described below) Command List: > rm -rf /var/lib/oprofile > rm -rf /root/.oprofile > opcontrol --init > opcontrol --no-vmlinux > opcontrol --setup --event=CPU_CYCLES:10000 --separate=lib,kernel > opcontrol --start --image=all > ./array > ./../mpeg2dec/oprofile_results/mpeg2dec -b ../mpeg2dec/input_base/input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_%03d > opcontrol --dump > opreport -l array > opreport -l ./../mpeg2dec/oprofile_results/mpeg2dec Nice Results: [root]$ opreport -l array Using /var/lib/oprofile/samples/ for samples directory. warning: /no-vmlinux could not be found. CPU: ARM Cortex-A9, speed 1998 MHz (estimated) Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 samples % image name symbol name 70547 95.8858 array slow_multiply 1181 1.6052 array fast_multiply 983 1.3361 array main 828 1.1254 no-vmlinux /no-vmlinux 29 0.0394 ld-2.13.so /lib/arm-linux-gnueabi/ld-2.13.so 6 0.0082 libc-2.13.so /lib/arm-linux-gnueabi/ libc-2.13.so [root]$ opreport -l mpeg2decode Using /var/lib/oprofile/samples/ for samples directory. warning: /no-vmlinux could not be found. CPU: ARM Cortex-A9, speed 1998 MHz (estimated) Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 samples % image name symbol name 23899 16.9694 mpeg2decode conv420to422 23648 16.7912 mpeg2decode store_ppm_tga 16695 11.8542 mpeg2decode conv422to444 16072 11.4119 mpeg2decode Decode_Picture 15934 11.3139 mpeg2decode Fast_IDCT 15133 10.7451 no-vmlinux /no-vmlinux 14614 10.3766 mpeg2decode putbyte 9260 6.5750 mpeg2decode form_component_prediction 1631 1.1581 mpeg2decode Flush_Buffer 825 0.5858 mpeg2decode Decode_MPEG2_Intra_Block 481 0.3415 mpeg2decode form_prediction.constprop.0 415 0.2947 mpeg2decode Decode_MPEG2_Non_Intra_Block 304 0.2159 mpeg2decode Get_Bits 200 0.1420 mpeg2decode Show_Bits 195 0.1385 mpeg2decode macroblock_modes ........ (*) However, there is an issue that I can hardly understand: after I repeated the commands list above several times (with the same event and sample rate, just exactly the same command sequences), it may give the different results, the total sample numbers are only several tens and no samples for user application functions. In my thought, the profiling shoud be at least similar to above nice results. Bad results: [root]$ opreport -l array Using /var/lib/oprofile/samples/ for samples directory. warning: /no-vmlinux could not be found. CPU: ARM Cortex-A9, speed 1998 MHz (estimated) Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 samples % image name symbol name 63 92.6471 no-vmlinux /no-vmlinux 5 7.3529 libc-2.13.so /lib/arm-linux-gnueabi/ libc-2.13.so (0)-(linaro-chenp)-[Sat Apr 27][15:06:36]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/workspace] [root]$ opreport -l mpeg2decode Using /var/lib/oprofile/samples/ for samples directory. warning: /no-vmlinux could not be found. CPU: ARM Cortex-A9, speed 1998 MHz (estimated) Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 samples % image name symbol name 69 95.8333 no-vmlinux /no-vmlinux 3 4.1667 libc-2.13.so /lib/arm-linux-gnueabi/ libc-2.13.so Besides, after this certain time, all following profiling with oprofile will give such kind of oprofile results. I can get the above nice profiling results again only when I reboot the system. I conducted dozen times of experiments. The repeat number of the above command sequence after which the results turn to the 'bad' kind (only tens of sample of kernel) is not regular. It just suddenly becomes such a situation after seval times of profiling. Hope I describe the problem clearly Regards On Sat, Apr 27, 2013 at 12:07 AM, Maynard Johnson <may...@us...>wrote: > On 04/26/2013 09:25 AM, RocChen wrote: > > > > Very sorry for forgetting cc to the maillist~ > > > > > > ---------- Forwarded message ---------- > > From: *RocChen* <sin...@gm... <mailto:sin...@gm...>> > > Date: Fri, Apr 26, 2013 at 10:14 PM > > Subject: Re: no sample when profiling ARM Cortex-A9 with Linux kernel 3.3 > > To: Koteswararao Nelakurthi <kne...@mv... <mailto: > kne...@mv...>> > > > > > > Hai,Koteswararao > > > > Thanks for for quick reply. > > > > Here is my profiling procedure (opcontrol: oprofile 0.9.7 compiled on > Apr 26 2013 08:47:51): > > > > [root]$ rm -rf /var/lib/oprofile/ > > (0)-(linaro)-[Fri Apr > 26][22:03:05]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ rm -rf ~/.oprofile/ > > (0)-(linaro)-[Fri Apr > 26][22:03:13]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ opcontrol --init > > (0)-(linaro)-[Fri Apr > 26][22:03:29]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ opcontrol --setup --event=CPU_CYCLES:1000 --separate=all > --no-vmlinux > > The '--separate=all' option categorizes your samples by kernel, library, > thread, and CPU. The 'thread' and 'cpu' categorization is rarely needed > and just leads to confusion when trying to generate reports. Use > '--separate=lib,kernel' instead. > > CPU_CYCLES:1000 is a very high sampling rate, which is undoubtedly why you > get the "WARNING! The OProfile kernel driver reports sample buffer > overflows" message. I recommend a count of 100000 (or maybe even higher) > versus 1000. > > > (0)-(linaro)-[Fri Apr > 26][22:04:20]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ opcontrol --start > --image=../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode > > For starters, don't use the '--image' option. Please revert that with > 'opcontrol --image=all' and try again. > > -Maynard > > Using 2.6+ OProfile kernel interface. > > Using log file /var/lib/oprofile/samples/oprofiled.log > > Daemon started. > > Profiler running. > > (0)-(linaro)-[Fri Apr > 26][22:05:25]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ time ./../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode -b > input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_ > %03d > > saving output_base_4CIF_96bps_000.ppm > > saving output_base_4CIF_96bps_001.ppm > > saving output_base_4CIF_96bps_002.ppm > > saving output_base_4CIF_96bps_003.ppm > > saving output_base_4CIF_96bps_004.ppm > > saving output_base_4CIF_96bps_005.ppm > > saving output_base_4CIF_96bps_006.ppm > > saving output_base_4CIF_96bps_007.ppm > > saving output_base_4CIF_96bps_008.ppm > > > > real 0m1.593s > > user 0m1.490s > > sys 0m0.100s > > (0)-(linaro)-[Fri Apr > 26][22:05:54]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ opcontrol --dump > > (0)-(linaro)-[Fri Apr > 26][22:06:06]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe > > g2dec/oprofile_results] > > [root]$ opreport -l ../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode > > WARNING! The OProfile kernel driver reports sample buffer overflows. > > Such overflows can result in incorrect sample attribution, invalid sample > > files and other symptoms. See the oprofiled.log for details. > > You should adjust your sampling frequency to eliminate (or at least > minimize) > > these overflows. > > error: no sample files found: profile specification too strict ? > > > > ****************************************** > > I review the dmesg log for something related with the pmu: > > > >> dmesg | grep PMU > > hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters > available > >> dmesg | grep pmu > > registering platform device 'arm-pmu' id 0 > > > > > > > > > > On Fri, Apr 26, 2013 at 9:52 PM, Koteswararao Nelakurthi < > kne...@mv... <mailto:kne...@mv...>> wrote: > > > > >>opcontrol --start --image=<application name> > > Provide binary application name . > > ex. opcontrol --start --image=array > > > > Regards > > koteswararao > > > > > > On Fri, Apr 26, 2013 at 7:17 PM, Koteswararao Nelakurthi < > kne...@mv... <mailto:kne...@mv...>> wrote: > > > > Dear RocChen, > > > > I hope i understood your situation.From the log your showed > > in previous mail, your are successfully updated the oprofile > > userland tool. > > Coming to profiling of applications, you need do it as below > > > > rm -rf /var/lib/oprofile/ > > rm -rf /root/.oprofile > > > > opcontrol --start --image=<application name> > > > > gcc -g <applicationname> -o <binary application name> > > ex: gcc -g array.c -o array > > > > ./applicationame > > ex. ./array > > > > opcontrol --dump > > > > opreport > > > > array is sample application which is simply doing some > multiplication etc. > > you can use any application that will put load over CPU so that > i can use > > H/W counter to count the samples. > > > > Light Load application will not generate Events and CPU can't > use much > > of it's time to it and hence samples might not be generated. > > > > > > Regards > > koteswararao > > > > > > > > |
From: Maynard J. <may...@us...> - 2013-04-29 14:09:01
|
On 04/27/2013 03:44 AM, RocChen wrote: > Thank you for your enthusiastic guidance, sir: > > I could get nice profiling results with the command list. (but with another issue I can not understand, described below) > > Command List: >> rm -rf /var/lib/oprofile >> rm -rf /root/.oprofile >> opcontrol --init >> opcontrol --no-vmlinux >> opcontrol --setup --event=CPU_CYCLES:10000 --separate=lib,kernel >> opcontrol --start --image=all >> ./array >> ./../mpeg2dec/oprofile_results/mpeg2dec -b ../mpeg2dec/input_base/input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_%03d >> opcontrol --dump >> opreport -l array >> opreport -l ./../mpeg2dec/oprofile_results/mpeg2dec > > Nice Results: > [root]$ opreport -l array > Using /var/lib/oprofile/samples/ for samples directory. > warning: /no-vmlinux could not be found. > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > samples % image name symbol name > 70547 95.8858 array slow_multiply > 1181 1.6052 array fast_multiply > 983 1.3361 array main > 828 1.1254 no-vmlinux /no-vmlinux > 29 0.0394 ld-2.13.so <http://ld-2.13.so> /lib/arm-linux-gnueabi/ld-2.13.so <http://ld-2.13.so> > 6 0.0082 libc-2.13.so <http://libc-2.13.so> /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> > [root]$ opreport -l mpeg2decode > Using /var/lib/oprofile/samples/ for samples directory. > warning: /no-vmlinux could not be found. > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > samples % image name symbol name > 23899 16.9694 mpeg2decode conv420to422 > 23648 16.7912 mpeg2decode store_ppm_tga > 16695 11.8542 mpeg2decode conv422to444 > 16072 11.4119 mpeg2decode Decode_Picture > 15934 11.3139 mpeg2decode Fast_IDCT > 15133 10.7451 no-vmlinux /no-vmlinux > 14614 10.3766 mpeg2decode putbyte > 9260 6.5750 mpeg2decode form_component_prediction > 1631 1.1581 mpeg2decode Flush_Buffer > 825 0.5858 mpeg2decode Decode_MPEG2_Intra_Block > 481 0.3415 mpeg2decode form_prediction.constprop.0 > 415 0.2947 mpeg2decode Decode_MPEG2_Non_Intra_Block > 304 0.2159 mpeg2decode Get_Bits > 200 0.1420 mpeg2decode Show_Bits > 195 0.1385 mpeg2decode macroblock_modes > ........ > > (*) However, there is an issue that I can hardly understand: after I repeated the commands list above several times (with the same event and sample rate, just exactly the same command sequences), it may give the different results, the total sample numbers are only several tens and no samples for user application functions. >From the sequence of commands listed above, I don't see that you ever issue any commands to stop, shutdown or deinit oprofile. If you simply leave oprofile running and issue another opcontrol --start' command, that should basically be a NOP, so I'm not aware of any oprofile userspace issues with what you're doing. Have you tried any of the '--stop', '--shutdown', or '--deinit' options between profiling runs? -Maynard > > In my thought, the profiling shoud be at least similar to above nice results. > > Bad results: > [root]$ opreport -l array > Using /var/lib/oprofile/samples/ for samples directory. > warning: /no-vmlinux could not be found. > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > samples % image name symbol name > 63 92.6471 no-vmlinux /no-vmlinux > 5 7.3529 libc-2.13.so <http://libc-2.13.so> /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> > (0)-(linaro-chenp)-[Sat Apr 27][15:06:36]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/workspace] > [root]$ opreport -l mpeg2decode > Using /var/lib/oprofile/samples/ for samples directory. > warning: /no-vmlinux could not be found. > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 10000 > samples % image name symbol name > 69 95.8333 no-vmlinux /no-vmlinux > 3 4.1667 libc-2.13.so <http://libc-2.13.so> /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> > > Besides, after this certain time, all following profiling with oprofile will give such kind of oprofile results. I can get the above nice profiling results again only when I reboot the system. > I conducted dozen times of experiments. The repeat number of the above command sequence after which the results turn to the 'bad' kind (only tens of sample of kernel) is not regular. It just suddenly becomes such a situation after seval times of profiling. > > Hope I describe the problem clearly > > Regards > > > On Sat, Apr 27, 2013 at 12:07 AM, Maynard Johnson <may...@us... <mailto:may...@us...>> wrote: > > On 04/26/2013 09:25 AM, RocChen wrote: > > > > Very sorry for forgetting cc to the maillist~ > > > > > > ---------- Forwarded message ---------- > > From: *RocChen* <sin...@gm... <mailto:sin...@gm...> <mailto:sin...@gm... <mailto:sin...@gm...>>> > > Date: Fri, Apr 26, 2013 at 10:14 PM > > Subject: Re: no sample when profiling ARM Cortex-A9 with Linux kernel 3.3 > > To: Koteswararao Nelakurthi <kne...@mv... <mailto:kne...@mv...> <mailto:kne...@mv... <mailto:kne...@mv...>>> > > > > > > Hai,Koteswararao > > > > Thanks for for quick reply. > > > > Here is my profiling procedure (opcontrol: oprofile 0.9.7 compiled on Apr 26 2013 08:47:51): > > > > [root]$ rm -rf /var/lib/oprofile/ > > (0)-(linaro)-[Fri Apr 26][22:03:05]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ rm -rf ~/.oprofile/ > > (0)-(linaro)-[Fri Apr 26][22:03:13]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ opcontrol --init > > (0)-(linaro)-[Fri Apr 26][22:03:29]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ opcontrol --setup --event=CPU_CYCLES:1000 --separate=all --no-vmlinux > > The '--separate=all' option categorizes your samples by kernel, library, thread, and CPU. The 'thread' and 'cpu' categorization is rarely needed and just leads to confusion when trying to generate reports. Use '--separate=lib,kernel' instead. > > CPU_CYCLES:1000 is a very high sampling rate, which is undoubtedly why you get the "WARNING! The OProfile kernel driver reports sample buffer overflows" message. I recommend a count of 100000 (or maybe even higher) versus 1000. > > > (0)-(linaro)-[Fri Apr 26][22:04:20]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ opcontrol --start --image=../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode > > For starters, don't use the '--image' option. Please revert that with 'opcontrol --image=all' and try again. > > -Maynard > > Using 2.6+ OProfile kernel interface. > > Using log file /var/lib/oprofile/samples/oprofiled.log > > Daemon started. > > Profiler running. > > (0)-(linaro)-[Fri Apr 26][22:05:25]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ time ./../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode -b input_base_4CIF_96bps.mpg -o3 output_base_4CIF_96bps_ %03d > > saving output_base_4CIF_96bps_000.ppm > > saving output_base_4CIF_96bps_001.ppm > > saving output_base_4CIF_96bps_002.ppm > > saving output_base_4CIF_96bps_003.ppm > > saving output_base_4CIF_96bps_004.ppm > > saving output_base_4CIF_96bps_005.ppm > > saving output_base_4CIF_96bps_006.ppm > > saving output_base_4CIF_96bps_007.ppm > > saving output_base_4CIF_96bps_008.ppm > > > > real 0m1.593s > > user 0m1.490s > > sys 0m0.100s > > (0)-(linaro)-[Fri Apr 26][22:05:54]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ opcontrol --dump > > (0)-(linaro)-[Fri Apr 26][22:06:06]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/mpe g2dec/oprofile_results] > > [root]$ opreport -l ../mpeg2-oprofiling/src/mpeg2dec/mpeg2decode > > WARNING! The OProfile kernel driver reports sample buffer overflows. > > Such overflows can result in incorrect sample attribution, invalid sample > > files and other symptoms. See the oprofiled.log for details. > > You should adjust your sampling frequency to eliminate (or at least minimize) > > these overflows. > > error: no sample files found: profile specification too strict ? > > > > ****************************************** > > I review the dmesg log for something related with the pmu: > > > >> dmesg | grep PMU > > hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available > >> dmesg | grep pmu > > registering platform device 'arm-pmu' id 0 > > > > > > > > > > On Fri, Apr 26, 2013 at 9:52 PM, Koteswararao Nelakurthi <kne...@mv... <mailto:kne...@mv...> <mailto:kne...@mv... <mailto:kne...@mv...>>> wrote: > > > > >>opcontrol --start --image=<application name> > > Provide binary application name . > > ex. opcontrol --start --image=array > > > > Regards > > koteswararao > > > > > > On Fri, Apr 26, 2013 at 7:17 PM, Koteswararao Nelakurthi <kne...@mv... <mailto:kne...@mv...> <mailto:kne...@mv... <mailto:kne...@mv...>>> wrote: > > > > Dear RocChen, > > > > I hope i understood your situation.From the log your showed > > in previous mail, your are successfully updated the oprofile > > userland tool. > > Coming to profiling of applications, you need do it as below > > > > rm -rf /var/lib/oprofile/ > > rm -rf /root/.oprofile > > > > opcontrol --start --image=<application name> > > > > gcc -g <applicationname> -o <binary application name> > > ex: gcc -g array.c -o array > > > > ./applicationame > > ex. ./array > > > > opcontrol --dump > > > > opreport > > > > array is sample application which is simply doing some multiplication etc. > > you can use any application that will put load over CPU so that i can use > > H/W counter to count the samples. > > > > Light Load application will not generate Events and CPU can't use much > > of it's time to it and hence samples might not be generated. > > > > > > Regards > > koteswararao > > > > > > > > |
From: 张伟 <zha...@12...> - 2013-05-03 04:38:14
|
Hi, all I use oprofile 0.9.5 and have a xenoprofile patch. I meet this problem when opreoprt - opreport error: No sample file found: try running opcontrol --dump or specify a session containing sample files I do not know why this happens. Any replies are appreciated. [root@sunny ~]# opcontrol --version opcontrol: oprofile 0.9.5 compiled on May 1 2013 02:17:56 [root@sunny ~]# uname -a Linux sunny 3.7.0 #2 SMP Wed May 1 21:52:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux [root@sunny ~]# xm info host : sunny release : 3.7.0 version : #2 SMP Wed May 1 21:52:06 EDT 2013 machine : x86_64 nr_cpus : 2 nr_nodes : 1 cores_per_socket : 2 threads_per_core : 1 cpu_mhz : 2660 hw_caps : bfebfbff:20100800:00000000:00000940:0000e3fd:00000000:00000001:00000000 virt_caps : hvm hvm_directio total_memory : 3965 free_memory : 128 free_cpus : 0 xen_major : 4 xen_minor : 1 xen_extra : .2 xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 xen_scheduler : credit xen_pagesize : 4096 platform_params : virt_start=0xffff800000000000 xen_changeset : unavailable xen_commandline : dom_mem=1024M loglvl=all guest_loglvl=all cc_compiler : gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) cc_compile_by : root cc_compile_domain : cc_compile_date : Tue Apr 30 17:47:04 EDT 2013 xend_config_format : 4 [root@sunny ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m [root@sunny ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz stepping : 11 microcode : 0xb3 cpu MHz : 2660.048 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni est ssse3 cx16 hypervisor lahf_lm dtherm bogomips : 5320.09 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz stepping : 11 microcode : 0xb3 cpu MHz : 2660.048 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni est ssse3 cx16 hypervisor lahf_lm dtherm bogomips : 5320.09 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: [root@sunny ~]# rm -rf /var/lib/oprofile/ [root@sunny ~]# rm -rf ~/.oprofile [root@sunny ~]# opcontrol --init [root@sunny ~]# opcontrol --setup --event=CPU_CLK_UNHALTED:10000:0:1:1 --separat e=lib,kernel --no-vmlinux [root@sunny ~]# opcontrol --start --image=all Using 2.6+ OProfile kernel interface. Using log file /var/lib/oprofile/samples/oprofiled.log Daemon started. Profiler running. [root@sunny ~]# ./caculate [root@sunny ~]# opcontrol --dump You have new mail in /var/spool/mail/root [root@sunny ~]# opreport -l opreport error: No sample file found: try running opcontrol --dump or specify a session containing sample files [root@sunny ~]# dmesg|grep pmu [root@sunny ~]# dmesg|grep PMU Performance Events: unsupported p6 CPU model 15 no PMU driver, software events o nly. caculate.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <math.h> volatile double x; int main (int argc, char *argv[]) { int i; for (i = 0;i < 16000000; i++){ x = 1000.0; int r = i & 0xf; if (r <= 8){ x = pow(x,1.234); } else if(r <= 11){ x = sqrt(x); } else { x = 1.0/x; } } } I do not know why I can not the samples. [root@sunny ~]# tail -n 20 /var/lib/oprofile/samples/oprofiled.log Nr. lost kernel samples: 0 Nr. incomplete code structs: 0 Nr. samples lost due to sample file open failure: 0 Nr. samples lost due to no permanent mapping: 0 Nr. event lost due to buffer overflow: 0 Nr. samples lost due to no mapping: 0 Nr. backtraces skipped due to no file mapping: 0 Nr. samples lost due to no mm: 0 ---- Statistics for cpu : 1 Nr. samples lost cpu buffer overflow: 0 Nr. samples received: 0 Nr. backtrace aborted: 0 Nr. samples lost invalid pc: 0 ---- Statistics for cpu : 0 Nr. samples lost cpu buffer overflow: 0 Nr. samples received: 0 Nr. backtrace aborted: 0 Nr. samples lost invalid pc: 0 |
From: 张伟 <zha...@12...> - 2013-05-03 04:38:14
|
Hi, all I use oprofile 0.9.5 and have a xenoprofile patch. I meet this problem when opreoprt - opreport error: No sample file found: try running opcontrol --dump or specify a session containing sample files I do not know why this happens. Any replies are appreciated. [root@sunny ~]# opcontrol --version opcontrol: oprofile 0.9.5 compiled on May 1 2013 02:17:56 [root@sunny ~]# uname -a Linux sunny 3.7.0 #2 SMP Wed May 1 21:52:06 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux [root@sunny ~]# xm info host : sunny release : 3.7.0 version : #2 SMP Wed May 1 21:52:06 EDT 2013 machine : x86_64 nr_cpus : 2 nr_nodes : 1 cores_per_socket : 2 threads_per_core : 1 cpu_mhz : 2660 hw_caps : bfebfbff:20100800:00000000:00000940:0000e3fd:00000000:00000001:00000000 virt_caps : hvm hvm_directio total_memory : 3965 free_memory : 128 free_cpus : 0 xen_major : 4 xen_minor : 1 xen_extra : .2 xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 xen_scheduler : credit xen_pagesize : 4096 platform_params : virt_start=0xffff800000000000 xen_changeset : unavailable xen_commandline : dom_mem=1024M loglvl=all guest_loglvl=all cc_compiler : gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) cc_compile_by : root cc_compile_domain : cc_compile_date : Tue Apr 30 17:47:04 EDT 2013 xend_config_format : 4 [root@sunny ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m [root@sunny ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz stepping : 11 microcode : 0xb3 cpu MHz : 2660.048 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni est ssse3 cx16 hypervisor lahf_lm dtherm bogomips : 5320.09 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Duo CPU E6750 @ 2.66GHz stepping : 11 microcode : 0xb3 cpu MHz : 2660.048 cache size : 4096 KB fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni est ssse3 cx16 hypervisor lahf_lm dtherm bogomips : 5320.09 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: [root@sunny ~]# rm -rf /var/lib/oprofile/ [root@sunny ~]# rm -rf ~/.oprofile [root@sunny ~]# opcontrol --init [root@sunny ~]# opcontrol --setup --event=CPU_CLK_UNHALTED:10000:0:1:1 --separat e=lib,kernel --no-vmlinux [root@sunny ~]# opcontrol --start --image=all Using 2.6+ OProfile kernel interface. Using log file /var/lib/oprofile/samples/oprofiled.log Daemon started. Profiler running. [root@sunny ~]# ./caculate [root@sunny ~]# opcontrol --dump You have new mail in /var/spool/mail/root [root@sunny ~]# opreport -l opreport error: No sample file found: try running opcontrol --dump or specify a session containing sample files [root@sunny ~]# dmesg|grep pmu [root@sunny ~]# dmesg|grep PMU Performance Events: unsupported p6 CPU model 15 no PMU driver, software events o nly. caculate.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <math.h> volatile double x; int main (int argc, char *argv[]) { int i; for (i = 0;i < 16000000; i++){ x = 1000.0; int r = i & 0xf; if (r <= 8){ x = pow(x,1.234); } else if(r <= 11){ x = sqrt(x); } else { x = 1.0/x; } } } I do not know why I can not the samples. [root@sunny ~]# tail -n 20 /var/lib/oprofile/samples/oprofiled.log Nr. lost kernel samples: 0 Nr. incomplete code structs: 0 Nr. samples lost due to sample file open failure: 0 Nr. samples lost due to no permanent mapping: 0 Nr. event lost due to buffer overflow: 0 Nr. samples lost due to no mapping: 0 Nr. backtraces skipped due to no file mapping: 0 Nr. samples lost due to no mm: 0 ---- Statistics for cpu : 1 Nr. samples lost cpu buffer overflow: 0 Nr. samples received: 0 Nr. backtrace aborted: 0 Nr. samples lost invalid pc: 0 ---- Statistics for cpu : 0 Nr. samples lost cpu buffer overflow: 0 Nr. samples received: 0 Nr. backtrace aborted: 0 Nr. samples lost invalid pc: 0 |
From: RocChen <sin...@gm...> - 2013-05-03 01:35:04
|
Yes, I execute a 'opcontrol --deinit' after every iteration of the command sequence. Above all, I must thank to the warmhearted people here for helping me to get the expected profiling results with oprofile. Currently, the only problem for me seems to be that it sometimes gives the profiling results with thousands or more samples for the user application functions, libaries and the no-vmlinux (I call it 'nice results'), but some other times it only gives several tens of samples totally ('bad results'). Besides, it seems to have no issue with the '--image' parameter for this problem. The profiling results are sometimes 'nice' or somtimes 'bad' or even sometimes reporting no samples no matter I set the parameter '--image=all' or '--image=<application name>' or just leave it out. Same opcontrol command sequence (the sample event may be different on different CPUs, for example, I use the 'global_power_events:6000' event on the i386/p4-ht CPU) and applications on my PCs (x86 platform) work very well and always give the nice profiling results. On Mon, Apr 29, 2013 at 10:08 PM, Maynard Johnson <may...@us...>wrote: > On 04/27/2013 03:44 AM, RocChen wrote: > > Thank you for your enthusiastic guidance, sir: > > > > I could get nice profiling results with the command list. (but with > another issue I can not understand, described below) > > > > Command List: > >> rm -rf /var/lib/oprofile > >> rm -rf /root/.oprofile > >> opcontrol --init > >> opcontrol --no-vmlinux > >> opcontrol --setup --event=CPU_CYCLES:10000 --separate=lib,kernel > >> opcontrol --start --image=all > >> ./array > >> ./../mpeg2dec/oprofile_results/mpeg2dec -b > ../mpeg2dec/input_base/input_base_4CIF_96bps.mpg -o3 > output_base_4CIF_96bps_%03d > >> opcontrol --dump > >> opreport -l array > >> opreport -l ./../mpeg2dec/oprofile_results/mpeg2dec > > > > Nice Results: > > [root]$ opreport -l array > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit > mask) count 10000 > > samples % image name symbol name > > 70547 95.8858 array slow_multiply > > 1181 1.6052 array fast_multiply > > 983 1.3361 array main > > 828 1.1254 no-vmlinux /no-vmlinux > > 29 0.0394 ld-2.13.so <http://ld-2.13.so> > /lib/arm-linux-gnueabi/ld-2.13.so <http://ld-2.13.so> > > 6 0.0082 libc-2.13.so <http://libc-2.13.so> > /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> > > [root]$ opreport -l mpeg2decode > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit > mask) count 10000 > > samples % image name symbol name > > 23899 16.9694 mpeg2decode conv420to422 > > 23648 16.7912 mpeg2decode store_ppm_tga > > 16695 11.8542 mpeg2decode conv422to444 > > 16072 11.4119 mpeg2decode Decode_Picture > > 15934 11.3139 mpeg2decode Fast_IDCT > > 15133 10.7451 no-vmlinux /no-vmlinux > > 14614 10.3766 mpeg2decode putbyte > > 9260 6.5750 mpeg2decode form_component_prediction > > 1631 1.1581 mpeg2decode Flush_Buffer > > 825 0.5858 mpeg2decode Decode_MPEG2_Intra_Block > > 481 0.3415 mpeg2decode form_prediction.constprop.0 > > 415 0.2947 mpeg2decode Decode_MPEG2_Non_Intra_Block > > 304 0.2159 mpeg2decode Get_Bits > > 200 0.1420 mpeg2decode Show_Bits > > 195 0.1385 mpeg2decode macroblock_modes > > ........ > > > > (*) However, there is an issue that I can hardly understand: after I > repeated the commands list above several times (with the same event and > sample rate, just exactly the same command sequences), it may give the > different results, the total sample numbers are only several tens and no > samples for user application functions. > > From the sequence of commands listed above, I don't see that you ever > issue any commands to stop, shutdown or deinit oprofile. If you simply > leave oprofile running and issue another opcontrol --start' command, that > should basically be a NOP, so I'm not aware of any oprofile userspace > issues with what you're doing. Have you tried any of the '--stop', > '--shutdown', or '--deinit' options between profiling runs? > > -Maynard > > > > In my thought, the profiling shoud be at least similar to above nice > results. > > > > Bad results: > > [root]$ opreport -l array > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit > mask) count 10000 > > samples % image name symbol name > > 63 92.6471 no-vmlinux /no-vmlinux > > 5 7.3529 libc-2.13.so <http://libc-2.13.so> > /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> > > (0)-(linaro-chenp)-[Sat Apr > 27][15:06:36]-[.=~/Workspace/Zynq/testbench-zynq/hotcode-profiling/mediabench2_video/workspace] > > [root]$ opreport -l mpeg2decode > > Using /var/lib/oprofile/samples/ for samples directory. > > warning: /no-vmlinux could not be found. > > CPU: ARM Cortex-A9, speed 1998 MHz (estimated) > > Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit > mask) count 10000 > > samples % image name symbol name > > 69 95.8333 no-vmlinux /no-vmlinux > > 3 4.1667 libc-2.13.so <http://libc-2.13.so> > /lib/arm-linux-gnueabi/libc-2.13.so <http://libc-2.13.so> > > > |