Hi,

We use Kettle ETL open source in our project and get some performance issues. We profiled our ETL code and got the following results. Is there any way we can improve the performance? Thanks.

Ey-Chih

===============================================

Top 5 traces of CPU usage:
================

CPU SAMPLES BEGIN (total = 16090398) Thu Mar 22 01:17:55 2012rank self accum count trace method 1 12.24% 12.24% 1969199 318750 java.lang.Object.<init> 2 12.19% 24.43% 1962122 319199 java.lang.Object.<init> 3 12.17% 36.60% 1958034 318877 java.lang.Object.<init> 4 12.10% 48.71% 1947598 320215 java.lang.Object.<init> 5 2.13% 50.83% 341957 320772 java.lang.Object.<init>
All the top 4 traces are about synchronization and the last one is about JavaScript:===================================================================================TRACE 318750: (thread=200020) java.lang.Object.<init>(Object.java:20) java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>(AbstractQueuedSynchronizer.java:481) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter(AbstractQueuedSynchronizer.java:1801) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2016) java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:342) org.pentaho.di.core.BlockingRowSet.getRowWait(BlockingRowSet.java:105)
TRACE 319199: (thread=200022) java.lang.Object.<init>(Object.java:20) java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>(AbstractQueuedSynchronizer.java:481) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter(AbstractQueuedSynchronizer.java:1801) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2016) java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:342) org.pentaho.di.core.BlockingRowSet.getRowWait(BlockingRowSet.java:105)
TRACE 318877: (thread=200021) java.lang.Object.<init>(Object.java:20) java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>(AbstractQueuedSynchronizer.java:481) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter(AbstractQueuedSynchronizer.java:1801) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2016) java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:342) org.pentaho.di.core.BlockingRowSet.getRowWait(BlockingRowSet.java:105)
TRACE 320215: (thread=200027) java.lang.Object.<init>(Object.java:20) java.util.concurrent.locks.AbstractQueuedSynchronizer$Node.<init>(AbstractQueuedSynchronizer.java:481) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter(AbstractQueuedSynchronizer.java:1801) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2016) java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:342) org.pentaho.di.core.BlockingRowSet.getRowWait(BlockingRowSet.java:105)
TRACE 320772: (thread=200026) java.lang.Object.<init>(Object.java:20) sun.org.mozilla.javascript.internal.ScriptableObject$Slot.<init>(ScriptableObject.java:1980) sun.org.mozilla.javascript.internal.ScriptableObject$Slot.<init>(ScriptableObject.java:1980) sun.org.mozilla.javascript.internal.ScriptableObject.addSlotImpl(ScriptableObject.java:1799) sun.org.mozilla.javascript.internal.ScriptableObject.addSlot(ScriptableObject.java:1784) sun.org.mozilla.javascript.internal.ScriptableObject.put(ScriptableObject.java:215)