2010-11-16 13:06:58

by Steven J. Magnani

[permalink] [raw]
Subject: [PATCH][V2] nommu: yield CPU while disposing VM

Depending on processor speed, page size, and the amount of memory a process
is allowed to amass, cleanup of a large VM may freeze the system for many
seconds. This can result in a watchdog timeout.

Make sure other tasks receive some service when cleaning up large VMs.

Signed-off-by: Steven J. Magnani <[email protected]>
---
diff -uprN a/mm/nommu.c b/mm/nommu.c
--- a/mm/nommu.c 2010-11-15 07:53:45.000000000 -0600
+++ b/mm/nommu.c 2010-11-15 07:57:13.000000000 -0600
@@ -1668,6 +1668,7 @@ void exit_mmap(struct mm_struct *mm)
mm->mmap = vma->vm_next;
delete_vma_from_mm(vma);
delete_vma(mm, vma);
+ cond_resched();
}

kleave("");


2010-11-23 07:17:23

by KOSAKI Motohiro

[permalink] [raw]
Subject: Re: [PATCH][V2] nommu: yield CPU while disposing VM

> Depending on processor speed, page size, and the amount of memory a process
> is allowed to amass, cleanup of a large VM may freeze the system for many
> seconds. This can result in a watchdog timeout.
>
> Make sure other tasks receive some service when cleaning up large VMs.
>
> Signed-off-by: Steven J. Magnani <[email protected]>
> ---
> diff -uprN a/mm/nommu.c b/mm/nommu.c
> --- a/mm/nommu.c 2010-11-15 07:53:45.000000000 -0600
> +++ b/mm/nommu.c 2010-11-15 07:57:13.000000000 -0600
> @@ -1668,6 +1668,7 @@ void exit_mmap(struct mm_struct *mm)
> mm->mmap = vma->vm_next;
> delete_vma_from_mm(vma);
> delete_vma(mm, vma);
> + cond_resched();
> }
>
> kleave("");
>

Looks good to me.
Reviewed-by: KOSAKI Motohiro <[email protected]>