Skip to content

Make a separate pool for page-size-1 memories in the pooling allocator #13744

Description

@chenyan2002

Feature

Currently, each memory reserves a 4G virtual address space in the pooling allocator. But page-size-1 memories use bounds check, it doesn't need the guarded virtual reservation. We need a separate pool for page-size-1 memories, so that we can have a higher limit for max_memories_per_component, and don't run out of virtual address space.

Implementation

We can set two new limits: page_size_1_memory_max_size and max_page_size_1_memories_per_component. Use Memory::new_dynamic for allocating the page-size-1 memory, and don't put the allocation_index into the MemoryPoll.

Alternatives

We can create a dedicated memory pool for page-size-1 memory, something similar to TablePool. But we need to reserve instance_count * page_size_1_memory_max_size * max_page_size_1_memories_per_component virtual space. With the new_dynamic/malloc approach, we only consume virtual space for the live ones.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions