lkml.org 
[lkml]   [2009]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Copy on write and page initialization

I figured why it was not breaking, cow_user_page is inlined hence it wont
break there

For the initialization, do you think, instrumenting at __alloc_pages using
jprobes and checking the gfp_flags to have GFP_ZERO will work? I did this,
and I could see a bunch of page initializations

Thanks once again
SC



Nick Piggin wrote:
>
> On Tuesday 24 February 2009 15:50:05 sidc7 wrote:
>> Hi,
>>
>> As far as I understand, Linux uses the COW optimization so parent and
>> child
>> process share the same address space, till one of them writes to it, at
>
> The "address space" is not shared. Ie. the logical memory space is
> separate, but it happens that the actual virtual->physical mappings
> can be shared due to COW, yes.
>
>
>> which point the kernel creates a copy of the page written to. This is
>> done
>> through the function do_wp_page which in turn calls cow_user_page.
>
> Yes.
>
>
>> I created a simple program, where the child and parent process write to a
>> variable differently. I have instrumented the kernel at cow_user_page. On
>> inserting the kprobe module and running the fork program, I do not get a
>> call to cow_user_page. I had several questions:
>> 1. Does this mean that the kernel is not doing COW optimization?
>
> It means it is not breaking COW where you expect.
>
>
>> 2. Is COW enabled by default, if not, how do we turn it on?
>
> It is.
>
>
>> 3. Any other point in the kernel, where cow is done, other than
>> cow_user_page?
>
> If one process exits before the other writes to it, that condition
> will be noticed in do_wp_fault and a copy can be avoided. The kernel
> would still be doing the COW optimisation without ever actually
> making a copy.
>
>
>> Regarding page initialization, if I understand it correctly, the kernel
>> calls get_zeroed_page when it has to allocated a zeroed page, once again
>> in
>> my kernel module, I have probes the kernel at get_zeroed_page, but get no
>> calls, even on running the system for a long time, any other place where
>> the kernel gets zeroed pages to return the applications ?
>
> No, it doesn't look like it calls get_zeroed_page for userspace memory
> allocation. Try alloc_zeroed_user_highpage_movable, alloc_page_vma etc.
>
> --
> 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/
>
>

--
View this message in context: http://www.nabble.com/Copy-on-write-and-page-initialization-tp22175803p22178976.html
Sent from the linux-kernel mailing list archive at Nabble.com.



\
 
 \ /
  Last update: 2009-02-24 10:49    [W:1.877 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site