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."