Along with the advancement in computing technology, users' expectations of computational capabilities are similarly increasing. Users are constantly seeking resources that can provide the ability to achieve a computational result quickly and appropriately. Attending to users requests is complicated by the fact that user projects vary in terms of required processing power, memory allocation, software capabilities, rights licensing, etc. Recently, systems have been organized to include a plurality of virtual machines. Tasks can then be assigned to virtual machines based on the task requirements, the machines' capabilities and the system load. However, given the dynamic nature of assignments and the many components in these systems, monitoring the systems' performance is difficult.