Disk locked just means that your system is waiting on a read or write to or from the hard disk. Not very likely with your current disk set up though.
The one CPU being at 100% is likely your problem. Here's why:
You have a quad cpu system, and a threaded version of perl, but based on your original post, your script isn't making use of the threads. That means that it is going to run serially, thus only making use of one processor. Now, in theory, each 'exec'ed script would fire off on a different processor, but depending on how its being called it might not be the case.
Each user will get partial use of a different CPU. Meaning if 1 user connects he uses CPU1, another connects and she gets use of CPU2. That helps quite a bit. However, User1 can't use cpu1 and cpu2 at the same time. That hurts.