lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Fri, 5 Jun 2009 11:36:58 +0100 (BST)
From:	Julian Phillips <julian@...ntumfyre.co.uk>
To:	Robert Hancock <hancockrwd@...il.com>
cc:	linux-kernel@...r.kernel.org
Subject: Re: 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
--
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