Skip to main content

Multicore Software Development Kit

A set of tools to test, debug and analyze applications targeted for multicore hardware systems.

Date Posted: June 30, 2009

alphaworks tab navigation


 

Update: September 30, 2009
New version adds enhanced deadlock views and analysis session views, improved data collection for AIX/Power systems, and is more stable due to bugs fixes in all components.

 

What is Multicore Software Development Kit?

Multicore architectures have become very popular. To take full advantage of such processor architectures, developers have to introduce parallelism in their software. Developing parallel software is hard and error prone. Different types of tools to deal with concurrency related bugs are required to support the application development process.

The Multicore Software Development Kit (MSDK) for Java is a set of tools that developers can use to test, debug and analyze applications targeted for multicore hardware systems. These tools are capable of analyzing various concurrency related problems in the applications which arise due to different types of memory and synchronization errors. Also, the MSDK contains tools to do lock analysis and synchronization coverage analysis. Writing scalable and high-performance applications requires detailed analysis and profiling tools to help point out problem areas in the code. The MSDK provides tools to do profiling of all layers of the application execution stack.

How does it work?

The tools included in the Multicore SDK comprise of both static and dynamic analysis tools. The following are the set of tools included in MSDK V2.0:

Synchronization Coverage Analysis: A testing tool to figure out whether the different synchronization primitives used in the application code is doing something useful, or whether it is redundant. It is a dynamic tool which uses on-the-fly byte code rewriting techniques to instrument the application.

Orange Box Analysis: Useful for debugging program crashes. It provides the last few (configurable) read/write values of variables by each thread. This is a dynamic analysis tool which uses on-the-fly byte code rewriting techniques to instrument the application.

Race Detection Tool: A debugging tool to detect data races in the application code. This is a dynamic analysis tool which uses on-the-fly byte code rewriting techniques to instrument the application.

Deadlock Detection Tool: A debugging tool to find deadlocks (and potential deadlocks) in the application code. This is a dynamic analysis tool that uses on-the-fly byte code rewriting techniques to instrument the application.

Lock Status Report: Very useful for debugging concurrent applications. It provides details about which thread holds, and which lock waits for a lock, and at what point in the code. This is a dynamic tool which uses on-the-fly byte code instrumentation.

MHP Analysis: A static analysis tool. It does a may-happen-in-parallel analysis and provides the statements that can execute in parallel. This analysis can be used in conjunction with the Race detector tool to reduce overheads and improve performance.

Performance Analysis Tool: A detailed performance analysis tool to figure out performance bottlenecks. It instruments the complete application execution stack. Monitoring of the hardware performance counters, various system calls, operating system thread switches, various Java virtual machine functions and user application can be performed. Detailed profiling data can be visualized during application execution and can also be stored to do post-mortem analysis.

All tools are part of an Eclipse environment. The Performance Analysis tool is platform dependent and runs on x86/Linux. The other tools work with IBM Java 5 or higher.

About the technology author(s)

The design and development of Multicore Software Development Kit was led by Raja Das, a software architect in IBM Software Group. Contributors to the toolkit include Yao Qi, Wei Liu, Zhi Da Luo, all from CDL; Martin Trotter from IBM Hursley Lab; Qi Ming Teng, Xiao Zhong, Hai Chuan Wang, all from CRL; and Peter F. Sweeney from Watson Research Center.

The MulticoreSDK development team acknowledges the encouragement and guidance from Bob Blainey. The team also thanks Eitan Farchi and Yarden Nir-Buchbinder for their help, thanks Zhi Gan and Xiao Jun Dai for their comments to improve MulticoreSDK.

Trademarks




Related technologies