Java Performance Tuning

Java(TM) - see bottom of page

|home |services |training |newsletter |tuning tips |tool reports |articles |resources |about us |site map |contact us |
Tools: | GC log analysers| Multi-tenancy tools| Books| SizeOf| Thread analysers|

Our valued sponsors who help make this site possible
JProfiler: Get rid of your performance problems and memory leaks! 

News July 2017

JProfiler
Get rid of your performance problems and memory leaks!


Java Performance Training Courses
COURSES AVAILABLE NOW. We can provide training courses to handle all your Java performance needs

Java Performance Tuning, 2nd ed
The classic and most comprehensive book on tuning Java

Java Performance Tuning Newsletter
Your source of Java performance news. Subscribe now!
Enter email:



JProfiler
Get rid of your performance problems and memory leaks!


Back to newsletter 200 contents

I was going to go into the concurrency axis from my Devoxx talk (slides) this month, but I've been sidetracked by containerization from a slew of articles I saw (a couple make it into this month's news and tools). I fully understand how beneficial a container can be for providing you with an abstraction away from your environment, after all the JVM is itself a container. But you need to be aware that there is a cost to every level of containerization, and you need to know that the benefits you are gaining outweigh those costs.

A note from this newsletter's sponsor

New Relic - Try New Relic today and get your free Data Nerd shirt!
Free SaaS APMto monitor, troubleshoot, and tune apps
running on Websphere, Weblogic, Tomcat, Jetty, JBoss, Solr, Resin

When I say container, maybe you think Docker. But we already have multiple levels of containers before you get there. Starting with the hardware, you have the OS overlaying the hardware, so that's the first container. High performance applications often try to bypass the OS: applications that know exactly how they'll operate IO will use a raw partition so that they avoid the filesystem overheads; applications with the tightest latency constraints isolate cores so that they have direct control of the thread running on a core; applications needing to ensure that data transits with no delay lock the process memory into RAM; there are specialist techniques to bypass the OS for the tightest control over network IO. Most applications prefer to use the "OS container" rather than bypass it because it provides a lot of useful features that you don't need to implement yourself.

The next container if you're running on a virtual OS common to most clouds would be the virtualization layer - and many enterprises have to work around it's limitations. Very low latency applications avoid it, instead using dedicated servers; seriously horizontally scaled applications monitor the performance of each virtual server and actually shutdown services when they detect sufficient contention for resources from competing virtual containers using the shared hardware (which means that if you're NOT doing that, your services are the ones that are losing the battle for shared resources).

The JVM layer, whether running on a real or a virtualized OS, is pretty efficient after 20 years of effort in making it efficient primarily by trading more memory for optimal speed, but there are still some things developers find they try to workaround: memory layout at the cache-line level; reducing object copies; etc. (you'll find many techniques in my previous newsletters)

So if you add another container layer like Docker, you should be aware that you are trading whatever features you're getting for some type of performance consideration - that should be an explicit decision, not an "oh dear" after-the-fact one.

Now on to our usual links to articles, tools, news, talks, blogs. And if you need the tips from this month's articles and talks, as ever they are extracted into this month's tips page.

News

Java performance tuning related news.

Tools

Java performance tuning related tools.

A note from this newsletter's sponsor

Site24x7.com : Deep dive Application Performance Monitoring
Fix performance issues with Java, .NET and Ruby platforms
Monitor app instance at $12/Month. 30-day free trial. Sign Up!

Articles

Jack Shirazi


Back to newsletter 200 contents


Last Updated: 2017-10-01
Copyright © 2000-2017 Fasterj.com. All Rights Reserved.
All trademarks and registered trademarks appearing on JavaPerformanceTuning.com are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries. JavaPerformanceTuning.com is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
URL: http://www.JavaPerformanceTuning.com/news/news200.shtml
RSS Feed: http://www.JavaPerformanceTuning.com/newsletters.rss
Trouble with this page? Please contact us