Default musl allocator considered harmful to performance
musl-аллокатор тормозит в 7 раз
Добавь в main.rs
:
#[cfg(target_env = "musl")]
#[global_allocator]
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
и в Cargo.toml
:
[target.'cfg(target_env = "musl")'.dependencies]
mimalloc = "0.1"
Проблема — конкуренция потоков за malloc
. Чем больше потоков, тем хуже.
Замена аллокатора нужна даже для однопоточных программ: забудешь — потом дорого.
Почему musl? Статика + 2 МБ distroless-контейнер = старые RH и быстрый cold-start.
Кейс: сервер обрабатывал данные в 7 раз медленнее хоста.
Виноват 200 000 контекст-переключений/сек vs 1 200 у glibc.
strace
показал 6,7 с в futex
у musl против 0,5 с у glibc.