Vivek, On Mon, Sep 03, 2007 at 01:27:54PM -0400, [EMAIL PROTECTED] wrote: > Stephane, > > Thanks a lot for such a prompt reply ! Please see my inlined comments. > > On Monday 03 September 2007 12:28, Stephane Eranian wrote: > > Vivek, > > > > On Mon, Sep 03, 2007 at 11:49:11AM -0400, [EMAIL PROTECTED] wrote: > > > Hi ! > > > > > > I am trying to use perfmon on Itanium 2 server (HP's testdrive td178 > > > machine ). I have a multi-threaded program but each thread can be pinned > > > to a different CPU (total 16 cores here). Each thread is going to monitor > > > its own overflow (i.e. receive its own overflow notification). For > > > configuring this, do i need to set PFM_FL_SYSTEM_WIDE while creating > > > PFM_CONTEXT ? > > > > In system-wide perfmon requires that you create as many contexts and you > > have CPU core to monitor. That each context is loaded onto the right CPU > > core via pfm_load_context(). On IA-64 currently, you are using the v2.0 > > interface which has the PFM_LOAD_CONTEXT command. On this version, perfmon > > will pick the CPU used to mke the PFM_LOAD_CONTEXT call as the CPU to > > monitor. This means you need to ensure that you have pinned the caller > > thread to the right CPU core prior to making the call. Each context needs > > to be created with the PFM_FL_SYSTEM_WIDE flag set. > > > > Setting the PFM_FL_SYSTEM_WIDE flag at the context creation time gives me > the > following error at the time I write to PMCs. > PFM_WRITE_PMCS:: Invalid argument > perfmonctl error PFM_WRITE_PMCS errno 22 > > The flags I am passing with PFM_WRITE_PMCS are : > /* > * indicate we want notification when buffer is full > */ > pc[0].reg_flags |= PFM_REGFL_OVFL_NOTIFY; > /* > * indicate which PMD to include in the sample > */ > pc[0].reg_smpl_pmds[0] = DEAR_REGS_MASK; > > This code works if I remove PFM_FL_SYSTEM_WIDE flag at the time of context > creation. > Oh, I think for this kernel version, there was an explicit check for the PMC.pm bit when running in system wide. You need to use the libpfm PFMLIB_PFP_SYSTEMWIDE on the pfmlib_input_param_t.pfp_flags of pfm_dispatch_events().
This restriction has been removed for current versions, the kernel automatically forces the PMC.pm bit for system-wide contexts. -- -Stephane. _______________________________________________ perfmon mailing list [email protected] http://www.hpl.hp.com/hosted/linux/mail-archives/perfmon/
