Friday, July 23, 2010

Apache Karaf 2.0.0 Released!

The Karaf team is pleased to announce the availability of Karaf 2.0.0.

Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed. This release is our first as a top level Apache project, and includes a number of new features, improvements and bug fixes.

For more information, please see the release notes.

Thursday, July 8, 2010

Upcoming local events and seminars; July 2010

Up coming event(s) this month:

Department of Computer Science, Memorial University:
Thursday, July 29, 2010 @ 1:00pm, Room EN-2022

Bounds for Communication in Wireless Grids

Coming this Fall:

High Technology Crime Investigation Association, Atlantic Canada Chapter:
October 20, 2010 @ Delta Hotel, St John's NL.
8th Annual Conference.

IEEE Newfoundland and Labrador section, and Memorial University:
Thursday, November 4, 2010 @ Holiday Inn, 180 Portugal Cove Road, St John's NL.
Nineteenth Annual Newfoundland Electrical and Computer Engineering Conference.

Wednesday, July 7, 2010

Testing Parallel Junit testing in Karaf

Recently a new revision of surefire-maven-plugin was released with the new feature of being able to take advantage of JUnit 4.7 parallel testing capabilities by simply configuring the plugin to enable the parallel tests. Seeing that we use the surefire plugin in Karaf I decided to take a quick look to see if we could benefit from this feature.

Test platform: Dell T5400, 2 * Xeon E5410 @ 2.33Ghz, 4 GB Ram,
SCSi Disk. Ubuntu 8.04 (2.6.24-28-generic, amd64),
Maven 2.0.11 and JDK 1.5.0_16. Karaf source version was apache-karaf-1.99.0-SNAPSHOT, rev 961352 (trunk).

Pre-conditions: An initial build of Karaf was performed on the system to eliminate need for maven to download artifacts.

Test: Execute "mvn verify" and record successful build report. For each test case I'll alter the parallel build configuration.

Before attempting to gather metrics on the new plugin's performance with Karaf, I tested the current surefire plugin.

Surefire version 2.3.1

[INFO] BUILD SUCCESSFUL
[INFO] -----------------------------------------
[INFO] Total time: 3 minutes 57 seconds
[INFO] Finished at: Wed Jul 07 13:38:05 NDT 2010
[INFO] Final Memory: 95M/1022M
[INFO] -----------------------------------------


Surefire version 2.5

No Parallel Confguration

[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 4 minutes 16 seconds
[INFO] Finished at: Wed Jul 07 13:47:49 NDT 2010
[INFO] Final Memory: 103M/988M
[INFO] ------------------------------------------

Parallel Classes
Thread Count == Default

Erratic test failures or hangs :(

Parallel Methods
Thread Count == Default

[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 4 minutes 10 seconds
[INFO] Finished at: Wed Jul 07 13:43:01 NDT 2010
[INFO] Final Memory: 98M/976M
[INFO] ------------------------------------------

Parallel Methods
Thread Count == 1

[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 4 minutes 17 seconds
[INFO] Finished at: Wed Jul 07 13:54:15 NDT 2010
[INFO] Final Memory: 102M/1020M
[INFO] ------------------------------------------

Parallel Methods
Thread Count == 2

[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 4 minutes 32 seconds
[INFO] Finished at: Wed Jul 07 14:03:39 NDT 2010
[INFO] Final Memory: 98M/966M
[INFO] ------------------------------------------
 
Parallel Methods
Thread Count == 4

[INFO] BUILD SUCCESSFUL
[INFO] -----------------------------------------
[INFO] Total time: 4 minutes 37 seconds
[INFO] Finished at: Wed Jul 07 14:09:22 NDT 2010
[INFO] Final Memory: 99M/1025M
[INFO] -----------------------------------------

Parallel Methods
Thread Count == 8 (equal to number of real cores on test system)

[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 4 minutes 35 seconds
[INFO] Finished at: Wed Jul 07 14:14:28 NDT 2010
[INFO] Final Memory: 96M/1077M
[INFO] ------------------------------------------

Parallel Methods
Thread Count == Unlimited

[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 3 minutes 43 seconds
[INFO] Finished at: Wed Jul 07 13:32:50 NDT 2010
[INFO] Final Memory: 99M/1054M
[INFO] ------------------------------------------



* Note: It took several runs to have a clean test result with unlimited threads.

Results: Only with unlimited threads enable did I observe an increase in performance of 14 seconds. The failures and hangs observed when using class parallelism could be a target for improvement. Considering these results I'm not inclined to enable parallel tests in Karaf at this time, we will have to revisit this issue on a later revision.