Technology

[Перевод] Структуры данных на практике. Глава 13: Структуры данных без блокировок

«Блокировки — это goto конкурентного программирования», — Морис Херлихи Проблема 60% Наша система логгинга тратила 60% своего времени на ожидание снятия блокировок. Не на выполнение полезной работы, только на одно ожидание. Восемь ядер, пытавшихся записывать сообщения логов, имели общий кольцевой бу

H
Habr
27 апреля 2026 г.·1 мин чтения
[Перевод] Структуры данных на практике. Глава 13: Структуры данных без блокировок

Image: Habr

«Блокировки — это goto конкурентного программирования», — Морис Херлихи

Проблема 60%

Наша система логгинга тратила 60% своего времени на ожидание снятия блокировок. Не на выполнение полезной работы, только на одно ожидание.

Восемь ядер, пытавшихся записывать сообщения логов, имели общий кольцевой буфер. Реализация была простой: буфер защищался мьютексом. При высокой нагрузке, когда все ядра записывали логи одновременно, профилировщик демонстрировал ужасный паттерн: 60% тактов CPU тратилось на операции с мьютексом.

Пропускная способность: 850 тысяч сообщений в секунду. В восьмиядерной системе она должна быть гораздо выше.

«Можно ли улучшить ситуацию, отказавшись от блокировок?», — спросил меня мой менеджер во время ревью производительности.

Этот вопрос привёл к полной смене архитектуры...

Читать далее

Оригинальная статья

[Перевод] Структуры данных на практике. Глава 13: Структуры данных без блокировок

Опубликовано Habr

Читать полную статью