What are the main factors in estimating the minimum RAM quantum needed by a component? (Excluding for this discussion any dynamic allocation an application might perform.)
The Genode Foundations book (18.05) suggests that if no quantum is specified, "init has a reasonable default of 160K (on 32 bit)".
Experimentally, it seems like even the most modest components need more. For example the client side of the hello_tutorial, essentially 5 source lines and a 20K stripped ELF binary, seems to need about 500K on a 32-bit x86 system.
At quantum="480K" for hello_client, one sees: Warning: PD (init -> hello_client) RAM limit (used=380K, limit=394587) exceeded during transfer_quota(6K) (and the test hangs.)
At 425K, the result is: [init] child "hello_client" requests resources: ram_quota=69632 page fault, pd='init -> hello_client' thread='hello_client' cpu=0 ip=0xa2adc address=0xa00fde50 stack pointer=0x0 qualifiers=0x6 irUWp reason=1
At 300K, we see: [init] Error: allocation of read-write segment failed [init] Error: hello_client: out of RAM during ELF loading
Is there a way to tweak component compilation/linking parameters to minimize physical RAM required?
// Steve Harp