1. A computer implemented method of mirroring contents of a primary host computer system onto a secondary host computer system, the method comprising: tracking changes for each of a plurality of memory pages for one or more primary host virtual machines; tracking changes to a plurality of processor states for one or more primary host virtual machines; responsive to an occurrence of a checkpoint, stopping one or more of the primary host virtual machines; determining for the memory pages, if at least one particular memory page of the plurality of memory pages is a frequently changed memory page; in response to at least one particular memory page being a frequently changed memory page, marking the frequently changed memory page as writeable and copying the frequently changed memory page to a buffer; in response to a memory page being infrequently changed, marking the infrequently changed memory page as read only; resuming the one or more primary host virtual machines; transmitting a copy of the memory pages, the buffer, and the changes to the processor states to the secondary host; maintaining a count of a number of checkpoint windows that each memory page is written to; generating a new checksum for each of the frequently changed memory pages; comparing the new checksum to a previous checksum for each of the frequently changed memory pages; and responsive to the new checksum being equal to the previous checksum, decreasing the count associated with each of the frequently changed memory pages.