/ Tech /  3 min read

So, what is a virtual machine anyway?

We use the term "Virtual Machine" (or "VM") a lot here at MetaPipe,
but you might not know what that means. This short explanation should
help clear things up a bit.

First, the obtuse, opaque answer: a virtual machine is a computer
within a computer. But I figure that answer is about as clear as mud,
right? So let's try using something else that we can relate to. You
can think of virtual machines as something like a russian nesting
doll. Or better yet, you can think of virtual machines like
Christopher Nolan's Inception. But unlike Inception, you won't
need to pretend like you know what the heck is going on. ¯\_(ツ)_/¯

Originally posted by Dazed

So in the same way that Inception hangs on the idea of a dream
within a dream, virtual machines hang on the idea of a computer within
a computer. When people talk about a virtual machine what they
generally mean is a piece of software that exposes only certain parts
of the underlying hardware to a "guest" operating system (or OS). By
doing this, a computer running, say Linux, can simultaneously run
Microsoft Windows as an application on the desktop. All the features
of Microsoft Windows are then available to you, without the need to
run a separate physical machine or needing to reboot your system into
another Operating System.

Because virtual machine software only exposes limited parts of the
underlying hardware, it wasn't until recently that advanced graphics
workloads could be run on a virtual machine. The VM software running
on the host operating system would only show the guest OS the few
parts that were safe to expose. For instance, CPUs from Intel and AMD
have long supported special extensions to make VM computing both safe
and fast. Within the past few years, GPU makers like Nvidia and
AMD/ATI have done the same with their datacenter video cards, adding specific
extensions to make exposing the GPU to VM guests both safe and
fast. With these new cards available, the last puzzle pieces have now
been put in place to virtualize all the most critical aspects of
general purpose computing.

So, now we have defined what a virtual machine is, but what is the
point of virtual computing? At first glance, it just sounds like a way
to further complicate the Gordian Knot that is modern computing. But
never fear; there are some distinct advantages to virtual computing
that make it well worth my (and your) time to understand and
use. Let's enumerate them as bullet points:

  • Virtual Machines are software.
    • This doesn't seem like much of a point, but I promise that it
      is. As we go down this list I hope you'll see why.
  • Software is easier to modify than hardware.
    • Modifying hardware takes months or years of design and
      fabrication. Software on the other hand, can be modified,
      recompiled and delivered in as little as minutes. When software
      has a bug, it can be fixed and turned around in relatively little
      time. When hardware has a bug, companies often need to go back to
      the drawing board to fix the problem next time.
  • Software is easier to control programmatically than hardware.
    • Software can often have a simple scripting interface that makes
      it easy to control from the outside, like a marionette with
      strings. With raw hardware, it can be difficult to externally
      script things like "turn on", "turn off", "grab another harddrive,
      install it, get the required drivers and then mount it so that the
      operating system can see it." You get the picture.
  • Software is easier to "move" than hardware.
    • To move a piece of physical hardware, you need to, well,
      physically move it. To move software (or in our case, a virtual
      machine), you simply need to copy some files around. Much easier,
      much less error prone, and much easier to repeat over and over.
  • Software can be "ephemeral" at almost no cost. Not so with
    hardware.
    • We can't all go around smashing our hardware at the end of each
      performance like Jimi Hendrix. Or can we? Using virtual machines,
      we can create computers that can be created from scratch almost as
      quickly as it takes to boot up the machine. In fact, that is
      exactly what we try to do at MetaPipe: each time you start a
      machine, it is completely fresh.

    Originally posted by Reverb

And this (#shamelessplug) is where MetaPipe
comes into the picture. We are trying to democratize Virtual Machine
computing and make it easy and accessible to everyone, most especially
to creative professionals who have some of the most extreme computing
needs on the face of the planet.