[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070726095948.GB19398@in.ibm.com>
Date: Thu, 26 Jul 2007 15:29:48 +0530
From: ankita@...ibm.com (Ankita Garg)
To: Ingo Molnar <mingo@...e.hu>
Cc: Arjan van de Ven <arjan@...radead.org>, linux@...mer.net,
LKML <linux-kernel@...r.kernel.org>,
RT-Users <linux-rt-users@...r.kernel.org>,
mathieu.desnoyers@...ymtl.ca
Subject: Re: [Question] Hooks for scheduler tracing (CFS)
On Thu, Jul 26, 2007 at 09:53:53AM +0200, Ingo Molnar wrote:
>
> * Ankita Garg <ankita@...ibm.com> wrote:
>
> > > I'd suggest to not put a probe into a preempt-off section - put it
> > > to the beginning and to the end of schedule() to capture
> > > context-switches. _stp_print_flush() is in the systemtap-generated
> > > module, right? Maybe the problem is resolved by changing that
> > > spinlock to use raw_spinlock_t / DEFINE_RAW_SPIN_LOCK.
> >
> > Yes, _stp_print_flush is in the systemtap-generated kprobe module.
> > Placing the probe at the beginning of schedule() also has the same
> > effect. Will try by changing the spinlock to raw_spinlock_t...
>
> could you send us that module source ST generates? Perhaps there are
> preempt_disable() (or local_irq_disable()) calls in it too.
Attaching the generated module as it is huge...
Looks like SystemTap makes use of relayfs for printing the buffer
contents. The _stp_print_flush() (line 269 in the attached module) implemented
in the systemtap library function as calling the following:
static int _stp_relay_write (const void *data, unsigned length)
{
unsigned long flags;
struct rchan_buf *buf;
if (unlikely(length == 0))
return 0;
local_irq_save(flags);
buf = _stp_chan->buf[smp_processor_id()];
if (unlikely(buf->offset + length > _stp_chan->subbuf_size))
length = relay_switch_subbuf(buf, length);
memcpy(buf->data + buf->offset, data, length);
buf->offset += length;
local_irq_restore(flags);
if (unlikely(length == 0))
return -1;
return length;
}
The above does a local_irq_save().
--
Regards,
Ankita Garg (ankita@...ibm.com)
Linux Technology Center
IBM India Systems & Technology Labs,
Bangalore, India
View attachment "trace.c" of type "text/x-csrc" (17612 bytes)
Powered by blists - more mailing lists