On Fri, Jul 8, 2022 at 6:38 PM Gernot Heiser <ger...@unsw.edu.au> wrote:
> On 9 Jul 2022, at 05:15, Sam Leffler via Devel <devel@sel4.systems> wrote: > > > > I'm trying to figure out the physical memory used by the kernel. This is > > for riscv if it matters. > > Hi Sam, > > The RAM usage of the kernel is dominated by application specifics. I don't think so, but perhaps I misunderstand what "application specifics" means. The memory footprint of the _kernel_ (not anything running in use space) appears to be fixed at the point where it launches the rootserver (+idle thread). Or does the kernel dynamically allocate memory _after_ starting the rootserver? > The kernel, at boot time, allocates enough RAM to boot up and start the > init task. That’s it’s own text segment, its own page tables, a small > amount of global data, and a kernel stack per core, plus whatever’s needed > for init. (No heap!) It’s a while we’ve done an audit, but should fit into > 64KiB. > Is 64KB what you expect for a release build up to the point where the rootserver setup happens? What target cpu + config? Does this include the idle thread? This is substantially less than my release build for riscv w/ MCS but I enable CONFIG_PRINITING and we have a few drivers (timer, uart) though they should be small. IIRC the ELF headers for our release kernel.elf have a load segment ~110KB. > > This is normally dominated by what you need to run an actual system: for > each user process you’ll need > - page tables > - TCB(s) > - Cspace > - other objects, such as endpoints, Notifications > > These are provided to the kernel by re-typing Untypeds, and as such the > responsibility of usermode. Sure. I believe I'm reclaiming all rootserver resources so once it terminates I expect to see all of physical memory accounted for by the kernel, idle thread, rootserver-allocated resources (to construct CAmkES components), and unallocated memory held by untyped objects. But I don't know for sure what the kernel portion is and the total "reserved" memory seems high. Hence my ask. I don't suppose there's some kernel variable I can print that will help answer my q? > > Gernot > _______________________________________________ > Devel mailing list -- devel@sel4.systems > To unsubscribe send an email to devel-leave@sel4.systems > _______________________________________________ Devel mailing list -- devel@sel4.systems To unsubscribe send an email to devel-leave@sel4.systems