>> I'm trying to maximize the number of servers I can run on my machine >> without running out of physical RAM. I noticed something strange when >> comparing top and free statistics: >> >> top says each PID associated with a particular server has a RES of >> about 100M. Does that mean each running instance of that server >> reserves 100MB? Since there are 20 of these servers running, this >> seems contradictory to the output from free which indicates less than >> 1GB used -/+ buffers/cache. > > RES does not mean reserved. It means resident. > > "man top" and searhc for RES for more info
OK but from what I can gather the concept is the same which is that RES indicates how much RAM the process is using. >> Is there any way to monitor RAM usage over time to see how close I'm >> getting to using all of my physical RAM? > > Not really if instantaneous values is what you are looking for. > > All tools that purport to display "memory used" and "cpu load" values on > an instantaneous basis basically lie through their teeth, and it's a > fallacy to try and interpret such results to gain anything meaningful. > > It can't be any other way actually - memory usage can change > dramatically 10,000 times a second, and that is precisely what the > computer is designed to do, and to do it fast, and to do it invisibly. Good point. I suppose we would need the Linux memory system to do some kind of built-in self-monitoring. > "using all of my physical RAM" is also a concept that really makes no > sense in any meaningful way. You can't treat it like eg the amount of > water left in a bottle. All of memory is always in use all of the time, > it's always doing *something*. Most of it is under the kernel's control > and is used for caching, and the kernel is free to move things around as > it sees fit. Memory is also shared, you can easily have a situation > where 10 apps each have access to Y megs of RAM and total memory in use > is still only a little bit more than Y Does this explain why I can see 20 processes in top with 100MB resident RAM each and free only indicates 1GB used -/+ buffers/cache? If so, how can I go about setting apache2 MaxClients and other server process limits so as to maximize performance and prevent an OOM condition? > The best you can really do is keep an eye on what free says, and to > graph the trend. Can you recommend an easy way to do that? - Grant

