Hi,

We have been running tests on Memory management with the latest version of MonetDB on a CentOS installation. The machine has 1TB hard disk and 128 GB RAM space. The swap memory configured is 2GB. 

We were aware that MonetDB completely relies on the OS for Memory Management and is prone to OOM Killer crash and hence we wanted to simulate the crash. Hence we ran hundreds of threads executing various queries and noticed the following pattern of memory handling. 
  1. Initially, RAM was filled. 
  2. Upon RAM overflow, swap memory (2 GB) was used. 
  3. Upon swap overflow, the swap memory got extended and the 1TB memory that was free on the machine was used completely. 
  4. The OOM killer got invoked only when this 1TB memory got filled. 
  5. On consecutive executions, swap memory was started to be used even when RAM had 70GB of memory unused and free (not even used for cache files). 
  6. The /tmp partition was never used. Memory got overfilled only in the current partition. 
These observations led to the following questions about the memory management with CentOS. 
  1. Does MonetDB has no influence on the above behaviour and is it that only the OS is responsible for this?
  2. Will the swap memory be expanded from the committed size by the OS if swap is running out of memory? In our case it expanded from 2GB to 1 TB. Our OS setting of overcommit is 0 (sysctl vm.overcommit_memory = 0)
  3. When will the OOM Killer be invoked usually? Upon Swap fill or upon Hard disk space full?
  4. Why was memory swapped even when there is 70GB free space in RAM? We tried reducing the swappiness to 10 (sysctl vm.swappiness=10), even then memory was swapped with 70 GB free space in RAM. 
  5. Does the OS writes intermediate results to /tmp directory? Or is it that MonetDB is bypassing this?
  6. Is there any other OS configurations that we need to cross check regarding memory management? 

Any help much appreciated. Thanks in advance. 


Regards, 
Vijay.