malloc() стал в 43 раза быстрее. Технология 2018 года, которую почти никто не использует
Джастин Танни описывает restartable sequences (rseq) — механизм Linux с 2018 года, позволяющий создавать потокобезопасные структуры данных без мьютексов и...
Джастин Танни описывает restartable sequences (rseq) — механизм Linux с 2018 года, позволяющий создавать потокобезопасные структуры данных без мьютексов и атомарных операций. Принцип: ядро гарантирует, что критическая секция либо завершится целиком на одном CPU, либо перезапустится с начала при вытеснении. Убираем и блокировку, и atomics — при полном абстрагировании планировщика.
Результаты на malloc(): Raspberry Pi 5 (4 ядра) — ускорение 3x. AMD Threadripper Pro 7995WX (96 ядер) — ускорение 43x. Чем больше ядер — тем больше выигрыш, потому что atomics масштабируются обратно пропорционально количеству ядер из-за cache coherency.
Проблема: сегодня rseq можно использовать только через handwritten assembly. Библиотека librseq от автора rseq в ядре существует и покрывает типовые случаи (счётчики, связные списки), но в треде отметили, что статья о ней не упоминает.
Один эксперт по low-level programming объяснил суть глубже: introspection windows (более общий термин для restartable sequences) — техника, известная ~25 лет. Ключевой инсайт: если ты контролируешь источники preemption, ты можешь гарантировать атомарность без аппаратных механизмов.
Другой голос: rseq масштабируется с количеством CPU, а не потоков. Если вы контролируете все потоки приложения — преимущество перед thread-local data не так велико. Но для аллокаторов (где вызовы приходят из неконтролируемого кода) — это именно тот случай.
TCMalloc и jemalloc уже используют rseq. Для всех остальных — это «лучший секрет системного программирования», ждущий библиотеки с человеческим API.
Получайте такие разборы каждый день
Главные истории Hacker News на русском — в Telegram или RSS-ридере.
Почему AI пишет «Это не X. Это Y». Виноват не датасет — виновата пост-тренировка
Эрик Сальваджо из рассылки Cybernetic Forests объясняет: когда мы ищем «AI-слоп» в тексте, мы смотрим не туда.