SlideShare a Scribd company logo
1 of 37
Deutsche Bank

Мониторинг и оптимизация GC
AutobahnFX
Содержание

•
•
•

Мониторинг в AutobahnFX
Имплементация мониторинга GC
Настройка GC

Deutsche Bank
Identifier
12/20/2013 9:22:11 AM

Speaker name
Name of event/date
2010 DB Blue template

1
Мониторинг GC. Сбор информации
GC logs
[GC [ParNew: 120772K->6167K(132736K), 0.0719593 secs] 120772K->8703K(4179584K), 0.0723518 secs]
Total time for which application threads were stopped: 0.0750889 seconds

JMX
GarbageCollectorMXBean
long getCollectionCount() Returns the total number of collections that have occurred.
long getCollectionTime() Returns the approximate accumulated collection elapsed time in milliseconds.
+ MemoryPoolMXBean

Command line tools
$> jstat –gc $pid 1000
S0C

S1C

3008.0 3072.0
588

S0U
0.0

S1U

EC

EU

OC

1511.1 343360.0 46383.0

OU

PC

PU

699072.0 283690.2 75392.0

YGC

YGCT

41064.3

FGC

2540

FGCT

18.454

4

GCT
1.133

19.

JVM instrumentation

Deutsche Bank
Identifier
12/20/2013 9:22:11 AM

Speaker name
Name of event/date
2010 DB Blue template

2
Мониторинг GC. Что выбрать
•
•
•
•

GC logs: нужен парсер, парсер нужно ранить
JMX: воздействует на процесс, poor API
Command line tools: воздействует на процесс, нужен парсер +
scheduler
JVM instrumentation(profiler): воздействует на процесс,
проприетарны

Deutsche Bank
Identifier
12/20/2013 9:22:12 AM

Speaker name
Name of event/date
2010 DB Blue template

3
Мониторинг GC. Имплементация. GC log
Типичная запись в логе GC
2013-12-16T08:50:06.258+0000: [GC [ParNew: 59008K->6528K(59008K), 0.0350483 secs]
212101K->169696K(517760K), 0.0354169 secs] [Times: user=0.05 sys=0.00, real
=0.04 secs]
Total time for which application threads were stopped: 0.0372835 seconds

Total time for which application threads were stopped: 0.0007363 seconds

Input parameters
—

59008K – young gen before gc (y1)

—

6528K – young gen after GC (y2)

—

212101K – heap size before GC (h1)

—

169696K - heap size after GC (h2)

—

0.0372835(+) - VM stop times

Captured Parameters
heap cleaned (42405) = h2 (212101) - h1 (169696)

new gen cleaned (52480) = y2 (59008) - y1 (6528)
gc promoted (10075) = new gen swapped - heap collected

Deutsche Bank
Identifier
12/20/2013 9:22:12 AM

Speaker name
Name of event/date
2010 DB Blue template

4
Мониторинг GC. Что мониторится
Величина GC пауз

GC overhead

Deutsche Bank
Identifier
12/20/2013 9:22:12 AM

Speaker name
Name of event/date
2010 DB Blue template

5
Мониторинг GC. Что мониторится
Нагрузка на GC

Heap Size

Deutsche Bank
Identifier
12/20/2013 9:22:12 AM

Speaker name
Name of event/date
2010 DB Blue template

6
Мониторинг GC. Имплементация.
AutobahnFX monitoring portals
• RRD based web portal
• Geneos

Deutsche Bank
Identifier
12/20/2013 9:22:12 AM

Speaker name
Name of event/date
2010 DB Blue template

7
Мониторинг GC. Снимок 1 дня

Deutsche Bank
Identifier
12/20/2013 9:22:14 AM

Speaker name
Name of event/date
2010 DB Blue template

8
Мониторинг GC. Снимок 1 года

Deutsche Bank
Identifier
12/20/2013 9:22:14 AM

Speaker name
Name of event/date
2010 DB Blue template

