1. A method of managing a distributed-memory parallel application running on multiple servers, comprising: dynamically moving a plurality of executable program components, said plurality of executable program components running on one of a plurality of virtual machines, said moving using migration of the virtual machines between physical servers.