Hi Ben,
thanks for chiming in!
On 05.10.2016 22:22, Nobody III wrote:
Maybe init should have an XML option to set its reserved RAM quota, or it could instead automatically calculate the required quota based on the number of components it starts.
The automatic calculation would work if init was solely used in a static way. But init can actually respond to configuration changes at runtime. Hence, the number of children may vary over the lifetime of init, which makes it impossible to calculate the value up-front.
To address the problem in a fundamental way, init should allocate all child-specific capabilities from the PD session of the respective child. However, this is not a simple change. E.g., it would require us to pass the PD session as argument to 'Entrypoint::manage' and to keep the association of each RPC object with the PD session where its capability was allocated from. Since this is a rare problem (actually only for init at this point), I am not convinced to make the API more complicated for everyone. However, I have no strong opinion yet.
In the shorter term, it would be sensible to make the preservation configurable via init's configuration instead of hard-coding the value. I plan to rework init soon and will keep this suggestion in mind.
Also, it would be nice to have both reserved and maximum quotas for components in init's configuration.
I agree. I will consider this while reworking init.
Cheers Norman