As Intel and Advanced Micro Devices battle it out for processor dominance, we as consumers are finding faster and faster computers for increasingly lower prices. Quad core systems are now common place. Recent announcements from Intel on their new Xeon 8 core processors and AMD's 12 core Magny-Cour continue to send processor counts on an upward spiral. This means 16 to 24 available processing cores on a standard two socket system! Not so long ago that was considered a large scale server, but now it's a mainstream server.
Great, there is all this processing power in a small 1u system what can you do with that? Unfortunately software hasn't kept up with the explosion of cores. Many IT professionals are finding that is' easier to move to virtualization than to fully utilize a large system. That has several advantages of course, consolidation of systems, lower costs in power and cooling but there clearly has to be a better way to utilize all those cores. As core counts increase and two socket systems ship with 32 to 48 cores there is only so much virtualization that you can do.
There are software solutions that allow developers to best utilize these cores. Most programming languages have thread constructs that help the developer write multi-threaded applications. As simple devices those constructs are filled with potential pitfalls even for experience developers, with deadlocks, race conditions, and other synchronization issues that hurt performance and limit scalability. Effort into finding ways to work around that by using higher level constructs or programming paradigms are in the works and have been for some time. In some cases whole languages have been written to help here. Some newer ones include Google's Go, Map/Reduce, Scala and many others from decades of research.
Pervasive has a software platform that might help, an easy to use programming paradigm based on Java. Pervasive's DataRush uses a DataFlow programming model that allows the user to concentrate on the application rather than the synchronization issues. A DataRush application can automatically scale from a 4 core development system to a 32 core deployment server without having to rewrite the application. Ease of programming, deployment and all with standard Java! What do others think? Are there any solutions out there that can rival DataRush in terms of performance and ease of programming? Let me know.