SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Несколько реальных коллекторов
из Hotspot
• Последовательный коллектор
• Параллельный коллектор
• Конкурентный коллектор
• Коллектор с гарантиями
  реального времени
• Garbage-first (G1)

                                 10
Общие моменты
• Все коллекторы точные
• Несколько поколений:
    Молодое (YoungGen)
    Старое (OldGen)
    Перманентное (PermGen)
• Различные алгоритмы сборки в поколениях
    Копирующий в YoungGen
• Перенос объектов в поколение OldGen
• Выделение некоторых объектов прямо в OldGen
• Различные методы учѐта ссылок между поколениями
  (барьеры)
• YoungGen поделѐн на TLABы

                                                11
Барьеры чтения и записи
• Минимизация обходимого графа при малых
  сборках
• Обход при малой сборке может не учитывать
  ссылок в старшее поколение




• .. если сборщик может отслеживать ссылки
  старшего в младшее
                                             12
Барьеры чтения и записи
• Запись:
    При сохранение ссылки на объект в молодое
     поколение в объекте из старого поколения
    При повышении (promotion) объекта в старое
     поколение
• Чтение:
    На каждый доступ к объекту
    Позволяют исполнять действия при
     использовании объекта (например
     перемещение устаревшей ссылки)
• Подробнее:
  http://cs.anu.edu.au/~Steve.Blackburn/pubs/pap
  ers/wb-ismm-2004.pdf
                                              13
Остановка мира (STW)
• Достаточно частая и нетривиальная операция
• Заморозить все потоки в консистентном
  состоянии
• Продолжить исполнения из этого состояния
• Стратегии реализации:
   Кооперативная/синхронная
   Насильственная/асинхронная
• Возможные реализации (?)
• Реализация в HotSpot (взаимодействие с
  JITом)

                                           14
Сжатые указатели
• Использование 32-битных значений для
  адресации на 64-битных платформах
• Уменьшает объѐм данных для передачи по
  шине
• За счѐт дополнительных вычислений и
  большей гранулярности
• Ptr = (Oop << Shift) + HeapBase
• Предполагает непрерывный (в виртуальных
  адресах) хип
• Для x86:
  obj.field := mov rax, [rbase+oop*Shift+fieldOffset]
                                                 15
Последовательный коллектор
• Относительно простой, надѐжный
• Достаточно производительный на небольших
  хипах (~1G)
• Новое поколение:
   Копирующий коллектор
   Остановка мира (STW)
• Полная сборка
   Классический mark-sweep-compact
    последовательный коллектор
   Остановка мира (STW)
• Преимущества, недостатки
                                        16
Параллельный коллектор
• Ориентирован на многопроцессорные
  серверные конфигурации,
  высокопроизводительный
• В принципе, распараллеленная версия
  предыдущего коллектора
• Алгоритмы:
   Потоки сборщика по числу логических
    процессоров
   Разделение множества корневых объектов
    между потоками
   Похищение работы для балансировки



                                         17
Конкурентный коллектор
• Выполняется “почти” параллельно с исполнением
  кода Java
• Мягкие гарантии на паузы
• STW чтобы пометить корневой набор
• STW для заключительной перемаркировки
• Не компактифицирует, выделяет и освобождает
  используя freelist’ы
• Может исполняться всѐ время или периодически
• Фрагментация хипа, поэтому:
    Пытается объединять freelist’ы
    Сильная фрагментация – откат к сериальному
     или параллельному коллектору

                                                  18
Коллектор с гарантиями
  реального времени
• Жѐсткие гарантии реального времени для
  некоторых потоков
• Алгоритм Хенриксонна,
  http://www.cs.lth.se/home/Sven_Robertz/publ/L
  CTES03-slides.pdf
• Сборка при выделении
• Преемптивный коллектор, плавающий
  приоритет




                                             19
Garbage-First (G1)
• Конкурентный и параллельный копирующий
  коллектор с мягкими гарантиями на паузы
• Хип поделѐн на регионы
• У каждого региона – своя оценка стоимости сборки и
  потенциального количества мусора
• Каждый регион знает все внешние ссылки на себя –
  можно собирать произвольный набор регионов
• Вся работа поделена на части предсказуемого
  размера
• Естественная локальность
• Предпочтение собирать регионы где много мусора
• Необходимо использовать достаточно дорогие
  барьеры записи

                                                       20