9
Мониторинг GC. Имплементация. RRD
Достоинства
- Надежные well-known технологии (apache+perl+shell+rrd)
- Высокая производительность
- Низкое потребление диского пространства
- Защита от переполнения
- Встроенные средства визуализации
- Встроенные статистические функции
Недостатки
- Данные агрегируются, raw данные недоступны
http://oss.oetiker.ch/rrdtool

Deutsche Bank
Identifier
12/20/2013 9:22:14 AM

Speaker name
Name of event/date
2010 DB Blue template

10
Мониторинг GC. Имплементация. RRD

Deutsche Bank
Identifier
12/20/2013 9:22:14 AM

Speaker name
Name of event/date
2010 DB Blue template

11
Мониторинг GC. Имплементация. Geneos

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

12
Мониторинг GC. Имплементация. Geneos

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

13
Мониторинг GC. Имплементация. Geneos

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

14
Deutsche Bank

Настройка GC
AutobahnFX
Настройка GC
Зачем настраивать?
•Достигнуть опеределенной величины паузы (max stop time < n millis)
•Улучшить GC в существующем приложении
•Устранить проблему (периодические большие стоп таймы и тп)
Параметры от которых зависит производительность GC
•Характер мусора, генерируемый приложением
•Магические параметры JVM
•Железо
•Версия JVM
•Рантайм окружение

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

16
Настройка GC. CMS

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

17
Настройка GC. Общие правила
Правила которым следуют в AutobahnFX:
• gc лог обязателен
• Детерминированное поведение GC. (Max=Initial для Xmx,
PermGen, NewSize)
• CMSInitiatingOccupancyFraction - обязателен
• +UseCMSInitiatingOccupancyOnly
• +CMSScavengeBeforeRemark
• TenuringThreshold=1
• +DisableExplicitGC

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

18
Настройка GC. CMS. Young Parallel GC
Глобальная стратегия:
Throughput oriented, gc pause < threshold, minimal promotion
Основные параметры оптимизации
•NewSize – время паузы, promotion
•SurvivorRatio - promotion
•ParallelGCThreads – время паузы
•Xmx – время паузы, overhead, стабильность

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

19
Настройка GC. Методика
•
•
•
•
•
•
•

Используйте prod-like hardware
Используйте prod-like нагрузку
Используйте prod-like garbage
Выставите интересующий параметр
Сохраните лог под уникальным именем используя -Xloggc:<file>
Измените оптимизируемый параметр, повторите
Загрузите лог в gchisto

Gchisto https://java.net/projects/gchisto

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

20
Настройка GC. New Size. GcHisto

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

21
Настройка GC. New Size. Overhead

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

22
Настройка GC. NewSize. Pause

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

23
Настройка GC. NewSize
Чем больше Eden:
- больше паузы
- меньше overhead
- меньше gc promotion
- больше sigma пауз
Главный риск undersized Eden
ConcurrentModeFailure + OutOfMemory
AutobahnFX choice:
Максимально приемлимый Eden Size

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

24
Настройка GC. ParallelGCThreads
SLES
Intel(R) Xeon(R) CPU
X5690
2 physical cpus * 6 cores * 2 virtual cores = 24 available cores
Формула от Sun/Oracle:
ParallelGCThreads <= (ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8)
2 cpus = 2 threads
12 cpus = 10 threads
24 cpus = 18 threads

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

25
Настройка GC. Parallel GC threads

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

26
Настройка GC. ParallelGCThreads

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

27
Настройка GC. ParallelGCThreads
Выводы
Начиная с определенного момента прирост от количества трэдов
минимален
В формуле для расчета числа трэдов необходимо подставлять
число физических ядер, без HT
AutobhanFX policy
Не ставить максимальный ParallelGCThreads, особенно если
процесс на боксе не один
* необходимо оставлять доступный CPU параллельно
выполняющимся приложениям
** При увеличении числа new gen трэдов добавляются
дополнительные CMS трэды (CMS numthreads = 1 +
ParallelGCThreads/4)
Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

