A host computer for virtualizing a target multicore processor, the host computer comprising: a host memory including a first section of memory storing a virtual time object (118, 417), and a second section storing a virtual machine, VM, (105, 410), wherein the VM (105, 410) includes target code comprising a plurality of threads, wherein each thread includes a plurality of instructions configured to execute on the target multicore processor; and a host central processing unit, CPU, (100, 402) configured to execute the VM (105, 410) to virtualize the target multicore processor, the VM (105, 410) being configured to: execute the plurality of threads in parallel on corresponding virtual cores (116, 415), including a first thread having a first plurality of instructions executing on a first virtual core and a second thread having a second plurality of instructions executing on a second virtual core; assign a designation to the first virtual core to increment the virtual time object (118, 417) by a first count of the first plurality of instructions executed in the first thread over a first duration; move the designation to the second virtual core in response to detecting an event that defines an end of the first duration; and increment, by the second virtual core, the virtual time object (118, 417) by a second count of the second plurality of instructions executed in the second thread over a second duration; wherein the event includes a halting of execution by the first virtual core (116, 415); wherein the first section of the host memory is mapped to a shared cache level for storing the virtual time object (118, 417). a host memory including a first section of memory storing a virtual time object (118, 417), and a second section storing a virtual machine, VM, (105, 410), wherein the VM (105, 410) includes target code comprising a plurality of threads, wherein each thread includes a plurality of instructions configured to execute on the target multicore processor; and a host central processing unit, CPU, (100, 402) configured to execute the VM (105, 410) to virtualize the target multicore processor, the VM (105, 410) being configured to: execute the plurality of threads in parallel on corresponding virtual cores (116, 415), including a first thread having a first plurality of instructions executing on a first virtual core and a second thread having a second plurality of instructions executing on a second virtual core; assign a designation to the first virtual core to increment the virtual time object (118, 417) by a first count of the first plurality of instructions executed in the first thread over a first duration; move the designation to the second virtual core in response to detecting an event that defines an end of the first duration; and increment, by the second virtual core, the virtual time object (118, 417) by a second count of the second plurality of instructions executed in the second thread over a second duration; execute the plurality of threads in parallel on corresponding virtual cores (116, 415), including a first thread having a first plurality of instructions executing on a first virtual core and a second thread having a second plurality of instructions executing on a second virtual core; assign a designation to the first virtual core to increment the virtual time object (118, 417) by a first count of the first plurality of instructions executed in the first thread over a first duration; move the designation to the second virtual core in response to detecting an event that defines an end of the first duration; and increment, by the second virtual core, the virtual time object (118, 417) by a second count of the second plurality of instructions executed in the second thread over a second duration;