1. A method of scheduling virtual machines running on at least one processor, comprising: receiving instructions of a virtual machine for binary translation at a binary translation layer, the binary translation layer generating an outgoing stream of instructions for execution on the at least one processor; detecting instructions forming an idling loop in the received instructions; and inserting instructions in the outgoing stream of instructions for descheduling the virtual machine based upon detection of the instructions forming the idling loop.