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 a PAUSE instruction in the received instructions; and inserting a descheduling instruction block in the outgoing stream of instructions to deschedule the virtual machine based upon detection of the PAUSE instruction, wherein the descheduling instruction block inserted in the outgoing stream of instructions is to measure how long the PAUSE instruction has been executed, and to deschedule the virtual machine if the execution time of the PAUSE instruction is longer than a threshold period.