On 02/03/2010 04:57 AM, Torsten Förtsch wrote: > Well, I tend to disagree. (Fred, Adam please read on.)
Okay. Have you looked at the actual output of test.cgi? Here's an example of these values just on my local machine, for my bash interpreter: [mka...@es-compy ~]$ cat /proc/self/statm 21045 125 107 13 0 65 0 [mka...@es-compy ~]$ cat /proc/self/status | grep Vm VmPeak: 84180 kB VmSize: 84180 kB VmLck: 0 kB VmHWM: 496 kB VmRSS: 496 kB VmData: 176 kB VmStk: 84 kB VmExe: 52 kB VmLib: 1548 kB VmPTE: 48 kB Would you consider that bash is taking up 84MB, or would you consider it's taking up 496KB? I have 2GB in physical RAM and 2GB in swap. So, theoretically, I should only be able to open 48 terminals before I OOM. With 60 terminals open, here's the result of "free": total used free Mem: 1990 1855 134 -/+ buffers/cache: 1140 850 Swap: 1999 212 1787 If I were simply to add up the "Virt" column of the top 15 processes in "top" on my machine, I'd be using somewhere in the vicinity of 20GB of RAM. > So, either the far older statm technique is also wrong or the patch is wrong. I would suspect that if you're using column 0 as the size, then statm is also indeed wrong. > =item * Apache2::SizeLimit->set_max_process_size($size) > > This sets the maximum size of the process, including both shared and > unshared memory. Ahh, but look at the output of both the "shared" and "private" accessors, and they do not add up to VmSize. They add up to RSS. > Perhaps Apache2::SizeLimit::Core should read: > > sub _check_size { > my $class = shift; > > my ($size, $share, $unshared) = $class->_platform_check_size(); > > return ($size, $share, defined $unshared ? $unshared : $size - $share); That would certainly help (because then you would get a more accurate count of the current private RSS), although I'd argue that VmSize is still meaningless. I can imagine few instances where you'd want to know the total size of the address space of a process, even if most of it had never been mapped to an actual memory page. -Max -- http://www.everythingsolved.com/ Competent, Friendly Bugzilla and Perl Services. Everything Else, too.