How to limit memory usage to historical nodes without using cgroups


I believe for any historical service

memory_for_segments = total_memory - heap - direct_memory - jvm_overhead (~1G)

where total_memory refers to the memory available to the historical service, which for default cases is going to be all the system memory.

How can I limit this memory available to the node without using cgroups.

Defining ulimits to the process would kill the service if it requires to access more than the specified memory ?