3 ms·
I'm not anywhere near being a Java expert but I've seen similar behavior with a non-Hadoop workload. In my case I had several virtual machines hosting Java VMs
by blocke 15y ago
I'm not anywhere near being a Java expert but I've seen similar behavior with a non-Hadoop workload.
In my case I had several virtual machines hosting Java VMs with 2+GB heaps running an app that liked to fork and run external programs for short periods of time. If the entire heapsize was say 3GB and it forked twice Linux would act like it needed 9GB. The Linux overcommit heuristic regularly got things wrong and wanted RAM that it would never actually use. This usually resulted in the JVM failing in new and interesting ways.
The workaround is to allocate a crapload of swap (mainly more than heap size times a guestimate of number of concurrent forks). It will never actually USE the swap but having it there seems keep the overcommit heuristic happy.
Yay for cargo cult server tuning. I've never figured out how to get the kernel to not be so pessimistic and I can't modify the Java code in question so... eh.