Post Thumbnail

Автор заметили, что Rust-сервис после обработки всплеска событий не возвращает память операционной системе - RSS остается высоким, хотя настоящих утечек в коде нет.

Оказалось, что стандартный аллокатор glibc плохо подходит для его сценария: короткоживущие задачи Tokio выделяют и освобождают память вперемешку, и даже один "живой" кусок может заблокировать возврат целой страницы ОС, а освобожденные блоки оседают в кешах аллокатора. Переход на jemalloc исправил ситуацию - он группирует блоки одного размера в отдельные страницы и фоновым потоком возвращает полностью освободившиеся страницы обратно системе, не дожидаясь новой аллокационной активности

Знать как работают аллокаоры - важно

Похожее

Post Thumbnail

Перед main

До вызова main() в Rust существует полноценная фаза инициализации, в которой ран...

Post Thumbnail

Свой Max с E2E

Статья про кастомный клиент для Max с сквозным шифрованием и все это на Rust. От...