Что такое адаптивное вращение W.r. t lock acquisition?
Одним из четырех основных изменений, внесенных в java 6 в отношении улучшения производительности внутренних замков, являетсяадаптивная технология вращения . Что же такое адаптивный спиннинг? Это комбинация spinlocks и mutex lock? Может ли кто - то объяснить простым для понимания способом полезность этой стратегии, которая по умолчанию доступна с JDK6 и далее.
1 ответ:
Что такое адаптивный спиннинг?
В первую очередь ударит по Google для "адаптивных спиннинг" ведет к этому в Java 6 странице "производительность" .
Цитирую:
Адаптивное вращение-это метод оптимизации, в котором двухфазная стратегия спина-затем-блок используется потоками, пытающимися выполнить конкурирующую синхронизированную операцию ввода. Этот метод позволяет потокам избежать нежелательных эффектов, влияющих на производительность, таких как переключение контекста и повторное заполнение Перевод Буферов Lookaside (TLBs) . Он является "адаптивным", поскольку длительность спина определяется политическими решениями, основанными на таких факторах, как скорость успеха и/или неудачи недавних попыток спина на том же мониторе и состояние текущего владельца блокировки.
Таким образом, потоки первоначально пытаются вращаться пару раз, пытаясь получить блокировку, прежде чем фактически блокировать. Затем в будущем он использует предыдущие метрики успеха / неудачи, чтобы адаптивно определить, является ли он надо попробовать закрутить или заблокировать. Вращение тратит процессорное время, а блокировка может привести к переключению контекста, и поток может ждать дольше, чем необходимо. Цель состоит в том, чтобы попытаться оптимизировать обе эти проблемы на основе прошлого поведения.
Для получения более подробной информации, performance doc ссылается на эту презентацию, озаглавленную Синхронизация в Java SE 6 (HotSpot) Дэйвом Дайсом. Первый слайд озаглавлен " оспариваемые затраты (масштабируемость + задержка)":
- контекст переключение чрезвычайно дорого
- неограниченное вращение недопустимо
- адрес через адаптивный спиннинг
Далее в презентации есть слайд под названием "адаптивное вращение":
- стратегия "спин-затем-блок"
- попробуйте избежать переключения контекста, вращаясь на [многопроцессорных] системах
- длительность спина
- обслуживается на монитор
- варьируется в зависимости от недавней истории успеха/неудачи спина соотношение
- адаптируется к нагрузке системы, параллельности, модальности приложения
- [мультипроцессор] - вежливое вращение
- избегайте вращения в бесполезных условиях (владелец заблокирован)
Интересная штука.