Why application request RAM quota from parent even if it is enough?
Alexander Tormasov
a.tormasov at innopolis.ru
Thu Sep 5 11:06:37 CEST 2019
I am trying to start Go application in genode/sel4, 19.08. Now it try to alloc 544Mb Ram (standard initialization approach for reservation via mmap - instead it really alloc space using libc malloc inside mmap() ).
So, I have 3 gb ram VM, and ram quota for application is 2 gb.
I see that it just plain hangs on the response in
void resource_request(Resource_args const &args),
from expanding_parent_client.h
Any suggestions?
here it hang in _wait_for_resource_response:
/*
* Issue resource request
*/
Parent_client::resource_request(args);
/*
* Block until we get a response for the outstanding resource
* request.
*/
if (_state == BLOCKING_DEFAULT)
_wait_for_resource_response();
}
My run script:
build {
core init timer lib/libc_noux
test/go_app
}
create_boot_directory
install_config {
<config verbose="yes" ld_verbose="yes">
<parent-provides>
<service name="ROM"/>
<service name="LOG"/>
<service name="RM"/>
<service name="CPU"/>
<service name="PD"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
</parent-provides>
<default-route>
<any-service> <any-child/> <parent/> </any-service>
</default-route>
<default caps="2200"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="test-go" caps="1500">
<resource name="RAM" quantum="2G"/>
<config verbose="yes" ld_verbose="yes" stdin="/null" stdout="/log" stderr="/log">
</config>
</start>
</config>
}
build_boot_image {
core init timer ld.lib.so libc.lib.so libm.lib.so posix.lib.so
libc_noux.lib.so vfs.lib.so test-go
}
Log:
...
2747 MiB RAM and 261141 caps assigned to init
Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x1
Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x2
[init] 0x40000000 .. 0x4fffffff: stack area
[init] 0x30000 .. 0x197fff: ld.lib.so
[init] parent provides
[init] service "ROM"
[init] service "LOG"
[init] service "RM"
[init] service "CPU"
[init] service "PD"
[init] service "IRQ"
[init] service "IO_MEM"
[init] service "IO_PORT"
[init] child "timer"
[init] RAM quota: 776K
[init] cap quota: 2168
[init] ELF binary: timer
[init] priority: 0
[init] provides service Timer
[init] child "test-go"
[init] RAM quota: 2096904K
[init] cap quota: 1468
[init] ELF binary: test-go
[init] priority: 0
Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x4
Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x8
[init -> timer] 0x40000000 .. 0x4fffffff: stack area
[init -> timer] 0x30000 .. 0x197fff: ld.lib.so
[init] child "timer" announces service "Timer"
[init -> test-go] 0x40000000 .. 0x4fffffff: stack area
[init -> test-go] 0x30000 .. 0x197fff: ld.lib.so
[init -> test-go] 0x12f8000 .. 0x1492fff: libc.lib.so
[init -> test-go] 0x1493000 .. 0x1503fff: vfs.lib.so
[init -> test-go] 0x1504000 .. 0x153bfff: libm.lib.so
[init -> test-go] mmap addr=0xc000000000 len =567472562176 prot=0 flags=4098 libc_fd=-1 offset=0
[init -> test-go]
[init -> test-go] resource_request: ram_quota=567472578560
More information about the users
mailing list