lkml.org 
[lkml]   [2009]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: next-20090202: task kmemleak:763 blocked for more than 120 seconds.
On Tue, Feb 03, 2009 at 12:48:34PM +0000, Catalin Marinas wrote:
> On Tue, 2009-02-03 at 01:41 +0100, Frederic Weisbecker wrote:
> > Right. BTW, I wonder how it behaves in case of suspend to disk.
> > But changing the state to TASK_INTERRUPTIBLE wouldn't change it in this case since the
> > signals are only sent to userpace threads to freeze them.


I made a mistake here. Only kernel threads in TASK_INTERRUPTIBLE are woken up
while hibernation.
Yes, if you want kmemleak to be freezable, that's the right state.


> > Kernel threads try to freeze by themselves.
> >
> > But for such very long schedule_timeout, will the hibernation wait for kmemleak
> > to wake up and then try_to_freeze() before suspend to disk?
>
> I haven't added anything to kmemleak for this. Does something like below
> look feasible?
>
> --- a/mm/kmemleak.c
> +++ b/mm/kmemleak.c
> @@ -88,6 +88,7 @@
> #include <linux/errno.h>
> #include <linux/uaccess.h>
> #include <linux/string.h>
> +#include <linux/freezer.h>
>
> #include <asm/sections.h>
> #include <asm/processor.h>
> @@ -1070,8 +1071,11 @@ static int kmemleak_scan_thread(void *arg)
>
> mutex_unlock(&scan_mutex);
> /* wait before the next scan */
> - while (timeout && !kthread_should_stop())
> + while (timeout && !kthread_should_stop()) {
> + if (try_to_freeze())
> + break;
> timeout = schedule_timeout_interruptible(timeout);
> + }
> }


That looks good, but you have to set kmemleak thread as freezable before
by calling set_freezable() in the beggining of your thread.

Note that requiring kmemleak to be freezable looks only relevant if it does
some memory allocations (hibernation needs some memory and prefer that there
are not too much parallel memory allocations.)


>
> pr_info("kmemleak: Automatic memory scanning thread ended\n");
>
> Thanks.
>
> --
> Catalin
>


\
 
 \ /
  Last update: 2009-02-03 21:55    [W:0.060 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site