JVM Tuning & Profiling
P E R F O R M A N C E T U N I N G
C A T A L O G
C A T A L O G @ S N A P D E A L . C O M
Overview
C A T A L O G@ S N A P D E A L . C O M H
Heap Structure
C A T A L O G@ S N A P D E A L . C O M H
GC ProcessObject AllocationFilling up EdenCopying Referenced ObjectsObject AgingAdditional AgingPromotion
C A T A L O G@ S N A P D E A L . C O M
HeapGC OVERHEAD
SURVIVOR SPACE
GC in java - a background job it will involve overheadCan be made faster by using parallelismCan be made faster by reducing heap size - at the cost of more frequent collections and reduced throughput
Helpful in buffering objects so as more and more objectsage expire in young gen as far as possible Main tunable - Survivor size & max age count
C A T A L O G@ S N A P D E A L . C O M
Common Heap Switches-Xms - Sets Initial Heap Size-Xmx - Sets Max Heap-Xmn - Young Gen Size-XX:PermSize - Start Perm Gen -XX:MaxPermSize - Max Perm Gen-XX:+UseSerialGC - Depricated-XX:+UseParallelGC - -XX:+UseParallelOldGC-XX:+UseConcMarkSweepGC
C A T A L O G@ S N A P D E A L . C O M
Common Heap Switches
-XX:ParallelGCThreads-XX:ParallelCMSThreads-XX:+UseG1GC - New Gen collector-XX:CMSInitiatingOccupancyFraction-XX:MaxTenuringThreshold=15-XX:SurvivorRatio=8
C A T A L O G@ S N A P D E A L . C O M
Common Heap Switches
-XX:ParallelGCThreads-XX:ParallelCMSThreads-XX:+UseG1GC - New Gen collectorCMSInitiatingOccupancyFraction-XX:MaxTenuringThreshold=1-XX:SurvivorRatio=8-XX:+PrintGCDetails
C A T A L O G@ S N A P D E A L . C O M
Tuning JVM HeapTradeoff - Responsiveness vs Throughput
Our Tuning Strategy - Read & Write
More the young gen - less promotions & more throughputMore Parallelism in old gen collector - more fragmentation
Admin Nodes - Throughput driven Web - Better latency for good 99, 95% iles
C A T A L O G@ S N A P D E A L . C O M
Issues faced
C A T A L O G@ S N A P D E A L . C O M
Profiling ToolsVisualVM - Monitor
C A T A L O G@ S N A P D E A L . C O M H
Profiling ToolsVisualVM - Sampler/Profiler - Threads
C A T A L O G@ S N A P D E A L . C O M H
Profiling ToolsVisualVM-Sampler/Profiler - CPU Hotspots
C A T A L O G@ S N A P D E A L . C O M H
Profiling ToolsVisualGC - Realtime Heap Graphs
C A T A L O G@ S N A P D E A L . C O M H
Profiling ToolsJava Mission Control-JVM Debugging in detail
C A T A L O G@ S N A P D E A L . C O M H
Profiling ToolsSjk- Java Swiss Knife - CPU Profiling
C A T A L O G@ S N A P D E A L . C O M
Profiling ToolsSjk- Java Swiss Knife - GC
SSA & STCAP
IOSTAT - Disk Stats
SSA - used for taking continuous stack trace dumpTakes thread dump in super dense filesCan be analyzed using stcapstcap - can be used to print complete trace or histogram
C A T A L O G@ S N A P D E A L . C O M H
Profiling Toolsiostat -x 1 100 vda vmstat # pagefaultsdstat -lvrn 5 # All in one tool sysctl -A # Kernel netstat -punta / tcpdumpiftopsar , sar -q , sar -B , sar -b # historysar -f /var/log/sa/ strace
C A T A L O G@ S N A P D E A L . C O M H
Profiling ToolsFio #Disk BenchmarkingSysbench # CPU Benchmarkingjstat/jmap for thread / heap dumpsOracle Java Mission ControlEclipse MAT / IBM MatJVisual VM with Visual GC jvmtop SJK - Java swiss knife - ttop, gc, stcap
Thank You!