28
Настройка GC. Xmx

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

29
Настройка GC. Xmx

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

30
Настройка GC. Xmx

Чтобы избежать ConcurrentModeFailure, Promotion Failure
•Достаточный запас свободного места в хипе
•Минимизация Promotion

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

31
Настройка GC. Tenuring Threshold

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

32
Настройка GC. Xmx
Выводы:
Больший Xmx добавляет постоянный GC overhead
Увеличение Xmx с целью сделать CMS более редким приводит на
практике к большим паузам и gc overhead
CMS не должен запускаться часто (1:100 к young gen)
C другой стороны, Xmx должен быть достаточно велик для избежания
Concurrent Mode Failure и OutOfMemoryError
AutobahnFX policy:
Баланс между CMSInitiatingOccupancyFraction, permanent heap liveset
и Xmx
CMSInitiatingOccupancyFraction = 60..70% Xmx
CMSInitiatingOccupancyFraction ~ heap liveset + 30% (depends on
promotion)
Xmx - CMSInitiatingOccupancyFraction => 300mb
Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

33
Настройка GC. Tenuring Threshold
Методика
Включить диагностику
-XX:+PrintTenuringDistribution -XX:MaxTenuringThreshold=10
-XX:InitialTenuringThreshold=10

Смотреть логи:
2013-12-16T16:09:23.417+0000: 49.812: [GC 49.812: [ParNew
Desired survivor size 28388608 bytes, new threshold 4 (max
10)
- age
1:
10573048 bytes,
10573048 total
- age
2:
5387112 bytes,
15960160 total
- age
3:
5367112 bytes,
21327272 total

Смотреть логи
•Если после определенного уровня размеры поколений равны – threshold
нужно уменьшить
•Если размеры поколений уменьшаются линейно – необходимо подбирать
далее
Speaker name
Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Name of event/date
2010 DB Blue template

34
Настройка GC. SurvivorRatio
Методика
SurvivorRatio=1(2)
Если есть ограничения по памяти:
Включить -XX:+PrintTenuringDistribution
Если age 1 = SurvivorSpace, allocate more SurvivorSpace
AutobahnFX policy
Мусор не должен уходить в олдген из-за переполнения Survivor
Space

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

35
Заключение
Оптимальный подход к мониторингу:
gc logs
Минимально необходимый объем мониторинга:
•Продолжительность пауз
•gc Overhead
Haстройка
•Оптимальный collector – CMS
•Настройка GC параметров должна происходит в prod-like
окружении
•Достижение определенных уровней производительности gc
трудноосуществимо подбором параметров JVM
•Настройка GC заключается в нахождении баланса между
throughput, latency & stability

Deutsche Bank
Identifier
12/20/2013 9:22:15 AM

Speaker name
Name of event/date
2010 DB Blue template

36

More Related Content

What's hot

Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Ontico
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахПавел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахYandex
 
СХД для обработки сейсмики: сравнительный обзор
СХД для обработки сейсмики: сравнительный обзорСХД для обработки сейсмики: сравнительный обзор
СХД для обработки сейсмики: сравнительный обзорVsevolod Shabad
 
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмикиМощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмикиVsevolod Shabad
 
Программно-технические комплексы для работы с геолого-геофизическими данными
Программно-технические комплексы для работы с геолого-геофизическими даннымиПрограммно-технические комплексы для работы с геолого-геофизическими данными
Программно-технические комплексы для работы с геолого-геофизическими даннымиVsevolod Shabad
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовMax Lapshin
 
HPC file systems (160761)
HPC file systems (160761)HPC file systems (160761)
HPC file systems (160761)Vsevolod Shabad
 
Управление памятью в CPython
Управление памятью в CPythonУправление памятью в CPython
Управление памятью в CPythonAnton Patrushev
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
Возможности повышения производительности вычислительных кластеров
Возможности повышения производительности вычислительных кластеровВозможности повышения производительности вычислительных кластеров
Возможности повышения производительности вычислительных кластеровVsevolod Shabad
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupMail.ru Group
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Ontico
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellAlexey Lesovsky
 
Azure for IT pro - TechDays Armenia
Azure for IT pro - TechDays ArmeniaAzure for IT pro - TechDays Armenia
Azure for IT pro - TechDays ArmeniaAlexey Bokov
 

What's hot (20)

Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахПавел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
 
СХД для обработки сейсмики: сравнительный обзор
СХД для обработки сейсмики: сравнительный обзорСХД для обработки сейсмики: сравнительный обзор
СХД для обработки сейсмики: сравнительный обзор
 
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмикиМощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
Мощнее или умнее? Возможности оптимизации ИТ-инфраструктуры для сейсмики
 
Программно-технические комплексы для работы с геолого-геофизическими данными
Программно-технические комплексы для работы с геолого-геофизическими даннымиПрограммно-технические комплексы для работы с геолого-геофизическими данными
Программно-технические комплексы для работы с геолого-геофизическими данными
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
HPC file systems (160761)
HPC file systems (160761)HPC file systems (160761)
HPC file systems (160761)
 
Управление памятью в CPython
Управление памятью в CPythonУправление памятью в CPython
Управление памятью в CPython
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Умное кэширование в Rails
Умное кэширование в RailsУмное кэширование в Rails
Умное кэширование в Rails
 
Возможности повышения производительности вычислительных кластеров
Возможности повышения производительности вычислительных кластеровВозможности повышения производительности вычислительных кластеров
Возможности повышения производительности вычислительных кластеров
 
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupDennis Anikin - Tarantool Case Studies in Mail.Ru Group
Dennis Anikin - Tarantool Case Studies in Mail.Ru Group
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
 
Azure for IT pro - TechDays Armenia
Azure for IT pro - TechDays ArmeniaAzure for IT pro - TechDays Armenia
Azure for IT pro - TechDays Armenia
 

Viewers also liked

Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)aragozin
 
Garbage collection in JVM
Garbage collection in JVMGarbage collection in JVM
Garbage collection in JVMaragozin
 
Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?aragozin
 
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)aragozin
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)aragozin
 
Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)aragozin
 

