have you profiled your perl program and db resources during a typical run? The perl script is possibly just waiting for a large update/reindex on the db to finish...just guessing...and suspending or running it at lower priority may have zero effect. profile it.
the hardest line to type correctly is: stty erase ^H
Every time i stop the report program, the critical job completes soon after that, like you mentioned the contention for data happens @ db level. since the report program make a large number of discrete query calls, stopping the perl program helps