Post Thumbnail

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

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

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

Похожее

Post Thumbnail

Gossamer

Новый пятничный язык программирования, вдохновленный Rust но с горутинами на M:N...