Viewers also liked (6)

Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)
 
Garbage collection in JVM
Garbage collection in JVMGarbage collection in JVM
Garbage collection in JVM
 
Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?Filtering 100M objects in Coherence cache. What can go wrong?
Filtering 100M objects in Coherence cache. What can go wrong?
 
Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)Performance Test Driven Development (CEE SERC 2013 Moscow)
Performance Test Driven Development (CEE SERC 2013 Moscow)
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
 
Cборка мусора в Java без пауз (HighLoad++ 2013)
Cборка мусора в Java без пауз  (HighLoad++ 2013)Cборка мусора в Java без пауз  (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)
 

Similar to Java GC tuning and monitoring (by Alexander Ashitkin)

Архитектура UCCE: компоненты UCCE и их взаимодействие
Архитектура UCCE: компоненты UCCE и их взаимодействиеАрхитектура UCCE: компоненты UCCE и их взаимодействие
Архитектура UCCE: компоненты UCCE и их взаимодействиеCisco Russia
 
Grpahite&amp;grafana
Grpahite&amp;grafanaGrpahite&amp;grafana
Grpahite&amp;grafanaLevon Avakyan
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеAlex Chistyakov
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...SQALab
 
Online adsanalytics slot_no._4__dmitrii_osiiuk_macpaw
Online adsanalytics slot_no._4__dmitrii_osiiuk_macpawOnline adsanalytics slot_no._4__dmitrii_osiiuk_macpaw
Online adsanalytics slot_no._4__dmitrii_osiiuk_macpawAnastasiiaDmytrashyn
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....HOWWEDOIT
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Tanya Denisyuk
 
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...Minsk Linux User Group
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...Ontico
 
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаЭкосистемные Проекты Фрии
 
