1. A method for allocating memory among a plurality of computing systems, said method comprising: assigning a free memory threshold to each computing system; dynamically varying at least one free memory threshold for at least one computing system based on a past memory usage of the at least one computing system; periodically monitoring each computing system for memory usage; and in response to said monitoring determining that an amount of free memory for a computing system is below the free memory threshold for the computing system, allocating memory from a free memory pool to the computing system.