I highly recommend the use of CloudSim which is a highly generalised and extensible Java based simulation tool kit, and is actually regarded as a software framework. It supports several core functionalities like queuing and processing of events, the creation of CloudSim entities, communication among components and the management of the simulation clock.