Платформа GPUDigtiallab
Платформа GPUDigtiallabПлатформа GPUDigtiallab
Платформа GPUDigtiallaboleg gubanov
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Anton Arhipov
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 

Similar to Java GC tuning and monitoring (by Alexander Ashitkin) (20)

Что Google Cloud Platform может дать бизнесу
Что Google Cloud Platform может дать бизнесуЧто Google Cloud Platform может дать бизнесу
Что Google Cloud Platform может дать бизнесу
 
Архитектура UCCE: компоненты UCCE и их взаимодействие
Архитектура UCCE: компоненты UCCE и их взаимодействиеАрхитектура UCCE: компоненты UCCE и их взаимодействие
Архитектура UCCE: компоненты UCCE и их взаимодействие
 
Grpahite&amp;grafana
Grpahite&amp;grafanaGrpahite&amp;grafana
Grpahite&amp;grafana
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...Применение DTrace для оптимизации производительности на примере двух больших ...
Применение DTrace для оптимизации производительности на примере двух больших ...
 
Online adsanalytics slot_no._4__dmitrii_osiiuk_macpaw
Online adsanalytics slot_no._4__dmitrii_osiiuk_macpawOnline adsanalytics slot_no._4__dmitrii_osiiuk_macpaw
Online adsanalytics slot_no._4__dmitrii_osiiuk_macpaw
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
 
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Платформа GPUDigtiallab
Платформа GPUDigtiallabПлатформа GPUDigtiallab
Платформа GPUDigtiallab
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Stairway to Heaven
Stairway to HeavenStairway to Heaven
Stairway to Heaven
 
GPUDigitalLab
GPUDigitalLabGPUDigitalLab
GPUDigitalLab
 
Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)Domain Specific Languages (for business rules)
Domain Specific Languages (for business rules)
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 

More from aragozin

Java on Linux for devs and ops
Java on Linux for devs and opsJava on Linux for devs and ops
Java on Linux for devs and opsaragozin
 
I know why your Java is slow
I know why your Java is slowI know why your Java is slow
I know why your Java is slowaragozin
 
Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)aragozin
 
Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016aragozin
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Javaaragozin
 
What every Java developer should know about network?
What every Java developer should know about network?What every Java developer should know about network?
What every Java developer should know about network?aragozin
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourselfaragozin
 
DIY Java Profiler
DIY Java ProfilerDIY Java Profiler
DIY Java Profileraragozin
 
Java black box profiling
Java black box profilingJava black box profiling
Java black box profilingaragozin
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейaragozin
 
JIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsJIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsaragozin
 
Casual mass parallel computing
Casual mass parallel computingCasual mass parallel computing
Casual mass parallel computingaragozin
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvmaragozin
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherencearagozin
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?aragozin
 
Devirtualization of method calls
Devirtualization of method callsDevirtualization of method calls
Devirtualization of method callsaragozin
 
Tech talk network - friend or foe
Tech talk   network - friend or foeTech talk   network - friend or foe
Tech talk network - friend or foearagozin
 
Database backed coherence cache
Database backed coherence cacheDatabase backed coherence cache
Database backed coherence cachearagozin
 
ORM and distributed caching
ORM and distributed cachingORM and distributed caching
ORM and distributed cachingaragozin
 
Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]aragozin
 

More from aragozin (20)

Java on Linux for devs and ops
Java on Linux for devs and opsJava on Linux for devs and ops
Java on Linux for devs and ops
 
I know why your Java is slow
I know why your Java is slowI know why your Java is slow
I know why your Java is slow
 
Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)Java profiling Do It Yourself (jug.msk.ru 2016)
Java profiling Do It Yourself (jug.msk.ru 2016)
 
Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016Java black box profiling JUG.EKB 2016
Java black box profiling JUG.EKB 2016
 
Распределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на JavaРаспределённое нагрузочное тестирование на Java
Распределённое нагрузочное тестирование на Java
 
