We have in-house a 3rd party java application on a ridiculously hefty Linux box that runs a scheduling algorithm. The application runs far too slow for the load we need. We do not have the code and the vendor won’t be making any changes to the application due to monetary reasons, thus I can’t improve the code. The application is single threaded and its design does not lend itself to parallelization (so I can’t split the load between 2 boxes).
What can I, either software or hardware wise, do to improve performance of the application?
Get on the newest version of Java (newer versions tend to have performance improvements)
Give Java more memory to work with (benchmark to see if this makes any difference)
Measure what it’s doing with
top. Upgrade whatever it’s having problems with (more memory, faster CPU, SSD). Some CPUs are better at single threaded work loads than others (read: don’t run this on a Bulldozer; something with Turbo Boost might be helpful).Play with other experimental JVM options (benchmark to see if this makes any difference)
Remove any other applications running on this machine (benchmark to see if there’s any benefit — no sense wasting money if it doesn’t help)
Pay the vendor to make it faster or give you the code (ie: give them monetary reasons to fix this)
Find an alternative
Write your own alternative