Monday Feb 16, 2015

Oracle Solaris 11 and Pluribus - application-awareness in the cloud

Talk to any executive of any leading enterprise company and they will tell you that they are embracing cloud computing for the future of their business.  And with the rapid growth of turnkey cloud computing solutions, the network fabric carrying the application packets is emerging as a key focus to drive greater performance, reliability, and efficiency of the application.  Networks need to be able to prioritize packet flow according to the importance of the application.  So if an application is of high importance to their business, the network fabric should be able to know that, and provide the necessary resource to ensure high performance of that application is delivered.

Oracle Solaris 11.2 and Pluribus Networks are providing an integrated solution for doing just that.
You can read about it in a recently release solution brief: 

Oracle Solaris 11 and Pluribus Networks - Enabling Application-Driven SDN in the Cloud

This is an integrated solution for controlling the network in real-time, by combining Oracle Solaris 11.2 built-in application driven software-defined networking (SDN) with Pluribus Networks bare-metal network Hypervisor.   This solution offers fine-grained QoS services, allowing for different tenants, applications, and even flow within applications, to be assigned SLAs to leverage the high-end router-class traffic manager and the network processing unit on the Pluribus platform. Applications become network aware so they can monitor congestions, errors, and latency across the fabric, allowing them to dynamically adjust their network resource requests.

In addition, there is a short (6 min) video interview on this topic with Founder and CTO of Pluribus Networks, Sunay Tripathi:  Oracle and Pluribus Ally on Software Defined Networking

For additional details on Pluribus Networks solutions, visit

Thursday Jan 15, 2015

Webinar: Start Testing Your Application Code Today!

Oracle ISV Engineering is offering an exciting opportunity to learn about the NEW offering for developers who want early access to the revolutionary Software in Silicon technology in the forthcoming Oracle SPARC M7 processor running Oracle Solaris 11.  In this LIVE webinar (8:00am PST on Jan 21), developers will learn how to use the NEW Software in Silicon Cloud to dramatically improve reliability and security, and accelerate application performance in today‚Äôs market.

Course Title:    Oracle's Software In Silicon Features Available for Developers Today!
Target Audience:  Application Developers with experience on Oracle Solaris
Event Date:    January 21, 2015
Event Time:    8-9:00am PST (Pacific Standard Time)

** Replay of this webinar available HERE **

Software in Silicon implements accelerators directly into the processor to deliver a rich feature-set that enables quick development of more secure, robust, reliable, and faster databases and applications.  With the Oracle Software in Silicon Cloud, developers can have a secure environment in which to test and improve their software as well as exploit the unique advantages of Oracle's Software in Silicon technology.  Angelo Rajadurai, Software Engineer with ISV Engineering, will provide an explanation of the technical details of the Software In Silicon features and a demonstration of how developers can use the Software in Silicon Cloud to test these features on their applications today.

Wednesday Jan 14, 2015

Java 8 Parallel Streams on SPARC T5

I showed on this previous post how a parallel word search implemented by Java 7 fork/join (based on this article) scales on a T5-4 server. Java 8 new features let the code needed for the same parallelism become much more simple, compact, and readable. Parallel streams and lambda expressions spare us from many helping classes and methods definitions we needed to create before.

Here is how to add Java 8 parallel streams support to the word search example. Looking at the code of the above fork/join article (can be downloaded from here), we can easily avoid all recursive tasks and all fork/join code by replacing (or adding to, to compare) the WordCounter.compute() method with computeWithStreams(). We still keep the same parallel processing:
 // computeWithStreams() performs word counting by parallel streams
 public long computeWithStreams()
    List<Document> docList = Document.getDocList();
    return dlist.parallelStream().
    	   mapToLong(d -> occurrencesCount(d, searchedWord)).

The parallelStream() method inside the computeWithStreams() method shown above automatically creates the threads parallelism behind the scenes. The current Java 8 implementation of parallel streams uses the fork/join mechanism, so the performance gain remains the same as using fork/join directly. 

The rest of the code here is the helper code for preparing the documents list and call computeWithStreams(). First We need to add this static field and a static getter method to the Document class:

    // Listing all documents statically in Document class. Not necessarily a good practice,
    // but for the sake of showing the main idea here
    List<Document> docList = Document.getDocList();

 Then we populate this list with each of the generated documents (at the end of Document.fromFile() method). Instead of: 

    return new Document(lines);

we add:

    Document Doc = new Document(lines);
    return doc;

Finally, we just add the code to the main() method (just after the same single and fork/join calls):

    long[] parallelStreamTimes[i] = new long[repeatCount];

    for (int i=0; i<repeatCount; i++) {
        counts = wordCounter.computeWithStreams(args[1]);
        stopTime = System.currentTimeMillis();
    	parallelStreamTimes[i] = (stopTime - startTime);
    	System.out.println(counts + " , parallel streams search took " + parallelStreamTimes[i] + "ms");

My next post will deal with how to observe the parallelism created behind the scenes, and how to troubleshoot parallelism (scalability) problems. Meanwhile, take a look at how to run Java faster on Solaris.

Saturday Jan 03, 2015

Happy New Year 2015!

Wishing everyone around the world all the best in the New Year!

ISV Engineering
Oracle Corp


How open innovation and technology adoption translates to business value, with stories from our developer support work at Oracle's ISV Engineering.



« March 2015