Thanks for your reply, Eranian About the fine mode, I remember having read in the pfmon documentation that a fine mode range is limited to 4KB, so I'm afraid I cannot use it to monitor my arrays, since they are far larger.
So I'll try playing with the alignment of the data. Juan El mié, 22-04-2009 a las 09:47 +0200, stephane eranian escribió: > Juan, > > Monitoring over a range of code or data addresses is not as flexible > as one would wish. As you realize range restriction is implemented > using the debug registers. The range of addresses is specified using > a bitmask and NOT a length. Therefore there are some strict alignment > constraints. > > You don't want to monitor outside of the range. Thus, libpfm must make > sure the range is covered exactly. To achieve this goal, libpfm may use > more than one pair of debug registers to breakdown the range into small > power of two ranges. But if it does that for one range, it may not have > debug registers left to cover yet another range. That may be what you > are running into. > > Since Itanium2, there is another way of configuring the debug registers > to try and address the alignment issue. It is called: fine mode. This time > you do not use a bitmask to specify the range, you use two pairs of > debug registers: one to designate the start position and one for the end > position. But there are some other constraints (and bugs) which I don't > quite recall. > > I suggest you try playing with the alignment of your functions. > > 2009/4/21 Juan Ángel Lorenzo <jalmailingli...@gmail.com>: > > Hi, > > > > After checking the data range restriction example included with the > > library (mont_rr.c, in the old_interface_ia64_examples directory) I've > > been trying to modify it to cover two different data ranges. The example > > has two arrays already defined: test_data and test_data_fake. I define a > > third one, test_data_fake2, and I get the start and end ranges, as done > > for test_data: > > > > test_data_fake2 = > > (test_data_t*)malloc(sizeof(test_data_t)*TEST_DATA_COUNT); > > > > range_start_fake2 = (unsigned long)test_data_fake2; > > range_end_fake2 = range_start_fake2 + \ > > sizeof(test_data_t)*TEST_DATA_COUNT; > > > > > > Afterwards, I try to use a pair of debug registers to cover this new > > array: > > > > mont_inp.pfp_mont_drange.rr_limits[1].rr_start = range_start_fake2; > > mont_inp.pfp_mont_drange.rr_limits[1].rr_end = range_end_fake2; > > > > but I get an error message when I run the code: "cannot configure > > events: too many data ranges". Using the next pair (rr_limits[2]) I > > don't get any error, but I got the following output: > > > > > > [PMC5(pmc5)=0x200ce08 m=0 e=0 s=0 i=0 thres=0 all=0 es=0xce plm=8 > > umask=0x0 pm=0 ism=0x2 oi=0] MISALIGNED_LOADS_RETIRED > > [PMD5(pmd5)] > > > > [0x6000000000004010-0x6000000000004110): 4 register pair(s) > > start offset: -0x10 end_offset: +0x0 > > > > brp0: db0: 0x6000000000004080 db1: plm=0x8 mask=0x00ffffffffffff80 > > end=0x60000000000040ff > > brp1: db2: 0x6000000000004040 db3: plm=0x8 mask=0x00ffffffffffffc0 > > end=0x600000000000407f > > brp2: db4: 0x6000000000004000 db5: plm=0x8 mask=0x00ffffffffffffc0 > > end=0x600000000000403f > > brp3: db6: 0x6000000000004100 db7: plm=0x8 mask=0x00fffffffffffff0 > > end=0x600000000000410f > > > > [PMC41(pmc41)=0x1e078f6f6f6f6 cfg_dtag0=2 cfg_dtag1=2 cfg_dtag2=2 > > cfg_dtag3=2 ena_dbrp0=1 ena_dbrp1=1 ena_dbrp2=1 ena_dbrp3=1] > > > > data range : [0x6000000000004010-0x6000000000004110): 4 pair of debug > > registers used > > start_offset:-0x10 end_offset:+0x0 > > Fake data range2 : [0x6000000000004230-0x6000000000004330) > > start_offset:-0x0 end_offset:+0x0 > > fake data range: [0x6000000000004120-0x6000000000004220) > > > > So it looks the test_data_fake2 is in the range > > (0x60...4230,0x60...4330), but the debug registers (db0-db7) only show > > coverage from addresses 0x6...4080 to 0x6...410f. > > > > Any hint of what's wrong? Isn't it possible to cover two data ranges at > > the same time in Montecito/Montvale?. Perfmon2 documentation says that > > "Up to 4 ranges can be defined" in Montecito. > > > > Thanks in advance, > > Juan > > > > > > ------------------------------------------------------------------------------ > > Stay on top of everything new and different, both inside and > > around Java (TM) technology - register by April 22, and save > > $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. > > 300 plus technical and hands-on sessions. Register today. > > Use priority code J9JMT32. http://p.sf.net/sfu/p > > _______________________________________________ > > perfmon2-devel mailing list > > perfmon2-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/perfmon2-devel > > ------------------------------------------------------------------------------ Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel