Everything I Ever Learned About JVM Performance Tuning at Twitter (Attila Szegedi, Hungary)

  Рет қаралды 61,568

jeeconf

jeeconf

8 жыл бұрын

During my time at Twitter, I engaged in lots of JVM performance tuning at scale. The talk summarizes lessons that were learned in the process of doing this in the area of memory, CPU, lock contention, and threading tuning.

Пікірлер: 16
@kvba4444
@kvba4444 5 жыл бұрын
Nice talk, a lot of interesting details about gc, thanks!
@sergiisl9012
@sergiisl9012 3 жыл бұрын
Great english as for the non native and quite insightful info and use case described. Thanks)
@ivanocj
@ivanocj 7 жыл бұрын
Moment of truth at 8:42
@bigdlamz
@bigdlamz 4 жыл бұрын
lolz
@PuerinTheHunter
@PuerinTheHunter 2 жыл бұрын
That was right when he was saying "give it more memory!"
@aseemsavio6696
@aseemsavio6696 2 жыл бұрын
I felt it
@somakkamos
@somakkamos Жыл бұрын
Hahahahahahahaha
@j2klegend
@j2klegend 4 жыл бұрын
Term 'Overprovision' confusing me on 39:10, is that what I thought with following JVM settings, -Xms1024M -Xmx1920M -XX:NewRatio=2 -XX:MaxHeapFreeRatio=90 -XX:+UseParallelOldGC As per the settings, I assume that when 90% Old gen Heap get filled, a Full GC will be performed, remaining 10% will be available for the App to allocate while Full GC performs. Somebody please enlighten me...
@berndeckenfels
@berndeckenfels 4 жыл бұрын
This talk did not mention allocation rates, but it features object fat shaming, if this is your thing.
@juliandurchholz
@juliandurchholz 3 жыл бұрын
Slide at 12:40 is inaccurate. JVM object header is normally THREE machine words. One for class word, two for mark word. Zero length arrays are 16B, given that Object headers are 12B with 4B of padding, which the array length is then stored in.
@StefanReich
@StefanReich 2 жыл бұрын
Depends on what you call machine words... Object header is 12 bytes with 64 bit/CompressedOOPS and should be 16 bytes with 64 bit without CompresedOOPS. I just did some testing though and even with -XX:-UseCompressedOops I am seeing 12 byte headers. Huh.
@lartsevevgenii6640
@lartsevevgenii6640 6 жыл бұрын
EPAM)
@rydmerlin
@rydmerlin 6 жыл бұрын
Anytime you talk about tuning garbage collection please indicate latency before and after.
@peterbooth6753
@peterbooth6753 6 жыл бұрын
I spent four years consulting for an electronic trading shop that made a strategic decision to move from the Oracle JVM to the Azul JVM. The scope of this was about 20 applications, over dozen teams, deployed to over 1000 servers. 1. The most dramatic impact was with garbage collection. Applications that would have daily GC pauses that ranged from 100s of ms to seconds now have maximum GC pauses of between 30 micros to 300 micros - well under 1ms. That's because the GC used in Azul's Zing JVM has a continuously compacting collector algorithm that doesn't have any stop-the-world pauses. 2. Second impact, that we hadn't thought about until we saw it was that with such a collector we were better able to make full use of modern hardware. A current server, say an HP DL380 gen9 with dual Intel E5-2667v4 Broadwell CPUs and 512GB of RAM is blisteringly fast. Before this JVM we might have deployed eight identical applications on that host, each with 40GB heaps, to avoid the long GC pauses that would be inevitable with a larger heap. Instead, we can run a single JVM with a 400GB heap and still have GC pauses below a millisecond - but transaction latencies will be much lower because the apps arent contending with each other, there are fewer context switches, it's feasible to pin threads to specific cores and see latenciesof 600us drop to 120us, or less. 3. Third impact was no more wasted tuning GC parameters, and fewer app instances of manage makes for a simpler life. Most Java application pauses are not caused b garbage collection but fixing garbage collection gives you the time to focus on the other causes of OS and application stalls. After using Azul at two workplaces I am convinced that it is the single most underutilized, under-publicized product in high performance Java sites.
@user-zq8bt6hv9k
@user-zq8bt6hv9k 2 жыл бұрын
37:13
@dogwoof5391
@dogwoof5391 Жыл бұрын
java 10 with value types? awkward :)
Java Performance Puzzlers by Douglas Hawkins
46:49
Devoxx
Рет қаралды 28 М.
She ruined my dominos! 😭 Cool train tool helps me #gadget
00:40
Go Gizmo!
Рет қаралды 57 МЛН
Получилось у Вики?😂 #хабибка
00:14
ХАБИБ
Рет қаралды 5 МЛН
G1 Garbage Collector Details and Tuning by Simone Bordet
55:47
Voxxed Days
Рет қаралды 41 М.
Алексей Шипилёв - Java-объекты наизнанку
1:08:03
JPoint, Joker и JUG ru
Рет қаралды 19 М.
The Only Unbreakable Law
53:25
Molly Rocket
Рет қаралды 316 М.
Can C++ be 10x Simpler & Safer?  - Herb Sutter - CppCon 2022
1:54:00
🚀  TDD, Where Did It All Go Wrong (Ian Cooper)
1:03:55
DevTernity Conference
Рет қаралды 550 М.
The Java memory model explained, Rafael Winterhalter
48:01
Bulgarian Java User Group
Рет қаралды 16 М.
G1GC Concepts and Performance Tuning
38:39
Java
Рет қаралды 16 М.
Learn about JVM internals - what does the JVM do?
1:33:35
InfoQ
Рет қаралды 150 М.
Memory footprint of a Java process by Andrei Pangin
51:40
Devoxx
Рет қаралды 34 М.
She ruined my dominos! 😭 Cool train tool helps me #gadget
00:40
Go Gizmo!
Рет қаралды 57 МЛН