lkml.org 
[lkml]   [2009]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: A question about using a private anonymous mmap
On Thu, 4 Jun 2009, Robert Hancock wrote:

> Julian Phillips wrote:
>> I have a program which creates a reasonably large private anonymous map.
>> The program then writes into a few places in the map, but ends up reading
>> from all of them.
>>
>> When I run this program on a system running 2.6.20.7 the process only ever
>> seems to use enough memory to hold the data that has actually been written
>> (well - in units of PAGE_SIZE). When I run the program on a system
>> running 2.6.24.5 then as it reads the map the amount of memory used
>> continues to increase until the complete map has actually been allocated
>> (and since the total size is greater than the physically available RAM
>> causes swapping). Basically I seem to be seeing copy-on-read instead of
>> copy-on-write type behaviour.
>>
>> Is this an expected change, and is there any option I can tweak to get the
>> old behaviour back?
>
> Looks like this was as a result of the ZERO_PAGE removal:
>
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=557ed1fa2620dc119adb86b34c614e152a629a80
>
> The commit comment notes: "Inserting a ZERO_PAGE for anonymous read faults
> appears to be a false optimisation: if an application is performance
> critical, it would not be doing many read faults of new memory, or at least
> it could be expected to write to that memory soon afterwards. If cache or
> memory use is critical, it should not be working with a significant number of
> ZERO_PAGEs anyway (a more compact representation of zeroes should be used)."

That does seem to be the cause, or at least when I revert that commit I
get the same behaviour from 2.6.24.5 as I do from 2.6.20.7.

Thanks.

--
Julian

---
If there is no wind, row.
-- Polish proverb


\
 
 \ /
  Last update: 2009-06-05 12:41    [W:0.091 / U:0.168 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site