Коллектор в Azul’s JVM
• Выполняется на специальном процессоре
  (Vega) с аппаратной поддержкой барьеров
  чтения/записи
• 3 фазы: mark, relocate, remap
• Полностью параллельный и конкурентный
• Без длинных STW
• Барьер на чтение может вести к
  перемещению объекта из обработчика
• Подробнее
  http://www.research.ibm.com/mre05/Click.pdf


                                                21
Вопросы

1. Почему гипотеза поколений обычно
   работает?
2. Какой бывает мусор (про какие объекты
   проще или сложнее доказать их
   недостижимость)?
3. Какого рода информация от системы
   исполнения могла бы быть полезна
   коллектору в процессе работы?
4. Попробуйте написать программу на Java
   (например бинарное дерево) без явного
   динамического выделения памяти.

                                           22

Mais conteúdo relacionado

Mais procurados

Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Ontico
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
HighLoad2009
 
2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM
2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM
2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM
Омские ИТ-субботники
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Andrey Smirnov
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Ontico
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
Yandex
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Fuenteovejuna
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
Ontico
 

Mais procurados (20)

Про Git
Про GitПро Git
Про Git
 
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский) Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
Как построить высокопроизводительный Front-end сервер (Александр Крижановский)
 
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел ЕмельяновЖивая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
 
2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM
2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM
2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Сборка мусора в .NET
Сборка мусора в .NETСборка мусора в .NET
Сборка мусора в .NET
 
Krizhanovsky Vm
Krizhanovsky VmKrizhanovsky Vm
Krizhanovsky Vm
 
Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
 

Destaque

20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10
Computer Science Club
 
20080330 cryptography hirsch_lecture07
20080330 cryptography hirsch_lecture0720080330 cryptography hirsch_lecture07
20080330 cryptography hirsch_lecture07
Computer Science Club
 
20080921 introductorycourse itsykson_lecture01
20080921 introductorycourse itsykson_lecture0120080921 introductorycourse itsykson_lecture01
20080921 introductorycourse itsykson_lecture01
Computer Science Club
 
Tejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas Kashalikar
Tejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas KashalikarTejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas Kashalikar
Tejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas Kashalikar
shivsr5
 
b0daecc4-b3c0-49ee-a7dc-71f640523ded-large
b0daecc4-b3c0-49ee-a7dc-71f640523ded-largeb0daecc4-b3c0-49ee-a7dc-71f640523ded-large
b0daecc4-b3c0-49ee-a7dc-71f640523ded-large
Marco Beatrice
 
Por África(Proyecto Solidario) Fotografías Emilio Morenatti
Por África(Proyecto Solidario) Fotografías Emilio MorenattiPor África(Proyecto Solidario) Fotografías Emilio Morenatti
Por África(Proyecto Solidario) Fotografías Emilio Morenatti
maditabalnco
 
Tabernas antiguas de Madrid
Tabernas antiguas de MadridTabernas antiguas de Madrid
Tabernas antiguas de Madrid
maditabalnco
 
Dia 2 mod. i trab y juventud
Dia 2 mod. i trab y juventudDia 2 mod. i trab y juventud
Dia 2 mod. i trab y juventud
Luis Molina
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
Computer Science Club
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture0820100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
Computer Science Club
 
Namasmaran Bestseller On Superliving Dr. Shriniwas Kashalikar
Namasmaran Bestseller On Superliving  Dr. Shriniwas KashalikarNamasmaran Bestseller On Superliving  Dr. Shriniwas Kashalikar
Namasmaran Bestseller On Superliving Dr. Shriniwas Kashalikar
shivsr5
 
20091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture0920091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture09
Computer Science Club
 

Destaque (20)

Distributed Systems, Sync Time and Time ordering
Distributed Systems, Sync Time and Time orderingDistributed Systems, Sync Time and Time ordering
Distributed Systems, Sync Time and Time ordering
 
Amazonia
AmazoniaAmazonia
Amazonia
 
Sunsets
SunsetsSunsets
Sunsets
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10
 
20080330 cryptography hirsch_lecture07
20080330 cryptography hirsch_lecture0720080330 cryptography hirsch_lecture07
20080330 cryptography hirsch_lecture07
 
20080921 introductorycourse itsykson_lecture01
20080921 introductorycourse itsykson_lecture0120080921 introductorycourse itsykson_lecture01
20080921 introductorycourse itsykson_lecture01
 
Tejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas Kashalikar
Tejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas KashalikarTejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas Kashalikar
Tejaswi Drushti Bestseller For Super Eyesight Dr. Shriniwas Kashalikar
 
Marketing
MarketingMarketing
Marketing
 
b0daecc4-b3c0-49ee-a7dc-71f640523ded-large
b0daecc4-b3c0-49ee-a7dc-71f640523ded-largeb0daecc4-b3c0-49ee-a7dc-71f640523ded-large
b0daecc4-b3c0-49ee-a7dc-71f640523ded-large
 
Por África(Proyecto Solidario) Fotografías Emilio Morenatti
Por África(Proyecto Solidario) Fotografías Emilio MorenattiPor África(Proyecto Solidario) Fotografías Emilio Morenatti
Por África(Proyecto Solidario) Fotografías Emilio Morenatti
 
Spring Capitulo 03
Spring Capitulo 03Spring Capitulo 03
Spring Capitulo 03
 
One piece volume 15(127-136)
One piece volume 15(127-136)One piece volume 15(127-136)
One piece volume 15(127-136)
 
Tabernas antiguas de Madrid
Tabernas antiguas de MadridTabernas antiguas de Madrid
Tabernas antiguas de Madrid
 
Actualizaciones juridicas expedientes juridicos
Actualizaciones juridicas   expedientes juridicosActualizaciones juridicas   expedientes juridicos
Actualizaciones juridicas expedientes juridicos
 
Dia 2 mod. i trab y juventud
Dia 2 mod. i trab y juventudDia 2 mod. i trab y juventud
Dia 2 mod. i trab y juventud
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture0820100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
 
Bibliohelp - prezentace APLS 2009
Bibliohelp - prezentace APLS 2009Bibliohelp - prezentace APLS 2009
Bibliohelp - prezentace APLS 2009
 
Namasmaran Bestseller On Superliving Dr. Shriniwas Kashalikar
Namasmaran Bestseller On Superliving  Dr. Shriniwas KashalikarNamasmaran Bestseller On Superliving  Dr. Shriniwas Kashalikar
Namasmaran Bestseller On Superliving Dr. Shriniwas Kashalikar
 
20091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture0920091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture09
 

Semelhante a 20100307 virtualization igotti_lecture04

Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in Java
Andrei Pangin
 
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей РагозинDUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
it-people
 
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
kuchinskaya
 
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Ontico
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
Computer Science Club
 

Semelhante a 20100307 virtualization igotti_lecture04 (20)

Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
 
Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?Multithreading in JS. Myth or reality?
Multithreading in JS. Myth or reality?
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in Java
 
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей РагозинDUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
DUMP-2012 - Только хардкор! - "Секреты сборки мусора в Java" Алексей Рагозин
 
Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]
 
андрей паньгин
андрей паньгинандрей паньгин
андрей паньгин
 
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
CodeFest 2013. Иванов В. — Уменьшение расхода оперативной памяти в Java-прило...
 
Performance optimization effective interaction with virtual machine
Performance optimization effective interaction with virtual machinePerformance optimization effective interaction with virtual machine
Performance optimization effective interaction with virtual machine
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
20100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture0620100314 virtualization igotti_lecture06
20100314 virtualization igotti_lecture06
 
Cassandra:Курс молодого бойца
Cassandra:Курс молодого бойцаCassandra:Курс молодого бойца
Cassandra:Курс молодого бойца
 
Незаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераНезаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервера
 
Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Performance optimization: effective interaction with virtual machine
Performance optimization: effective interaction with virtual machinePerformance optimization: effective interaction with virtual machine
Performance optimization: effective interaction with virtual machine
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 

