On Tue, 26 Jun 2001, Adi Fairbank wrote:

> 
> Is it correct that when the Apache/mod_perl parent process swaps to disk, a
> large part of it (swapped pages) becomes unshared?  Even after the kernel
> restores the pages from swap, do they remain unshared?  So once the parent
> process becomes unshared, new apache children that are spawned only share
> the parent's pages that have never been swapped?
> 
> This is what I've grok'ed from my experiments with top/GTop.
> 
> If this is the case, it would be helpful to prevent the parent process from
> *ever* swapping to disk.
> 
> The Linux kernel has a system call mlockall() which disables all memory
> paging for the current process.  This sounds like exactly the recipe for
> preventing parent process swapping.  It won't affect spawned child
> processes, so shouldn't pose a threat of consuming all physical memory and
> crashing the system.
> 
> I want to play around with this, but I'm not sure where in the mod_perl
> source to call mlockall().  It would need to be before the parent spawns any
> children..  Has anyone tried using Linux's mlockall()/mlock() with mod_perl?

according the manpage:
"Child processes do not inherit page locks across a fork."

so you would need to call it in a child init handler, but:
"Only root processes are allowed to lock pages."


Reply via email to