On Sun, Jul 10, 2022 at 3:04 PM Sam Leffler <[email protected]> wrote:

> On Fri, Jul 8, 2022 at 6:38 PM Gernot Heiser <[email protected]> wrote:
>
>> On 9 Jul 2022, at 05:15, Sam Leffler via Devel <[email protected]>
>> 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.
>

The ELF load segment # is misleading 'cuz it includes the rootserver image
which in turn includes the CAmkES compoents. So 110KB might make sense
relative to 64KB for the kernel proper. Will check.

>
>> 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 -- [email protected]
>> To unsubscribe send an email to [email protected]
>>
>
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to