This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [SCM] systemtap: system-wide probe/trace tool branch, master, updated. release-1.6-594-g12aa5f9
- From: Mark Wielaard <mjw at redhat dot com>
- To: David Smith <dsmith at redhat dot com>
- Cc: systemtap at sourceware dot org, Frank Eigler <fche at redhat dot com>
- Date: Fri, 16 Dec 2011 19:32:55 +0100
- Subject: Re: [SCM] systemtap: system-wide probe/trace tool branch, master, updated. release-1.6-594-g12aa5f9
- References: <20111213223224.10508.qmail@sourceware.org> <1323855764.3567.5.camel@springer.wildebeest.org> <4EE8C696.7000807@redhat.com>
On Wed, Dec 14, 2011 at 09:53:58AM -0600, David Smith wrote:
> On 12/14/2011 03:42 AM, Mark Wielaard wrote:
>
> > On Tue, 2011-12-13 at 22:32 +0000, fche@sourceware.org wrote:
>
> ...
>
> >> entry = (struct __stp_tf_vma_entry *) _stp_kmalloc_gfp(size,
> >> - STP_ALLOC_SLEEP_FLAGS);
> >> + STP_ALLOC_FLAGS);
> >
> > Urgh that hurts. Especially on memory constraint systems having to do
> > non-sleeping allocations. Isn't there any way we can prevent this? Or at
> > least detect that we are using a task_finder that doesn't notify us in
> > user context? I think there are other places that assume the task_finder
> > only notifies us about updates in user context, for example so we can
> > check the build-id. Having a taks_finder that only operates in atomic
> > contexts is pretty limiting.
>
>
> We could postpone the pain a bit by changing the above to:
>
> #ifdef CONFIG_UTRACE
> entry = (struct __stp_tf_vma_entry *) _stp_kmalloc_gfp(size,
> STP_ALLOC_SLEEP_FLAGS);
> #else
> entry = (struct __stp_tf_vma_entry *) _stp_kmalloc_gfp(size,
> STP_ALLOC_FLAGS);
> #endif
>
> This way only systems using the new code use the non-sleepable alloc.
That seems a nice compromise. I pushed that change. Commit efe1470.
Thanks,
Mark