[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <22178976.post@talk.nabble.com>
Date: Tue, 24 Feb 2009 01:47:02 -0800 (PST)
From: sidc7 <siddhartha.chhabra@...il.com>
To: linux-kernel@...r.kernel.org
Subject: Re: 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@...r.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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists