1. A method, including steps of, in a cluster including a plurality of processors and an inter-node switch, each processor having assigned thereto a separate memory, each separate memory separately coupled to its assigned processor and to the inter-node switch, each processor capable of directly accessing memory assigned to each other processor using the inter-node switch and without using the other processor, whereby the assigned memories are shared, whereby the plurality of processors and their assigned memories form a distributed fault-tolerant multiprocessor cluster capable of continuing operation after failure to access one of the processors or failure to access either a portion or all of one of the memories, identifying a category of application programs into which a selected virtual machine fits, and identifying a current workplace usage associated with the distributed fault-tolerant multiprocessor cluster, to provide a preferred set of real devices on which to execute the selected virtual machine; transferring one or more virtual machines, including the selected virtual machine, between real devices in the distributed fault-tolerant multiprocessor cluster, in response to time-changing resource requirements; measuring use of a plurality of different resources by the selected virtual machine; providing a model of future actual resource usage by the selected virtual machine in response to the steps of measuring, wherein the steps of identifying a category are responsive to the model of future resource usage by the selected virtual machine; and predicting said time-changing resource requirements in response to a result of the steps of identifying a category and the current workplace usage.