i profiled a jdbc/hibernate batch-importer. it takes a csv transforms it slighly and imports it to the database sitting at localhost.
to my surprise the operation was not I/O bound but rather cpu-bound.
according to jmx/jconsole as well as the netbeans profiler it looked like 60% of the cpu time was spent in the “old gen” garbage collector
the rest is used for geometric conversions (this is reasonable) and hibernate session management.
other applications used about 5-10% according to jconsole
so what are “typical” ratios for cpu/young GC/old GC for such batch insert tasks?
Sixty percent is real high. This is often an indication of someone using a lot of temporary Strings, or something similar. The fact that it’s happening in the “old generation” suggests it might be happening in the database end, maybe while waiting for database transactions to happen. But that’s just a horseback guess.
You probably want to make more detailed profiles of the run.