Stephane,

On Wed, May 02, 2007 at 03:20:21PM -0700, Stephane Eranian wrote:
> Tony,
> 
> On Wed, May 02, 2007 at 12:31:36PM -0500, Tony Ernst wrote:
> > This patch fixes the default smpl_entries calculation when using the 
> > v2.0 perfmon kernel code.
> > 
> > We originally saw this problem when running pfmon on a 16 cpu system.
> > 
> > % /usr/bin/pfmon --system-wide -t 2 --short-smpl-periods=16000000
> > number of entries in sampling buffer is zero
> > cannot create perfmon context: Invalid argument
> > cannot create perfmon context: Invalid argument
> > cannot create perfmon context: Invalid argument
> > cannot create perfmon context: Invalid argument
> > ...
> > 
> > We found that if we limited the number of cpus by adding --cpu-list=0-6,
> > it worked.  We then discovered that this was related to the locked memory 
> > ulimit.  Setting 'ulimit -l unlimited' allowed it to work on this machine.
> > 
> > Here's the problem.  In pfmon_compute_smpl_entries() (pfmon/pfmon_util.c),
> > it attemps to dynamically calculate the default number of smpl_entries 
> > based on the locked memory limit from getrlimit(RLIMIT_MEMLOCK, ...).
> > But it appears that this was designed with the newer perfmon kernel code
> > in mind, not the v2.0 code (SUSE SLES10) that we are using.  In fact, with 
> > the v2.0 code, locked memory is never used at all, so these calculations 
> > based on locked memory limit are meaningless.   This patch reverts pfmon 
> 
> I found some references to RLIMIT_MEMLOCK, but I think the current code 
> is broken is that it does not seem to update RLIMIT_MEMLOCK.cur when the 
> allocation is successful. This is gone from v2.4 and also the v2.0 
> compatbility layer embedded in it for IA-64.
> 
> I am willing to take your pfmon patch but I would also welcome a kernel 
> patch to correctly manage RLIMIT_MEMLOCK for v2.0.

I'm afraid I don't understand this comment.  You don't want to update 
RLIMIT_MEMLOCK.rlim_cur when you allocate.  rlim_cur is your current 
(soft) limit.  It's not a running total of how much is left.  Did you 
mean mm->locked_vm?  locked_vm is being updated in your latest patchset.

Thanks,
Tony

> 
> Thanks for the patch.
> 
> > --- pfmon/pfmon/pfmon_util.c        2007-05-01 15:00:56.482141136 -0500
> > +++ pfmon/pfmon/pfmon_util.c        2007-05-01 15:04:29.593477171 -0500
> > @@ -1170,6 +1170,12 @@
> >     unsigned long max_entries = 0, orig_smpl_entries = 0;
> >     size_t pfm_avail, memlock_avail, mem_avail, pgsz;
> >  
> > +   if (options.opt_is22 == 0) {
> > +           if (options.smpl_entries == 0)
> > +                   options.smpl_entries = 2048UL;
> > +           return 0;
> > +   }
> > +
> >     pgsz = getpagesize();
> >     pfm_avail = pfmon_get_perfmon_smpl_mem();
> >  
> > _______________________________________________
> > perfmon mailing list
> > [email protected]
> > http://www.hpl.hp.com/hosted/linux/mail-archives/perfmon/
> 
> -- 
> 
> -Stephane

_______________________________________________
perfmon mailing list
[email protected]
http://www.hpl.hp.com/hosted/linux/mail-archives/perfmon/

Reply via email to