[Перевод] Структуры данных на практике. Глава 13: Структуры данных без блокировок
«Блокировки — это goto конкурентного программирования», — Морис Херлихи Проблема 60% Наша система логгинга тратила 60% своего времени на ожидание снятия блокировок. Не на выполнение полезной работы, только на одно ожидание. Восемь ядер, пытавшихся записывать сообщения логов, имели общий кольцевой бу
![[Перевод] Структуры данных на практике. Глава 13: Структуры данных без блокировок](/uploads/0c0ea02d-54ef-4f3a-9109-e778a9fe9d95.jpg)
Image: Habr
«Блокировки — это goto конкурентного программирования», — Морис Херлихи
Проблема 60%
Наша система логгинга тратила 60% своего времени на ожидание снятия блокировок. Не на выполнение полезной работы, только на одно ожидание.
Восемь ядер, пытавшихся записывать сообщения логов, имели общий кольцевой буфер. Реализация была простой: буфер защищался мьютексом. При высокой нагрузке, когда все ядра записывали логи одновременно, профилировщик демонстрировал ужасный паттерн: 60% тактов CPU тратилось на операции с мьютексом.
Пропускная способность: 850 тысяч сообщений в секунду. В восьмиядерной системе она должна быть гораздо выше.
«Можно ли улучшить ситуацию, отказавшись от блокировок?», — спросил меня мой менеджер во время ревью производительности.
Этот вопрос привёл к полной смене архитектуры...
Читать далееОригинальная статья
[Перевод] Структуры данных на практике. Глава 13: Структуры данных без блокировок
Опубликовано Habr