• Save
Борьба с GС паузами в JVM
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Борьба с GС паузами в JVM

on

  • 2,072 views

Слайды с JavaOne 2013 Москва

Слайды с JavaOne 2013 Москва

Statistics

Views

Total Views
2,072
Views on SlideShare
877
Embed Views
1,195

Actions

Likes
1
Downloads
0
Comments
0

14 Embeds 1,195

http://blog.ragozin.info 910
http://orana.info 206
http://gridwatch.collected.info 47
http://www.newsblur.com 7
http://7735872642513631302_ed89ccdf3335f3c17e92a5ed92b23872a9f351ca.blogspot.com 7
http://newsblur.com 5
http://feedly.com 3
http://cloud.feedly.com 3
http://abtasty.com 2
http://reader.aol.com 1
http://www.feedspot.com 1
http://translate.googleusercontent.com 1
http://dev.newsblur.com 1
https://reader.aol.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Борьба с GС паузами в JVM Presentation Transcript

  • 1. Russia Development CentreDeutsche BankDeutsche BankGroup Technology & OperationsБорьба с GC паузами в JVMТеория и ПрактикаАлексей Рагозин, Deutsche Bank
  • 2. Russia Development CentreDeutsche BankСодержание докладаТеория• Алгоритмы • Экономическая модель• Гипотеза о поколениях • Барьеры записи• Модель длительности паузПрактика• Алгоритмы HotSpot JVM • Concurrent Mark Sweep• Сайзинг JVM • Фрагментация памяти • Другие проблемы 
  • 3. Russia Development CentreDeutsche BankDeutsche BankGroup Technology & OperationsТЕОРИЯ
  • 4. Russia Development CentreDeutsche BankТерминологияStop-the-world (STW) pause– полная заморозка прикладных потоков JVMCompacting algorithms– алгоритмыперемещающиеобъектывпамятивоизбежаниефрагментацииParallel collection– использование многопоточности для сокращения STW паузыConcurrent collection– “фоновая” сбора мусора не требующая STW
  • 5. Russia Development CentreDeutsche BankКак собрать “мусор”? Подсчёт ссылок Трассировка ссылок (обход графа) А зачем собирать?
  • 6. Russia Development CentreDeutsche BankТрассирующие алгоритмыMark Sweep• Обойти граф, начиная с “корневых” ссылок• Отметить живые объекты • Просканировать память и собрать “мусор”Сборка копированием (copy collector)• Каждый достижимый объект туже копируется в новую область памяти• Ссылки на другие объекты корректируются при копированииMark Sweep Compact• Mark Sweep + перемещение объектов в ходе sweep фазы
  • 7. Russia Development CentreDeutsche BankСборка копированиемFROMTOroots
  • 8. Russia Development CentreDeutsche BankСборка копированиемFROMTOrootsFROMTOroots
  • 9. Russia Development CentreDeutsche BankСборка копированиемFROMTOrootsFROMTOroots1
  • 10. Russia Development CentreDeutsche BankСборка копированиемFROMTOrootsFROMTOroots1 2
  • 11. Russia Development CentreDeutsche BankСборка копированиемFROMTOrootsFROMTOroots1 2
  • 12. Russia Development CentreDeutsche BankСборка копированиемFROMTOrootsFROMTOroots1 23
  • 13. Russia Development CentreDeutsche BankЭкономика сборки мусораS – объём кучиL – объём живых объектовCopy collection ЭффективностьMark-Sweep ЭффективностьLLScSLScLLSc 21Объѐммусора вкуче
  • 14. Russia Development CentreDeutsche BankСлабая гипотеза о поколенияхПостулаты Большинство объектов умирают молодыми Число ссылок на молодые объекты малоСледствиеЕслихранитьмолодыеобъектыотдельноотстарых,можнообеспечитьвысокую пропускную способность (молодое поколение)и эффективное использование памяти (старое поколение).
  • 15. Russia Development CentreDeutsche BankДемография объектов в кучеСмертность(байт/с)Возраст объектовПериод молодой сборкиПериод старой сборки∞
  • 16. Russia Development CentreDeutsche BankGenerational collectionМолодое поколение Сборщик настроен на пропускную способностьСтарое поколение Сборщик настроен на эффективное использование памятиПродвижение (promotion) объектов в старое поколение Сборщик молодого поколения копирует живые объекты встарое поколение после достижения “зрелого” возраста
  • 17. Russia Development CentreDeutsche BankGenerational collectionКак получить все указатели из старого поколения на молодое?Ответ – барьер на записьКаждый раз при записи указателя в память в “старом”пространстве, срабатывает барьер
  • 18. Russia Development CentreDeutsche BankМолодая сборка HotSpot JVMEden S1 S2 TenuredDirty cardsCollect roots for young GCScan stack tracesScan dirty pages in old spaceСбор “корневых” ссылок
  • 19. Russia Development CentreDeutsche BankМолодая сборка HotSpot JVMEden S1 S2 TenuredDirty cardsCollect roots for young GCClean cardsRecursive copy of live objects (only live objects are traversed)Копирование живых объектов
  • 20. Russia Development CentreDeutsche BankМолодая сборка HotSpot JVMEden S1 S2 TenuredDirty cardsСборка законченаОбласти памяти, не помеченные в таблице карт,не могут содержать ссылки на молодое поколение
  • 21. Russia Development CentreDeutsche BankФоновая маркировкаПроблема Граф объектов меняется по мере обхода ** Даже в функциональных языках могут выполнятьсяотложенные вычисления, меняющие графРешение Барьер на запись – отслеживание ссылок изменившихсяза время обхода
  • 22. Russia Development CentreDeutsche BankФоновая маркировка Card marking write barrierHotSpot CMS, JRockit, IBM J9 Snapshot-at-the-beginning (SATB) write barrierHotSpot G1 Альтернатива барьерузаписи– барьер на чтении Azul Zing JVM
  • 23. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGC AC
  • 24. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGC CD
  • 25. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGC CDReference queue: B DОчередь ссылок:
  • 26. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGC CD
  • 27. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGC DD
  • 28. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGCReference queue: B DОчередь ссылок:
  • 29. Russia Development CentreDeutsche BankSATB барьер записи (G1)A B C DGCReference queue:BDemptyОчередь ссылок: пусто
  • 30. Russia Development CentreDeutsche BankConcurrent Mark Sweep[пауза] Сбор корневых ссылок[фон] Обход графа объектов[фон] Перемаркирова “грязных” страниц[паузa] Финальная перемаркирова[фон] Сканирование памяти (sweep)
  • 31. Russia Development CentreDeutsche BankДлительность паузы (CMS)Young collectionScanthreadstacksScan dirty cardsReadcardtableScandirtypagesCopyliveobjectsInitialmarkScanthreadstacksScanyoungspaceRemarkScanthreadstacksScanyoungspaceScan dirty cardsReadcardtableScandirtypagesПропорционально размерустарого поколенияСтремится к константе с ростомразмера старого поколенияПропорционально размерустарого поколенияСтремится к константе с ростомразмера старого поколения
  • 32. Russia Development CentreDeutsche BankЭкспериментhttp://blog.ragozin.info/2011/07/openjdk-patch-cutting-down-gc-pause.html
  • 33. Russia Development CentreDeutsche BankДругие компоненты паузыВремя синхронизации в safe pointОжидание JNI блокировокСканирование стекаОбработка ссылок• Weak • Soft • JNI • Finalizers
  • 34. Russia Development CentreDeutsche BankDeutsche BankGroup Technology & OperationsПрактика
  • 35. Russia Development CentreDeutsche Bank“Боевые” настройки JVMHotSpot JVMConcurrent Mark Sweep алгоритмСайзинг памяти под приложение
  • 36. Russia Development CentreDeutsche BankСайзинг -Xmx = -Xms -Xmx = размер старого + размер молодого -Xmn = размер молодого Старое поколение: Данные приложения (jmap –histo) Запас 30-50% на фоновую сборку и фрагментацию
  • 37. Russia Development CentreDeutsche BankТонкая подстройка CMS Поиск оптимальных параметров молодой сборки -XX:CMSWaitDuration=N -XX:+CMSScavengeBeforeRemark Инкрементальный или нет? Выгружать классы или нет?http://blog.ragozin.info/2011/07/gc-check-list-for-data-grid-nodes.html
  • 38. Russia Development CentreDeutsche BankФрагментация
  • 39. Russia Development CentreDeutsche BankФрагментацияПоследствия фрагментации Однопоточный STM Mark Sweep Compact Очень долгое promotion failure recoveryБольше памяти – самый эффективный способ борьбы сфрагментацией
  • 40. Russia Development CentreDeutsche BankДругие проблемы Свопинг – (Javaисвопинг–вещинесовместные) Reference abuse Медленные сейвпоинты Прямой доступ к памяти через JNI
  • 41. Russia Development CentreDeutsche BankDeutsche BankGroup Technology & OperationsСпасибоАлексей Рагозин, Deutsche Bankhttp://blog.ragozin.info - мои статьи о JVM и не только