1. A computer program embodied on a computer readable medium, comprising: program instructions for receiving a resource graph describing a storage area network (SAN), the resource graph comprising a plurality of connected resource nodes each providing one or more resources where the resources include processing capability and storage capability for virtual machine applications; program instructions for receiving a collection of applications each requiring a certain amount of CPU resource element and a certain amount of storage resource element; and program instructions for determining coupled placement of the processing requirement element and the storage requirement element of each of the virtual machine applications on a coupled pair of the plurality of connected resource nodes of the storage area network.