Performance Tuning 101 - An introduction to performance tuning an application in managed environment
This is to share our learnings from performance tuning ThoughtWorks Go(a CI/CD server) across different customer environments, hardware and usage style(s). This will go into fundamentals of the nature of performance testing/tuning problem and brush up dos and don’ts of detecting or fixing performance issues. Usually intution tends to work very poorly in the area of performance tuning, so general rules of the game are very different from feature-development or issue-fixing gigs. This talk aims to look closely at some of the dark corners that we ran into and some patterns we observed while doing performance work on Go.
This talk goes into kind of problems that are usually seen with managed environments, while it uses a Java application as an example to drive the points across, the learning applies to other managed environments as well.
The talk aims to drive the discussion from problems that one would see as user of the subject application, and gets into the root cause(often following it all the way to the hardware) and discusses fix for the pattern of problems that the example falls into.
Obviously such a talk is not enough to equip one to find and fix any kind of performance issues, but it aims to look at majority to very high value fixes that may go a long way in scaling an app vertically.
- Familiarity with at least one managed environment(Java, .Net etc)
- Familiarity with OS basics ( process scheduler, IO scheduler etc)
- Familiarity with memory management(MMU basics, kernel virtual memory management and userspace memory management, garbage-collection etc)
The talk will be driven by two speakers(Pavan KS & Janmejay Singh):
Speaker name: Janmejay Singh
Janmejay Singh is a senior developer and agile practitioner working for ThoughtWorks Inc.
He works on a Continuous Integration(CI) and Continuous Delivery(CD) suite named ‘Go’ which is a ThoughtWorks Studios product and one of the three pillars of ThoughtWorks Adaptive Application Life-cycle Management suite. He is also an active Open Source enthusiast and contributor. He has co-created a one stop test-parallization solution called TLB (Test Load Balancer) and works on and submits patches to several other projects.
He has driven and been a part of performance tuning excercises across several releases of Go. He has been instrumental in finding and fixing various problems ranging from lock contention and memory management to DB query tuning and client-side perceived slowness. In addition to performance analysis and optimization he is also deeply interested in CI, delivery-practices, CD and dev-ops practices, and in the areas of artificial-intelligence, large-scale computing, Linux kernel and data-mining/analysis.
He holds a B.Tech from IIT Roorkee.
Speaker name: Pavan K S
Pavan Sudarshan works as a senior developer in Thoughtworks Studios on the Release Management product called Go.
He is passionate about working on products where Software Engineering and Computer Science meet and compliment each other. He is an expert in Agile & Lean software delivery. He is the creator of the open source library Test Load Balancer and TestEnough. He is also a committer on the open source Swing testing tool Frankenstein. Over the last couple of years, he has built an expertize in massively scaling up software running on the JVM.
He holds a B.E from RVCE, Bangalore