|The days of sitting around reading about|
performance coding are go. We don't
have time to sit around, we need to do it!
Software performance matters now in a way it has not for decades; We really do live in a different world.In response to my previous post I was asked "does any one care?" i.e. does anyone in the Java community, or any regular day job Java coder, actually care about high performance features like POD and serialisation?
It is a good question but I think one from yesteryear. Things have changed over the last decade a great deal. One way they have changed has been in the quantifiable cost of compute power. Once upon a time, servers were quite underused; often machines would be 10% loaded. Further, a website, payment system or data warehouse would run off a computer (yes - a single computer). Big systems might have had two or even four servers and a hot standby. The cost of the hardware was granular and only considered once every two of three years. A 10% performance gain in the software made no measurable impact on cost. If a system needed a Sun E1600 (or what ever) and then the system was made 10% faster, it still needed an E1600 so the hardware cost did not change.
"You cannot manage what you cannot measure"
Now all the above systems will be running on a cluster, grid or cloud. Reducing a web site from 100 nodes to 90 nodes has an instant, quantifiable financial benefit (your bill reduces instantly). Suddenly the cost of inefficient programs is just that - a cost.
Probably the single best example of a system which would turn POD into saved dollars (or Euros or whatever) is distributed caching. Memory caching is the very life blood of large websites and big data processing. Writing stuff too and from disk is intolerably slow so we cache query results in RAM. But - we cannot cache all the results on one machine because that would form a huge bottleneck; we distribute the caching across a mesh of nodes and the data in the cache is shared out much like a modern NUMA hardware architecture but on a data centre scale. So, we have caches distributed over many nodes and clients moving data in and out of these caches.
Do you see the pattern yet?
Here are a few more real world cash benefits to POD and direct off heap access for all POD types:
1) Compute grids for the inter-node communication of queries and results.
2) Pumping database objects over JNI for JDBC drivers.
3) Distributed column based databases.
|Photons to the chip will utterly transform the way|
we think about node interconnect.
5) Map/Reduce data mining.
Consider this, eventually DMA and other fast interconnect technologies will revolutionise inter node communications in clouds. Fibre to the chip (see Silicon Photonics) will fundamentally reduce latency and hugely increase throughput between the off heap memory of individual processes distributed across grids and in the cloud. As this happens, the current cost of moving data on and off heap for Java will change form a quantifiable cost to a game changing barrier. Nothing in the current JVM road map is preparing this powerful, yet increasingly old fashioned, technology for the onslaught of serialisation demands which are coming.