IMO the best solution would be to add command line parameters to set the priorities - both main and heartbeat using relative values, and keep the current behavior if none was given. Ben's example would be 0 for both parameters. Then the error message on startup could just say to set one of the parameters to run the VM (e.g. 0,0 or -1,0, etc). AFAIK you can always decrease the priority of the threads on linux, so 0 and negative values should always work.
Levente