You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
However, doing this at the moment will cause really bad build time (~5min to 10min for debug build). This seems to be a known issue for large arrays in Rust (e.g. rust-lang/rust#49330).
There is some discussion mentioning that if we initialize large arrays of value 0, that wouldn't be an issue.
We probably either wait for Rust to fix this (however, it seems unlikely in a short time), or change our implementation to work around the issue.
The text was updated successfully, but these errors were encountered:
This pull request adds an SFT map implementation for 64 bits systems, which maps one MMTk space to an entry in the SFT map. This closes#219 and closes#531.
This PR fixes the large memory usage and slow boot time caused by the sparse SFT map on 64bits.
* move SFT and SFT map code from the `space` module to separate `sft` and `sft_map` modules.
* rename the current `struct SFTMap` to `struct SFTSparseChunkMap`
* add `struct SFTSpaceMap`
* add `struct SFTDenseChunkMap`
* add `trait SFTMap`. Both `SFTSpaceMap` and `SFTChunkMap` implement `trait SFTMap`
* add feature `malloc_mark_sweep`
* it depends on the build which `SFTMap` implementation is used:
* for 32 bits, use `SFTSparseChunkMap`.
* for 64 bits with `malloc_mark_sweep`, use `SFTDenseChunkMap`.
* for 64 bits without `mallco_mark_sweep`, use `SFTSpaceMap`.
k-sareen
pushed a commit
to k-sareen/mmtk-core
that referenced
this issue
Sep 30, 2022
This pull request adds an SFT map implementation for 64 bits systems, which maps one MMTk space to an entry in the SFT map. This closesmmtk#219 and closesmmtk#531.
This PR fixes the large memory usage and slow boot time caused by the sparse SFT map on 64bits.
* move SFT and SFT map code from the `space` module to separate `sft` and `sft_map` modules.
* rename the current `struct SFTMap` to `struct SFTSparseChunkMap`
* add `struct SFTSpaceMap`
* add `struct SFTDenseChunkMap`
* add `trait SFTMap`. Both `SFTSpaceMap` and `SFTChunkMap` implement `trait SFTMap`
* add feature `malloc_mark_sweep`
* it depends on the build which `SFTMap` implementation is used:
* for 32 bits, use `SFTSparseChunkMap`.
* for 64 bits with `malloc_mark_sweep`, use `SFTDenseChunkMap`.
* for 64 bits without `mallco_mark_sweep`, use `SFTSpaceMap`.
Currently we allocate and initialize
SFTMap
duringMMTK::new()
. This takes roughly 100ms and can make the VM start up time noticeably slower.Ideally we could directly allocate and initialize a static
SFTMap
:However, doing this at the moment will cause really bad build time (~5min to 10min for debug build). This seems to be a known issue for large arrays in Rust (e.g. rust-lang/rust#49330).
There is some discussion mentioning that if we initialize large arrays of value 0, that wouldn't be an issue.
We probably either wait for Rust to fix this (however, it seems unlikely in a short time), or change our implementation to work around the issue.
The text was updated successfully, but these errors were encountered: