Многоуровневая компиляция в hotspot jvm
DESCRIPTION
@ J1 2012 MoscowTRANSCRIPT
1 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
India 3–4 May 2012
San Francisco September 30–October 4, 2012
2 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Многоуровневая компиляция в HotSpot JVM
Владимир Иванов
Oracle Corporation
3 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
JIT-компиляторы в HotSpot JVM
• Client / C1
• java -client …
• быстро генерирует приемлемый машинный код
• Базовые оптимизации
• Не требуется профиль исполнения кода
• Порог компиляции: 1.5к вызовов
• Server / C2
• java -server …
• Генерирует максимально быстрый код
• Большое количество агрессивных оптимистичных
оптимизаций
• Порог компиляции: 10к вызовов
4 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
JIT-компиляторы в HotSpot JVM Сильные и слабые стороны
• Client / C1
“+” Быстрый старт приложения
“-” Страдает пиковая производительность
• Server / C2
“+” Быстрый код для «горячих» методов
“-” Требуется долгий «разогрев» приложения
5 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Многоуровневая компиляци
Цели
• Взять лучшее от 2 компиляторов
• Производительность кода серверного компилятора
• Скорость запуска, как с клиентским компилятором
• Автоматическая настройка
6 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Сценарий работы
• Начать исполнение в интерпретаторе
• Быстро создать версию C1 для профилирования
• На основе собранной информации скомпилировать
C2
7 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Уровни компиляции
• 5 уровней
• #0: интерпретатор
• профилирование по необходимости
• #1: C1 без профилирования
• #2: С1 с базовым профилированием
• Invocation & backedge counters
• #3: С1 с полным профилированием
• Invocation & backedge counters + MDO
• На 30% медленнее #2
• #4: C2
8 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Профилирование
• Сбор информации о деталях исполнения метода
• Требуется C2 для ряда оптимизаций
• Профилирование происходит на уровнях #0 и #3
• Что интересует
• Ветвления
• Вызовы виртуальных методов
• Проверки типов
• сheckcast, instanceof, aastore
• null-значения
9 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Эргономика
• Порог на изменение уровня зависит от длины
очереди на компиляцию
• Учитывается очередь и С1, и С2
• Приоритизация методов в очереди
10 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Уровни компиляции
0
3
2 1
4
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
11 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Стандартный сценарий
0
3
2 1
4
0 → 3 → 4
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
12 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Компиляция простого метода
0
3
2 1
4
0 → (2,3) → 1
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
13 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Очередь на компиляцию С1 переполнена
0
3
2 1
4
0 → (3 → 2) → 4
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
14 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Очередь на компиляцию C2 переполнена
0
3
2 1
4
0 → 2 → 3 → 4
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
15 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Метод не может быть скомпилирован C1
0
3
2 1
4
0 → 4
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
16 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Деоптимизация
0
3
2 1
4
(1,2,3,4) → 0
0: интерпретатор
1: C1 w/o profiling
2: С1 + basic profiling
3: С1 + full profiling
4: C2
17 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Использование
• -XX:+TieredCompilation
• В скором будущем режим по-умолчанию
– $ java -server …
– $ java -client …
18 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
Q&A
19 Copyright © 2012, Oracle and/or its affiliates. All rights
reserved.
Insert Informaion Protection Policy Classification from Slide 7
India 3–4 May 2012
San Francisco September 30–October 4, 2012