SYSTEM ATLASЗагрузка материала

False Sharing

False Sharing

Независимые данные в одной cache line вызывают лишнюю синхронизацию.

Простыми словами

Два потока могут менять совершенно разные счётчики и всё равно тормозить друг друга из-за того, как память разложена внутри процессора. Например, два часто изменяемых поля оказались в одном маленьком блоке кэша, и ядра начинают постоянно передавать этот блок друг другу. Поэтому горячие поля иногда специально раздвигают в памяти, чтобы независимая работа действительно оставалась независимой.

Механизм действия

Сначала проверяют, есть ли исходное условие из определения. Затем смотрят, как оно влияет на структуру компонентов, потоки данных, ограничения и действия участников. Если эту связь не удаётся наблюдать, принцип не стоит использовать как готовое объяснение.

Пример в работе

Нерабочий подход

Решение принимают без учета механизма «False Sharing», оценивая только ближайший эффект.

Системный подход

Перед изменением проверяют, как «False Sharing» влияет на ограничения, стимулы, зависимости и вторичные последствия.

Ограничения

«False Sharing» объясняет только часть происходящего в области «Производительность». Сам принцип не говорит, насколько сильным будет эффект в вашем случае, и не заменяет измерения. При другом масштабе, среде или временном горизонте результат может отличаться.

Источник

Intel Corporation, “Avoiding and Identifying False Sharing Among Threads”, 2011.

Первоисточник