On 09/23/14 12:18, Greg KH wrote: > On Tue, Sep 23, 2014 at 10:57:09AM +0800, Hui Zhu wrote: >> The cause of this issue is when free memroy size is low and a lot of task is >> trying to shrink the memory, the task that is killed by lowmemkiller cannot get >> CPU to exit itself. >> >> Fix this issue with change the scheduling policy to SCHED_FIFO if a task's flag >> is TIF_MEMDIE in lowmemkiller. >> >> Signed-off-by: Hui Zhu <zhuhui@xxxxxxxxxx> >> --- >> drivers/staging/android/lowmemorykiller.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c >> index b545d3d..ca1ffac 100644 >> --- a/drivers/staging/android/lowmemorykiller.c >> +++ b/drivers/staging/android/lowmemorykiller.c >> @@ -129,6 +129,10 @@ static unsigned long lowmem_scan(struct shrinker *s, struct shrink_control *sc) >> >> if (test_tsk_thread_flag(p, TIF_MEMDIE) && >> time_before_eq(jiffies, lowmem_deathpending_timeout)) { >> + struct sched_param param = { .sched_priority = 1 }; >> + >> + if (p->policy == SCHED_NORMAL) >> + sched_setscheduler(p, SCHED_FIFO, ¶m); > > This seems really specific to a specific scheduler pattern now. Isn't > there some other way to resolve this? I tried to let the task that call lowmemkiller sleep some time when it try to kill same task. But it doesn't work. I think the issue is that the free memroy size is too low to make more and more tasks come to call lowmemkiller. Thanks, Hui > > thanks, > > greg k-h > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel