Что такое адаптивное вращение W.r. t lock acquisition?


Одним из четырех основных изменений, внесенных в java 6 в отношении улучшения производительности внутренних замков, являетсяадаптивная технология вращения . Что же такое адаптивный спиннинг? Это комбинация spinlocks и mutex lock? Может ли кто - то объяснить простым для понимания способом полезность этой стратегии, которая по умолчанию доступна с JDK6 и далее.

1 12

1 ответ:

Что такое адаптивный спиннинг?

В первую очередь ударит по Google для "адаптивных спиннинг" ведет к этому в Java 6 странице "производительность" .

Цитирую:

Адаптивное вращение-это метод оптимизации, в котором двухфазная стратегия спина-затем-блок используется потоками, пытающимися выполнить конкурирующую синхронизированную операцию ввода. Этот метод позволяет потокам избежать нежелательных эффектов, влияющих на производительность, таких как переключение контекста и повторное заполнение Перевод Буферов Lookaside (TLBs) . Он является "адаптивным", поскольку длительность спина определяется политическими решениями, основанными на таких факторах, как скорость успеха и/или неудачи недавних попыток спина на том же мониторе и состояние текущего владельца блокировки.

Таким образом, потоки первоначально пытаются вращаться пару раз, пытаясь получить блокировку, прежде чем фактически блокировать. Затем в будущем он использует предыдущие метрики успеха / неудачи, чтобы адаптивно определить, является ли он надо попробовать закрутить или заблокировать. Вращение тратит процессорное время, а блокировка может привести к переключению контекста, и поток может ждать дольше, чем необходимо. Цель состоит в том, чтобы попытаться оптимизировать обе эти проблемы на основе прошлого поведения.

Для получения более подробной информации, performance doc ссылается на эту презентацию, озаглавленную Синхронизация в Java SE 6 (HotSpot) Дэйвом Дайсом. Первый слайд озаглавлен " оспариваемые затраты (масштабируемость + задержка)":

  • контекст переключение чрезвычайно дорого
  • неограниченное вращение недопустимо
  • адрес через адаптивный спиннинг

Далее в презентации есть слайд под названием "адаптивное вращение":

  • стратегия "спин-затем-блок"
    • попробуйте избежать переключения контекста, вращаясь на [многопроцессорных] системах
  • длительность спина
    • обслуживается на монитор
    • варьируется в зависимости от недавней истории успеха/неудачи спина соотношение
  • адаптируется к нагрузке системы, параллельности, модальности приложения
  • [мультипроцессор] - вежливое вращение
  • избегайте вращения в бесполезных условиях (владелец заблокирован)

Интересная штука.