1. A method comprising: interfacing with a plurality of nodes of a hosting system to collect statistics comprising available resources of each node for hosting virtual machines, wherein each node comprises one of a plurality of different hypervisors that provide different levels of performance for different virtual machine configurations; identifying a set of nodes with sufficient available resources to host a particular user-specified configuration for a virtual machine based on the collected statistics; determining an optimal node from the set of nodes by analyzing, for each particular node in the set of nodes, behavioral characteristics of the particular configuration and performance characteristics of the hypervisor operating on the particular node for the particular configuration, such that the optimal node that hosts the particular configuration yields improved performance than when hosting the particular configuration using any of the other nodes in the set of nodes; and deploying the particular configuration for the virtual machine to the optimal node.