When an MT server creates a tenant, how is the memory for each tenant allocated? For example, if I have an MT server named paex32, and I have tenants named paex32a1, paex32a2 and paex32a3, how are these tenants being allocated memory? If paex32 has 15 GB or RAM and a permanent generation configured to be 1024 MB, does that mean paex32a1, paex32a2 and paex32a3 end up with a permanent generation of less than 1024 MB each (divided equally)? What happens when there are 500 tenants? Does that mean the permanent generation gets smaller and smaller for each tenant when more tenants are created on the MT server?
***Updated by Moderator: Lochan. Removed user added Ask the Expert tag. Apologies for confusion, shouldn't have been an end-user option; updated categories***
java memory is managed by JVM and JVM has no intrinsic knowledge on tenants, which are pega business artifacts. Of course, the more tenants you have, the more likely that bigger heap/perm memory is required, but there is no simple formula. There are so many factors that can affect memory utilization. Also, RAM is different from heap, but RAM should be bigger than the heap as native memory (besides the reserved heap for java process) is needed for other non-java processes. The only way to profile the memory is to run realistic use cases on the server and monitor the memory usage.
You could use AES(Autonomic Event Services) to moitor the memory consumed by your application. AES is capable of more than just monitoring the system memory. Alos AES provides standard reports that can be leveraged.