By now, many of you have probably heard about the newly
enhanced “execution record / replay” feature of Workstation 6.5. You may
remember this feature being originally introduced (experimentally) in
Workstation 6, and may even have some experience trying it out. However, for a
lot of people this is still an entirely new concept, so let us take a step back
for a minute…
So, what exactly is this feature about? What can you do with
it and what’s so awesome about is it?
Execution record and replay does exactly what its name
implies – it allows you to record the execution of your virtual machine, and
then to play it back later. This is where you may think “Oh, just like a movie,
right?” Well, actually, not at all. 🙂
It’s not just some movie or a video recorded session – but,
rather, much more then that. We are talking about literally recording the
entire execution of your VM as it happens. Not just what you see, but
everything that happens under the hood as well. Events, interrupts, memory,
changes to disk contents, input and output… everything. And when you replay,
you essentially get a carbon copy of what your entire VM was like at the same
point while recording. All of the execution happens deterministically and in exactly the same fashion as it did
while it was recorded! And, since we only record asynchronous events instead of
interpreting every instruction to do this, we have a fairly low performance
So, what’s so cool about that? Well, one advantage of
execution record / replay is its interactivity. For instance, let’s say that
you decided while replaying a session that you would have liked to do something
different then what was done at record time. Maybe you want to alter some of
your actions half-way thorough the recording, or change the settings of some
software running on the VM. Well, you can “take the VM live” as we call it –
essentially, stop replaying and start interacting “live” with it from exactly
the point of your choice. I guess one could think of the recorded session as
prolonged super-snapshot of the VM over a long period of time, which allows you
access and modification of said VM at any point during this time.
And if that’s not exciting enough for you, let me give you
another example of this feature’s power. As everyone who writes code knows, code
tends to have bugs. And some bugs, like cockroaches, tend to be worse then
others. Anyone who has ever had to deal with a deadlock, a race condition, or
any timing-related issue for that matter knows just how annoying and difficult these
problems can be. You are sitting there all pumped up and ready to fix the
problem, but Murphy’s Law guarantees that it just refuses to even happen for
you in the first place – despite anything your try. But sure enough, the second
someone else uses your application – or, better yet, you try to demo it – there
it is. Sigh. And you are just left wishing you could somehow magically capture
the bug as it happens, to be able to investigate it later… But wait, VMware has
just right kind of magic! Record the execution of your VM, catch the issue in
action once, and then have eternal access to it with the virtual debugger.
(Check out Slava’s blog http://stackframe.blogspot.com/
for more details and cool info on debugging inside the guest.)
Well, enough of that. Let’s get to the cutting-edge stuff. What
is actually new in WS 6.5 as compared to the experimental record / replay in WS
6? Quite a lot of things:
record and replay for 32-bit guests on Intel P4, Core2, and Penryn
record and replay for 64-bit guests on Intel Penryn processors
for CD-ROM devices
for USB controllers
– Save the state of the VM in “Markers” while recording,
for faster access during replay.
– Set up disk space quota to limit how large your
recording can grow.
– Set up automatic Markers, which get taken periodically
as you leave your VM.
– Take a “rolling recording”, only saving the last ~30
minutes of it for example.
– Use VAssert to add replay-time only assertions to your
– Easily control replay by pausing, changing
replay speed, and going live at will.
– Browse the recording by dragging the play
slider around and getting a pre-view of the guest state.
– Randomly access any point in the recording by dropping
the slider at the target location.
– Add additional Marker points during Replay
near points of interest.
– Crop your recording from the beginning or
from the end at any Marker.
Overall, there are lots of new and cool things in store for
you. Execution record / replay is a very powerful feature, so much in fact that
it can difficult to truly grasp all of its aspects without trying it out for yourself.
And that’s exactly what I urge everyone to do!
(Thanks to ksc, trowbrds, and slava_malyugin for their help