I seem to have a strange reading on the processor usage of a heavily loaded multi-threaded Java application (started using the Client JVM).
The problem is that even under heavy load, the processor usage peaks at 99.9% (seen using the top system utility on a Debian Linux Kernel 2.6). This seems strange, as the server is an 8 core, and I would thus expect something heading into >100% teritory for heavy load.
Are there any JVM options that I should consider or any system parameters I should have a look into?
I am currently using the following parameters for JVM startup:
java -XX:PermSize=128M -XX:MaxPermSize=512M -Xss1024k -Xms512M -Xmx2048M
The most likely cause of the observed processor usage is that your application has an concurrency bottleneck that is effectively limiting it to the speed of a single thread on average.
Changing JVM options is unlikely to make a significant difference. What you need to use a Java performance analyser to figure out where the bottlenecks are, and figure out how to eliminate them.