What every Java developer should know about network?
What every Java developer should know about network?What every Java developer should know about network?
What every Java developer should know about network?
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself
 
DIY Java Profiler
DIY Java ProfilerDIY Java Profiler
DIY Java Profiler
 
Java black box profiling
Java black box profilingJava black box profiling
Java black box profiling
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
 
JIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutionsJIT compilation in modern platforms – challenges and solutions
JIT compilation in modern platforms – challenges and solutions
 
Casual mass parallel computing
Casual mass parallel computingCasual mass parallel computing
Casual mass parallel computing
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvm
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Devirtualization of method calls
Devirtualization of method callsDevirtualization of method calls
Devirtualization of method calls
 
Tech talk network - friend or foe
Tech talk   network - friend or foeTech talk   network - friend or foe
Tech talk network - friend or foe
 
Database backed coherence cache
Database backed coherence cacheDatabase backed coherence cache
Database backed coherence cache
 
ORM and distributed caching
ORM and distributed cachingORM and distributed caching
ORM and distributed caching
 
Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]Секреты сборки мусора в Java [DUMP-IT 2012]
Секреты сборки мусора в Java [DUMP-IT 2012]
 

Java GC tuning and monitoring (by Alexander Ashitkin)

  • 1. Deutsche Bank Мониторинг и оптимизация GC AutobahnFX
  • 2. Содержание • • • Мониторинг в AutobahnFX Имплементация мониторинга GC Настройка GC Deutsche Bank Identifier 12/20/2013 9:22:11 AM Speaker name Name of event/date 2010 DB Blue template 1
  • 3. Мониторинг GC. Сбор информации GC logs [GC [ParNew: 120772K->6167K(132736K), 0.0719593 secs] 120772K->8703K(4179584K), 0.0723518 secs] Total time for which application threads were stopped: 0.0750889 seconds JMX GarbageCollectorMXBean long getCollectionCount() Returns the total number of collections that have occurred. long getCollectionTime() Returns the approximate accumulated collection elapsed time in milliseconds. + MemoryPoolMXBean Command line tools $> jstat –gc $pid 1000 S0C S1C 3008.0 3072.0 588 S0U 0.0 S1U EC EU OC 1511.1 343360.0 46383.0 OU PC PU 699072.0 283690.2 75392.0 YGC YGCT 41064.3 FGC 2540 FGCT 18.454 4 GCT 1.133 19. JVM instrumentation Deutsche Bank Identifier 12/20/2013 9:22:11 AM Speaker name Name of event/date 2010 DB Blue template 2
  • 4. Мониторинг GC. Что выбрать • • • • GC logs: нужен парсер, парсер нужно ранить JMX: воздействует на процесс, poor API Command line tools: воздействует на процесс, нужен парсер + scheduler JVM instrumentation(profiler): воздействует на процесс, проприетарны Deutsche Bank Identifier 12/20/2013 9:22:12 AM Speaker name Name of event/date 2010 DB Blue template 3
  • 5. Мониторинг GC. Имплементация. GC log Типичная запись в логе GC 2013-12-16T08:50:06.258+0000: [GC [ParNew: 59008K->6528K(59008K), 0.0350483 secs] 212101K->169696K(517760K), 0.0354169 secs] [Times: user=0.05 sys=0.00, real =0.04 secs] Total time for which application threads were stopped: 0.0372835 seconds Total time for which application threads were stopped: 0.0007363 seconds Input parameters — 59008K – young gen before gc (y1) — 6528K – young gen after GC (y2) — 212101K – heap size before GC (h1) — 169696K - heap size after GC (h2) — 0.0372835(+) - VM stop times Captured Parameters heap cleaned (42405) = h2 (212101) - h1 (169696) new gen cleaned (52480) = y2 (59008) - y1 (6528) gc promoted (10075) = new gen swapped - heap collected Deutsche Bank Identifier 12/20/2013 9:22:12 AM Speaker name Name of event/date 2010 DB Blue template 4
  • 6. Мониторинг GC. Что мониторится Величина GC пауз GC overhead Deutsche Bank Identifier 12/20/2013 9:22:12 AM Speaker name Name of event/date 2010 DB Blue template 5
  • 7. Мониторинг GC. Что мониторится Нагрузка на GC Heap Size Deutsche Bank Identifier 12/20/2013 9:22:12 AM Speaker name Name of event/date 2010 DB Blue template 6
  • 8. Мониторинг GC. Имплементация. AutobahnFX monitoring portals • RRD based web portal • Geneos Deutsche Bank Identifier 12/20/2013 9:22:12 AM Speaker name Name of event/date 2010 DB Blue template 7
  • 9. Мониторинг GC. Снимок 1 дня Deutsche Bank Identifier 12/20/2013 9:22:14 AM Speaker name Name of event/date 2010 DB Blue template 8
  • 10. Мониторинг GC. Снимок 1 года Deutsche Bank Identifier 12/20/2013 9:22:14 AM Speaker name Name of event/date 2010 DB Blue template 9
  • 11. Мониторинг GC. Имплементация. RRD Достоинства - Надежные well-known технологии (apache+perl+shell+rrd) - Высокая производительность - Низкое потребление диского пространства - Защита от переполнения - Встроенные средства визуализации - Встроенные статистические функции Недостатки - Данные агрегируются, raw данные недоступны http://oss.oetiker.ch/rrdtool Deutsche Bank Identifier 12/20/2013 9:22:14 AM Speaker name Name of event/date 2010 DB Blue template 10
  • 12. Мониторинг GC. Имплементация. RRD Deutsche Bank Identifier 12/20/2013 9:22:14 AM Speaker name Name of event/date 2010 DB Blue template 11
  • 13. Мониторинг GC. Имплементация. Geneos Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 12
  • 14. Мониторинг GC. Имплементация. Geneos Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 13
  • 15. Мониторинг GC. Имплементация. Geneos Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 14
  • 17. Настройка GC Зачем настраивать? •Достигнуть опеределенной величины паузы (max stop time < n millis) •Улучшить GC в существующем приложении •Устранить проблему (периодические большие стоп таймы и тп) Параметры от которых зависит производительность GC •Характер мусора, генерируемый приложением •Магические параметры JVM •Железо •Версия JVM •Рантайм окружение Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 16
  • 18. Настройка GC. CMS Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 17
  • 19. Настройка GC. Общие правила Правила которым следуют в AutobahnFX: • gc лог обязателен • Детерминированное поведение GC. (Max=Initial для Xmx, PermGen, NewSize) • CMSInitiatingOccupancyFraction - обязателен • +UseCMSInitiatingOccupancyOnly • +CMSScavengeBeforeRemark • TenuringThreshold=1 • +DisableExplicitGC Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 18
  • 20. Настройка GC. CMS. Young Parallel GC Глобальная стратегия: Throughput oriented, gc pause < threshold, minimal promotion Основные параметры оптимизации •NewSize – время паузы, promotion •SurvivorRatio - promotion •ParallelGCThreads – время паузы •Xmx – время паузы, overhead, стабильность Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 19
  • 21. Настройка GC. Методика • • • • • • • Используйте prod-like hardware Используйте prod-like нагрузку Используйте prod-like garbage Выставите интересующий параметр Сохраните лог под уникальным именем используя -Xloggc:<file> Измените оптимизируемый параметр, повторите Загрузите лог в gchisto Gchisto https://java.net/projects/gchisto Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 20
  • 22. Настройка GC. New Size. GcHisto Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 21
  • 23. Настройка GC. New Size. Overhead Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 22
  • 24. Настройка GC. NewSize. Pause Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 23
  • 25. Настройка GC. NewSize Чем больше Eden: - больше паузы - меньше overhead - меньше gc promotion - больше sigma пауз Главный риск undersized Eden ConcurrentModeFailure + OutOfMemory AutobahnFX choice: Максимально приемлимый Eden Size Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 24
  • 26. Настройка GC. ParallelGCThreads SLES Intel(R) Xeon(R) CPU X5690 2 physical cpus * 6 cores * 2 virtual cores = 24 available cores Формула от Sun/Oracle: ParallelGCThreads <= (ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8) 2 cpus = 2 threads 12 cpus = 10 threads 24 cpus = 18 threads Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 25
  • 27. Настройка GC. Parallel GC threads Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 26
  • 28. Настройка GC. ParallelGCThreads Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 27
  • 29. Настройка GC. ParallelGCThreads Выводы Начиная с определенного момента прирост от количества трэдов минимален В формуле для расчета числа трэдов необходимо подставлять число физических ядер, без HT AutobhanFX policy Не ставить максимальный ParallelGCThreads, особенно если процесс на боксе не один * необходимо оставлять доступный CPU параллельно выполняющимся приложениям ** При увеличении числа new gen трэдов добавляются дополнительные CMS трэды (CMS numthreads = 1 + ParallelGCThreads/4) Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 28
  • 30. Настройка GC. Xmx Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 29
  • 31. Настройка GC. Xmx Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 30
  • 32. Настройка GC. Xmx Чтобы избежать ConcurrentModeFailure, Promotion Failure •Достаточный запас свободного места в хипе •Минимизация Promotion Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 31
  • 33. Настройка GC. Tenuring Threshold Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 32
  • 34. Настройка GC. Xmx Выводы: Больший Xmx добавляет постоянный GC overhead Увеличение Xmx с целью сделать CMS более редким приводит на практике к большим паузам и gc overhead CMS не должен запускаться часто (1:100 к young gen) C другой стороны, Xmx должен быть достаточно велик для избежания Concurrent Mode Failure и OutOfMemoryError AutobahnFX policy: Баланс между CMSInitiatingOccupancyFraction, permanent heap liveset и Xmx CMSInitiatingOccupancyFraction = 60..70% Xmx CMSInitiatingOccupancyFraction ~ heap liveset + 30% (depends on promotion) Xmx - CMSInitiatingOccupancyFraction => 300mb Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 33
  • 35. Настройка GC. Tenuring Threshold Методика Включить диагностику -XX:+PrintTenuringDistribution -XX:MaxTenuringThreshold=10 -XX:InitialTenuringThreshold=10 Смотреть логи: 2013-12-16T16:09:23.417+0000: 49.812: [GC 49.812: [ParNew Desired survivor size 28388608 bytes, new threshold 4 (max 10) - age 1: 10573048 bytes, 10573048 total - age 2: 5387112 bytes, 15960160 total - age 3: 5367112 bytes, 21327272 total Смотреть логи •Если после определенного уровня размеры поколений равны – threshold нужно уменьшить •Если размеры поколений уменьшаются линейно – необходимо подбирать далее Speaker name Deutsche Bank Identifier 12/20/2013 9:22:15 AM Name of event/date 2010 DB Blue template 34
  • 36. Настройка GC. SurvivorRatio Методика SurvivorRatio=1(2) Если есть ограничения по памяти: Включить -XX:+PrintTenuringDistribution Если age 1 = SurvivorSpace, allocate more SurvivorSpace AutobahnFX policy Мусор не должен уходить в олдген из-за переполнения Survivor Space Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 35
  • 37. Заключение Оптимальный подход к мониторингу: gc logs Минимально необходимый объем мониторинга: •Продолжительность пауз •gc Overhead Haстройка •Оптимальный collector – CMS •Настройка GC параметров должна происходит в prod-like окружении •Достижение определенных уровней производительности gc трудноосуществимо подбором параметров JVM •Настройка GC заключается в нахождении баланса между throughput, latency & stability Deutsche Bank Identifier 12/20/2013 9:22:15 AM Speaker name Name of event/date 2010 DB Blue template 36