Mais de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20100307 virtualization igotti_lecture04

  • 1. Несколько реальных коллекторов из Hotspot • Последовательный коллектор • Параллельный коллектор • Конкурентный коллектор • Коллектор с гарантиями реального времени • Garbage-first (G1) 10
  • 2. Общие моменты • Все коллекторы точные • Несколько поколений:  Молодое (YoungGen)  Старое (OldGen)  Перманентное (PermGen) • Различные алгоритмы сборки в поколениях  Копирующий в YoungGen • Перенос объектов в поколение OldGen • Выделение некоторых объектов прямо в OldGen • Различные методы учѐта ссылок между поколениями (барьеры) • YoungGen поделѐн на TLABы 11
  • 3. Барьеры чтения и записи • Минимизация обходимого графа при малых сборках • Обход при малой сборке может не учитывать ссылок в старшее поколение • .. если сборщик может отслеживать ссылки старшего в младшее 12
  • 4. Барьеры чтения и записи • Запись:  При сохранение ссылки на объект в молодое поколение в объекте из старого поколения  При повышении (promotion) объекта в старое поколение • Чтение:  На каждый доступ к объекту  Позволяют исполнять действия при использовании объекта (например перемещение устаревшей ссылки) • Подробнее: http://cs.anu.edu.au/~Steve.Blackburn/pubs/pap ers/wb-ismm-2004.pdf 13
  • 5. Остановка мира (STW) • Достаточно частая и нетривиальная операция • Заморозить все потоки в консистентном состоянии • Продолжить исполнения из этого состояния • Стратегии реализации:  Кооперативная/синхронная  Насильственная/асинхронная • Возможные реализации (?) • Реализация в HotSpot (взаимодействие с JITом) 14
  • 6. Сжатые указатели • Использование 32-битных значений для адресации на 64-битных платформах • Уменьшает объѐм данных для передачи по шине • За счѐт дополнительных вычислений и большей гранулярности • Ptr = (Oop << Shift) + HeapBase • Предполагает непрерывный (в виртуальных адресах) хип • Для x86: obj.field := mov rax, [rbase+oop*Shift+fieldOffset] 15
  • 7. Последовательный коллектор • Относительно простой, надѐжный • Достаточно производительный на небольших хипах (~1G) • Новое поколение:  Копирующий коллектор  Остановка мира (STW) • Полная сборка  Классический mark-sweep-compact последовательный коллектор  Остановка мира (STW) • Преимущества, недостатки 16
  • 8. Параллельный коллектор • Ориентирован на многопроцессорные серверные конфигурации, высокопроизводительный • В принципе, распараллеленная версия предыдущего коллектора • Алгоритмы:  Потоки сборщика по числу логических процессоров  Разделение множества корневых объектов между потоками  Похищение работы для балансировки 17
  • 9. Конкурентный коллектор • Выполняется “почти” параллельно с исполнением кода Java • Мягкие гарантии на паузы • STW чтобы пометить корневой набор • STW для заключительной перемаркировки • Не компактифицирует, выделяет и освобождает используя freelist’ы • Может исполняться всѐ время или периодически • Фрагментация хипа, поэтому:  Пытается объединять freelist’ы  Сильная фрагментация – откат к сериальному или параллельному коллектору 18
  • 10. Коллектор с гарантиями реального времени • Жѐсткие гарантии реального времени для некоторых потоков • Алгоритм Хенриксонна, http://www.cs.lth.se/home/Sven_Robertz/publ/L CTES03-slides.pdf • Сборка при выделении • Преемптивный коллектор, плавающий приоритет 19
  • 11. Garbage-First (G1) • Конкурентный и параллельный копирующий коллектор с мягкими гарантиями на паузы • Хип поделѐн на регионы • У каждого региона – своя оценка стоимости сборки и потенциального количества мусора • Каждый регион знает все внешние ссылки на себя – можно собирать произвольный набор регионов • Вся работа поделена на части предсказуемого размера • Естественная локальность • Предпочтение собирать регионы где много мусора • Необходимо использовать достаточно дорогие барьеры записи 20
  • 12. Коллектор в Azul’s JVM • Выполняется на специальном процессоре (Vega) с аппаратной поддержкой барьеров чтения/записи • 3 фазы: mark, relocate, remap • Полностью параллельный и конкурентный • Без длинных STW • Барьер на чтение может вести к перемещению объекта из обработчика • Подробнее http://www.research.ibm.com/mre05/Click.pdf 21
  • 13. Вопросы 1. Почему гипотеза поколений обычно работает? 2. Какой бывает мусор (про какие объекты проще или сложнее доказать их недостижимость)? 3. Какого рода информация от системы исполнения могла бы быть полезна коллектору в процессе работы? 4. Попробуйте написать программу на Java (например бинарное дерево) без явного динамического выделения памяти. 22