[NSWI004] A02 - malloc request limit
Vojtech Horky
horky at d3s.mff.cuni.cz
Mon Nov 2 09:08:27 CET 2020
Hello.
Dne 02. 11. 20 v 7:37 Petr Tuma napsal(a):
> Hello,
>
> just curious, why would such a limit be useful ? The only thing I can
> think of is trying very hard to keep the headers very small (saving bits
> on size fields), but even for that a limit of around 4KB seems to be
> quite small - and besides, by now I think you have all seen how hard it
> is to avoid the alignment restrictions, which means aiming for a header
> smaller than 4B in your assignments does not make much sense (and
> possibly 8B would me more reasonable than 4B).
The question might have arouse after the discussion we had last Friday
about page and heap allocator. I remember I said something around the
lines that kernel objects are rarely big and heap allocator usually
allocates rather small objects.
For example, in Linux one is not supposed to allocate objects bigger
than page size and use other allocators for that [1].
[1] https://www.kernel.org/doc/html/latest/core-api/memory-allocation.html
For your implementation, it depends on where the limit comes from. If
you create some kind of slab allocator with predefined object sizes
(such as in HelenOS [2]) then 4KB would be okay as it would be _very_
easy to increase it to any value. However, if you choose this limit
because you are unable to debug your implementation for bigger values,
it is a completely different story.
[2]
https://github.com/HelenOS/helenos/blob/master/kernel/generic/src/mm/malloc.c#L49
If you have some smart and very memory efficient implementation, where
4KB limit allows you to do some nice tricks, it is probably okay. I say
probably, because if the implementation becomes totally unreadable and
unmaintainable because of that, we will not be very happy about it.
Note that for some time you will be using heap allocator to allocate
thread stacks. It might be useful to have stack bigger than 4KB in
certain cases (for debugging).
> On 01/11/2020 23:08, František Trebuňa wrote:
>> In the tests malloc asks for maximum o f 32 KB if Im not mistaken.
Actually, heap/stress allocates up to 128 KB. But the tests do not fail
if such allocation is not possible and try to allocate smaller blocks.
Hope this helps,
- VH
>>
>> Trebuňa
>>
>> On Sun, Nov 1, 2020, 22:33 R S <rstrnadlova at gmail.com
>> <mailto:rstrnadlova at gmail.com>> wrote:
>>
>> Hello,
>> can we limit how much memory can malloc ask for (for instance to
>> 4056B) or can malloc theoretically ask for half our heap?
>>
>> Thank you
>> Strnadlová from Milkyway
>> _______________________________________________
>> NSWI004 mailing list
>> NSWI004 at d3s.mff.cuni.cz <mailto:NSWI004 at d3s.mff.cuni.cz>
>> https://d3s.mff.cuni.cz/mailman/listinfo/nswi004
>> <https://d3s.mff.cuni.cz/mailman/listinfo/nswi004>
>>
>>
>> _______________________________________________
>> NSWI004 mailing list
>> NSWI004 at d3s.mff.cuni.cz
>> https://d3s.mff.cuni.cz/mailman/listinfo/nswi004
>>
> _______________________________________________
> NSWI004 mailing list
> NSWI004 at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/mailman/listinfo/nswi004
More information about the NSWI004
mailing list