Невидимый враг многопоточности: False Sharing и кэш-линии процессора

Представьте задачу: мы пишем высоконагруженный сетевой сервис и нам нужно считать входящие пакеты. Чтобы не блокировать потоки мьютексами, мы решаем дать каждому потоку свой собственный счетчик. Нет общих данных — нет блокировок, верно?

https://habr.com/ru/articles/1032804/

#false_sharing #многопоточность #оптимизация #кэш_процессора #lockfree #кэшлиния #производительность

Невидимый враг многопоточности: False Sharing и кэш-линии процессора

Представьте типичную ситуацию: вы оптимизируете высоконагруженный бэкенд или сетевой сервис. И абсолютно неважно, на чем вы пишете — C++, Java, Go или C#. У вас есть несколько потоков, и вы решаете...

Хабр

Кэш, который нас предал: как мы ловили призраков в L3 и нашли side-effects в продакшене

Это история о том, как мы несколько недель искали странные скачки latency в продакшене и в итоге уткнулись в поведение кэша процессора. Не в аллокатор, не в GC, не в сеть. В кэш. В статье — реальные эксперименты, код, метрики, гипотезы, которые не подтвердились, и довольно неприятные выводы о том, насколько процессор может быть непредсказуемым, когда система нагружена по-взрослому.

https://habr.com/ru/articles/1003824/

#кэш_процессора #cache_miss #L3_cache #latency #perf #false_sharing #NUMA #side_effects

Кэш, который нас предал: как мы ловили призраков в L3 и нашли side-effects в продакшене

Это история о том, как мы несколько недель искали странные скачки latency в продакшене и в итоге уткнулись в поведение кэша процессора. Не в аллокатор, не в GC, не в сеть. В кэш. В статье — реальные...

Хабр