Rust
Фотография
нажмите — покажем
нажмите — покажем
Rust без аллокатора: `fff` снизил пиковое потребление памяти через `mmap`
Во время тестирования fff обнаружилось, что при создании большого Vec<u64> процесс потребляет заметно больше оперативной памяти, чем требуется для индекса.
Причиной оказался аллокатор, который мог резервировать лишнюю память при работе с крупными буферами.
Теперь на Unix-системах fff выделяет память напрямую через mmap:
* рассчитывает точный объём памяти
* округляет его до размера системной страницы
* создаёт приватное анонимное отображение
* работает с данными через *mut u64
* освобождает память вызовом munmap
На остальных платформах по-прежнему используется обычный Vec<u64>.
В результате fff запрашивает у ядра ровно столько страниц, сколько необходимо для хранения и обработки индекса.
21 · 2.9K ·