General questions

Do you have benchmarks? What are the industry accepted benchmarks?

We don't know of any industry accepted benchmarks in this field. We have conducted testing internally and some of the tests showing speedup are shown on www.axon7.com at: 

http://axon7.com/flx/home/jibu_in_depth/the_scheduler/ 

http://axon7.com/flx/home/jibu_in_depth/the_parallel_class/  

 

We plan to conduct further tests in the near future - also comparing Jibu to the competitions.

Competition

Can't I get the performance I need with load balancing or other forms of distributed computing?

Jibu is complementary with load balancing through distributed computing. Today you really need both load balancing and Jibu, because grids are almost 100% built on multi-core servers. Jibu give the ability to get the full throughput of multi-core servers.

Don’t Intel, RogueWave, Sun, and Ace provide this?

Yes and no. Jibu’s main advantage is that it is suited for traditional applications that need to max out the machine but also for programs where event-based coordination is needed such as GUI applications, embedded systems, robotics, etc. Also, the API is kept as simple as possible to reduce the learning curve. Finally, Jibu is both cross platform and cross language.

Won't Java7 provide what I need?

What is currently disclosed about Java 7 concurrency features is the Fork/Join framework which resembles parts of Jibu closely. Additionally, the preliminary specs mention a TransferQueue which seem similar to the Jibu Channel inspired by CSP. However, we are comparing a product (Java 7) expected for release in the beginning of January 2009 to an existing commercially available product. Jibu will continue to evolve during this period and the scheduled release date for Java 7 will probably also change.  

Another key difference is that Jibu works for all major languages. So, you can use one approach in all you applications - Simpler. That is why we say Jibu is "Simply Faster"

won't MapReduce/Hadoop meet my needs?

MapReduce is aimed at clusters of many computers and not for the same shared memory applications that Jibu can be used for. The same goes for Hadoop.

Won't platform or OS vendors give me all I need?

The key thing missing from existing OS vendors and platforms is a uniform high-level approach that deals equally well with performance oriented multi-core programming and traditional event-based concurrent programming.  

Providers of operating systems typically supply API's that enable programmers to do basic things such as I/O, basic threading etc. upon which vendors of programming languages and libraries can build more advanced products and features. 

Even though most programming languages are supplied with threading libraries, and third party products exists -- some of which include functionality which overlaps with Jibu -- no other players provide as much functionality on as many programming languages and platforms. 

Jibu provides a uniform approach across 4 of the most widespread languages. It contains constructs that make it simple to utilize all the processing power in a given system. It also provides constructs inspired by CSP (Communicating Sequential Processes) that make traditional concurrent programming very easy.

Won't this be provided in Java7 with JSR 166?

The initial spec JSR 166 is already embedded into Java and what is now being worked on for Java 7 is JSR166y. See the above comment. Jibu contains features not in JSR 166y and vice versa and the API is quite different. Also remember that, with Jibu, the actual concurrency code is trivial to port to .NET, C++ and Delphi.

Jibu

Do I need a separate compile for each h/w platform for each language? eg: Java on Intel, Java on SPARC, etc.

: Depends on the language. The Java version should run unchanged regardless of platform. The supported platforms have been described previously. The Mono-implementation of .NET will also make it possible to run a .NET application on the Mono platform without changes. When using C++, a recompile is needed when going to other platforms. Right now only Windows is supported but when Linux/Solaris versions are available a recompile will be needed for an existing Jibu program using C++ for Windows to run on Linux/Solaris.

Do I need to recompile all my existing applications?

Yes recompile and rewrite. Jibu is not a magic bullet that can automatically transform existing sequential programs in to high performing parallel programs. However, Jibu makes the process of rewriting an existing program much easier than it would have been using traditional thread programming. Jibu also makes creating new applications that scale to an arbitrary number of cores on the fly, very easy.

Does Jibu impact performance due to additional code?

Not significantly. As Jibu is a software library that adds code on top of the code written by the programmer there will be an overhead - code takes time to execute, which is unavoidable. What is more interesting is whether code using Jibu is slower than code written from scratch by the programmer. Except in trivial cases, Jibu will be faster because all cores are exploited automatically and the load is distributed dynamically among cores ensuring maximum core utilization. Also, the number of threads run by Jibu is kept as close as possible to the number of cores in the machine executing the program in order to obtain the best concurrency level possible - eliminating the need for superfluous and time consuming context switches. 

As all machines are going multi-core the gains realized when scaling a program to take advantage of all cores vastly outweighs the overhead incurred by the library itself. 

Another performance measure might be how long it takes to develop, debug and maintain an application and here Jibu is clearly superior to normal thread programming because much of the low level stuff like thread handling, synchronization and load balancing is abstracted.

Does Jibu take advantage of the 4 Hardware threads per core in Sun's 8 core chips? and/or Intel 'hyperthreading'?

Jibu is designed to do this. It hasn't been tested on Sun chips yet but only on x86. We plan to test on Sun chips within the next couple of months.

Does the system "learn" the optimal scheduling of jobs/threads?

No, not at this time. We are thinking about various advanced modifications to the Jibu scheduler but nothing has been decided yet.

Is there a fine grain control? for admin? programmatic interface to scheduling?

No control for an administrator and very limited control for a programmer. The only influence with regard to scheduling possible for a programmer is deciding whether to run tasks as separate designated threads or through the Jibu scheduler.

What if I have a mix of 2, 4, and 8 core servers? Do I have to tune and recompile my application for each type of server?

No not if you include scalability in the equation from day one -- which Jibu makes very easy. It is of course a requirement that the problem at hand can be parallelized, but this is always the case, and has nothing to do with Jibu.

What is a thread-hot API? Why is it important?

Thread-hot is a term used to describe an API where the programmer using that API doesn't see the threads at all but interacts only with high-level objects. All thread management is hidden and scalability issues are handled automatically inside the library. Jibu is a thread-hot API where the programmer only uses tasks instead of threads. Inside Jibu, tasks are automatically mapped to threads and executed and the number of threads is automatically adjusted to match the number of cores on which the program is executing.  

Removing a lot of the complexity arising from programming multi-core computers results in reduced training and development time as well higher quality products containing fewer bugs. 

What is the memory usage? Does Jibu increase my memory requirements?

Yes slightly, but not much. The library itself is rather small so memory consumption shouldn't be an issue unless millions of Jibu tasks are created and run.

What is the thread-hot scheduling algorithm? Is it configurable?

Scheduling algorithms in thread-hot API's are probably different. In Jibu, tasks are normally scheduled for execution in the order they are created and run by the programmer (the order might be reversed when load balancing kicks in). A task is never pre-empted which basically means that, once it is assigned a thread and begins execution, that thread will do nothing else until the task is done - the thread executing the tasks are controlled exclusively by the Jibu scheduler which is not configurable. If, for some reason, a programmer decides that a certain task should run in a designated thread it is possible to create tasks that are run as normal threads bypassing the Jibu scheduler.
Tools

Are there tools to show how much CPU and/or memory is being under-utilized by my applications right now?

There are profilers showing the workload of each core available from other vendors - Intel does some profiling tools that might be useful. Microsoft also include a profiler in certain editions of Visual Studio.  Other profiling tools are also available. Most tools available only support certain platforms and languages.

Does Axon7 provide the tools, or profiler? Or do I need to use another profiler?

Axon7 does not provide additional tools at this time but that may be an option in the future. A beta version of a dedicated Jibu profiler may be available during the spring.

What are Axon7 plans regarding Open Source?

At this time Open Source is being considered. Specifically we contemplate making the non-commercial edition open source, but nothing has been decided yet. Another option being considered is giving paying customers access to the Jibu source code.

 

Licensing

Does the service contract include upgrades? or just bug fixes?

The standard service contract includes upgrades as well as bug fixes.

If my programmers are writing in Java, .NET and C++, do I need to buy each version of Jibu for each programmer?

Yes. If the same programmer programs in both Java, .NET and C++ a license for each version is required.
Privacy Statement | Terms Of Use
Webdesign: Dudal Webdesign