Martin Thompson, TweetHigh-Performance Computing Specialist
Biography: Martin Thompson
Martin is a high-performance and low-latency specialist, with over two decades working with large scale transactional and big-data systems, in the automotive, gaming, financial, mobile, and content management domains. He believes in Mechanical Sympathy, which is applying an understanding of the hardware to the creation of software, being fundamental to delivering elegant high-performance solutions. Martin was the co-founder and CTO of LMAX, until he left to specialise in helping other people achieve great performance with their software. The Disruptor concurrent programming framework is just one example of what his mechanical sympathy has created.
Blog: Mechanical Sympathy
Video presentations: YOW! 2011: Martin Thompson - On Concurrent Programming and Concurrency Folklore
Presentation: TweetPerformance Testing Java Applications
Common wisdom says you should not optimise or performance tune a system until you need to. This seems like very sound advice. However this little bit of advice is missing something really important. How do you know when you need too optimise? All to often this is when a system is in production and not coping with customer load. If we are lucky major issues might be discovered during user testing right before launch. In either case we look bad in front of customers and those paying the bills.
This talk explores when to start performance testing, how to avoid the common pitfalls, how to profile when the results cause your team to pull a funny face, and what you can do about that funny face. Specific issues to Java and managed runtimes in general will be explored, but if other languages are your poison, don't be put off as much of the content can be applied to any development.
Understanding Mechanical Sympathy
- Performance considerations on modern hardware
- How modern x86-64 hardware informs concurrent and high performance programming techniques
- Memory models for software and hardware
- Why contention of any type is the enemy and how to avoid it
- How we manage contention when we absolutely must
- Concurrent and High-performance Algorithm Design
- Lock-free concurrency primitives
- Signalling state change
- Ensuring order
- Preventing speculative execution during critical data exchanges
- Managing contended state
- Wait-free techniques
- API design to avoid the latency J-curve
- Efficient back-off strategies
- Discovering hidden contention and how to avoid it
Keywords: Java, Performance, Concurrency, Lock-Free
Target Audience: Advanced Java programmers with some concurrent programming experience
Computing Requirements: A laptop capable of running 4 concurrent threads and Java 1.6 or 1.7.