eMake itself does not do any memory management; its just a user application. During a cluster build, its not atypical for large amounts of memory to be be used, especially under the following conditions:
- The eMake machine or the filesystem that eMake writes to is too slow, causing the terminator thread to fall way behind.
- Agents generate results too fast for the eMake machine to process. This is basically the same as an eMake machine that is too slow. Depending on what the build does, there is a possibility that the agents generated output too fast for the eMake process to terminate.
- Use fewer agents
- Use a faster eMake machine
- Check the file system throughput (check NFS/Samba performance), and make sure the eMake machine is fast
- Split up build into smaller pieces
- Add more serialization into the build
- Potentially use --emake-mem-limit (limited success in the past)
- Make sure there are no extra applications running on the eMake machine that will slow down eMake
- Run on a 64-bit operating system