Messages in this thread Patch in this message | | | Date | Thu, 25 Aug 2005 21:50:28 -0400 (EDT) | From | Rik van Riel <> | Subject | Re: process creation time increases linearly with shmem |
| |
On Fri, 26 Aug 2005, Nick Piggin wrote:
> > Skipping MAP_SHARED in fork() sounds like a good idea to me... > > Indeed. Linus, can you remember why we haven't done this before?
Where "this" looks something like the patch below, shamelessly merging Nick's and Andy's patches and adding the initialization of retval.
I suspect this may be a measurable win on database servers with a web frontend, where the connections to the database server are set up basically for each individual query, and don't stick around for a long time.
No, I haven't actually tested this patch - but feel free to go wild while I sign off for the night.
Signed-off-by: Rik van Riel <riel@redhat.com>
--- linux-2.6.12/kernel/fork.c.mapshared 2005-08-25 18:40:44.000000000 -0400 +++ linux-2.6.12/kernel/fork.c 2005-08-25 18:47:16.000000000 -0400 @@ -184,7 +184,7 @@ { struct vm_area_struct * mpnt, *tmp, **pprev; struct rb_node **rb_link, *rb_parent; - int retval; + int retval = 0; unsigned long charge; struct mempolicy *pol; @@ -265,7 +265,10 @@ rb_parent = &tmp->vm_rb; mm->map_count++; - retval = copy_page_range(mm, current->mm, tmp); + /* Skip pte copying if page faults can take care of things. */ + if (!file || !(tmp->vm_flags & VM_SHARED) || + is_vm_hugetlb_page(vma)) + retval = copy_page_range(mm, current->mm, tmp); spin_unlock(&mm->page_table_lock); if (tmp->vm_ops && tmp->vm_ops->open) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |