When you submitted the job, what was the Threads setting set to? If you set it to 0, it should use the optimal number of threads for each machine it renders on. Maybe it’s set to 1 or 2?
Are the files all access the same way? e.g. Do you have a central server that all slaves and workstations can see?
Whenever i see a CPU graph down like that, i always check network bandwidth on the slaves and the server. For comparison sake you should launch the job locally and compare the graph to only one slave that is rendering that job at a time.