On Mon, Jun 22, 2009 at 1:57 PM, Ingo Molnar<mi...@elte.hu> wrote: >> II/ X86 comments >> >> 1/ Fixed counters on Intel >> >> You cannot simply fall back to generic counters if you cannot find >> a fixed counter. There are model-specific bugs, for instance >> UNHALTED_REFERENCE_CYCLES (0x013c), does not measure the same >> thing on Nehalem when it is used in fixed counter 2 or a generic >> counter. The same is true on Core. > > This could be handled via a model specific quirk, if the erratum is > serious enough.
Better demonstrated with an actual example on a 2.4GHz Quad: 10s noploop $ pfmon -v --us-c -eunhalted_core_cycles,unhalted_reference_cycles,cpu_clk_unhalted:bus -u noploop 10 [FIXED_CTRL(pmc16)=0xaa0 pmi0=1 en0=0x0 pmi1=1 en1=0x2 pmi2=1 en2=0x2] UNHALTED_CORE_CYCLES UNHALTED_REFERENCE_CYCLES [PERFEVTSEL0(pmc0)=0x51013c event_sel=0x3c umask=0x1 os=0 usr=1 en=1 int=1 inv=0 edge=0 cnt_mask=0] CPU_CLK_UNHALTED noploop for 10 seconds 23,833,577,042 UNHALTED_CORE_CYCLES 23,853,100,716 UNHALTED_REFERENCE_CYCLES 2,650,345,853 CPU_CLK_UNHALTED:BUS 0x013c on fixed counter2 = unhalted_reference_cycles 0x013c on generic counter = cpu_clk_unhalted:bus Difference is significant, isn't it? And the question becomes: how do I express that I want the fixed counter version of the event using the current PCL API, given both have the same encoding? > >> You cannot simply look at the event field code to determine >> whether this is an event supported by a fixed counters. You must >> look at the other fields such as edge, invert, cnt-mask. If those >> are present then you have to fall back to using a generic counter >> as fixed counters only support priv level filtering. As indicated >> above, though, programming UNHALTED_REFERENCE_CYCLES on a generic >> counter does not count the same thing, therefore you need to fail >> if filters other than priv levels are present on this event. > > Agreed, we'll fix this. > ------------------------------------------------------------------------------ Are you an open source citizen? Join us for the Open Source Bridge conference! Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250. Need another reason to go? 24-hour hacker lounge. Register today! http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel