Hi,
since several months I have deployed a java application (http://github.com/kermitt2/nerd) using LMDB on a virtual machine with an allocated ramdisk to host the application and the lmdb storage (using tmpfs). The application usual business is to read from LMDB (it's writing only if the databases are to be created).
Until recently everything seemed to work fine, however when we added a new relatively big database the application ended up being killed by the operating system in the effort to free some memory. The more data are processed the more the memory is filled in.
I'm not sure I've understand why we do have this behaviour. Is there a reason? Is there a way to run LMDB on a ramdisk? Any special configuration that could be considered?
Hi, since several months I have deployed a java application (http://github.com/kermitt2/nerd) using LMDB on a virtual machine with an allocated ramdisk to host the application and the lmdb storage (using tmpfs). The application usual business is to read from LMDB (it's writing only if the databases are to be created).
Until recently everything seemed to work fine, however when we added a new relatively big database the application ended up being killed by the operating system in the effort to free some memory. The more data are processed the more the memory is filled in.
The problem seems to be due to the ramdisk itelf:
comparing the same application deployed on a normal disk:
According to http://lmdb.readthedocs.io/en/release/#memory-usage the allocated pages needs to be clean for the SO to be able to claim them.
I'm not sure I've understand why we do have this behaviour. Is there a reason? Is there a way to run LMDB on a ramdisk? Any special configuration that could be considered?
Thank you in advance Luca