Personal tools

Virtual Machines

Cornell University_011121C
[Cornell University]

- Virtual Machines (VM)

A Virtual Machine (VM) is a computing resource that uses software instead of a physical computer to run programs and deploy applications. One or more virtual "guest" machines run on physical "host" machines. Each virtual machine runs its own operating system and operates independently of other virtual machines, even if they are all running on the same host. This means, for example, that a virtual MacOS virtual machine can run on a physical PC. 

Virtual machine technology is used for many use cases in both on-premises and cloud environments. More recently, public cloud services are using virtual machines to provide virtual application resources to multiple users at once for more cost-effective and flexible computing.


- What Is A Virtual Machine For?

Here are a few ways to use a virtual machine: 

  • Build applications and deploy them to the cloud.
  • Try out new operating systems (OS), including beta versions.
  • Launching a new environment makes it easier and faster for developers to run dev-test scenarios.
  • Back up your existing operating system.
  • Access virus-infected data or run old applications by installing an old operating system.
  • Running software or applications on an otherwise unsuitable operating system.


- Hypervisor

While virtual machines behave like separate computers with separate operating systems and applications, they have the advantage of being completely independent of each other and the physical host. 

A piece of software called a hypervisor or virtual machine manager allows you to run different operating systems on different virtual machines at the same time. This makes it possible to run Linux virtual machines on Windows operating systems, or run earlier versions of Windows on newer Windows operating systems. 

Also, since VMs are independent of each other, they are also very portable. You can almost instantly move a virtual machine on a hypervisor to another hypervisor on a completely different machine.


- Virtualization, Inter-VM Scheduling, In-VM Scheduling

The term virtualization refers to the ability of a computer (called a host) to emulate the behavior of one or more computers (guests), e.g. any software that can run on original hardware can also be run on Simulate the way things work seamlessly in a machine. 

In a virtualized environment, multiple activities can be hosted on the same physical hardware in different ways. They may run in different VMs multiplexed on the same raw hardware (inter-VM scheduling), or they may co-exist in the same VM where the OS-level scheduler multiplexes them on the same virtualized hardware Multiplexing (in-VM scheduling), and other VMs may be running the same physical node concurrently on the same virtual machine. 

In all cases, where timeliness requirements are in place, appropriate inter-VM and intra-VM scheduling mechanisms are required to ensure that individual activities exhibit the expected quality of service (QoS) levels. 


- Virtualization and Real-Time 

For time-sensitive developers and designers of software components, virtualization adds a new set of challenging problems that require research to address. 

  • First, new methods are needed to properly account for the effect of virtualization overhead on the execution time of real-time tasks, especially in the presence of virtualization. tualized peripherals that turn I/O-intensive activities into CPU-intensive activities (eg, networking). The ability to migrate virtual machines on different types of hardware adds to the complexity of the problem. For example, in the context of SOA, it is necessary to anticipate the performance of software components when deployed on various physical nodes in order to select the best deployment that provides the performance promised in the Service Level Agreement (SLA). Common methods based on direct measurements of execution time distribution on target hardware are insufficient. A hardware-independent characterization of execution time may be required, as well as a hardware-specific model of execution time variability.
  • Second, when the OS is hosted with other OSes running at the same time, the time measured in the VM may be discontinuous or all at odd granularity. Timer devices are emulated by the virtualization engine, and their resolution can be significantly affected by the inter-VM scheduler and timer virtualization mechanisms (affecting the precision and granularity of timers and clocks). Due to scheduling between virtual machines, the progress of the virtualized operating system is also not as consistent as expected, which can have a large impact on the response time of the virtualized software components. 
  • Finally, multiprocessor and multicore platforms add a new dimension to the real-time virtualized computing problem. Software components written for high-performance parallel machines may not perform as expected when executed in a virtualized environment, especially when running multiple multicore VMs simultaneously. For example, spinlock synchronization primitives (which often rely on the assumption that lock owners running on different processors will release locks within a short period of time) can cause problems if the virtualization layer schedules a virtual machine that owns the lock. Appropriate mechanisms are needed to mitigate these issues. For example, VMWareESX Server3 embeds mechanisms to address such issues, but more investigation is required to understand which solutions are best suited for real-time application requirements. 


- Virtual Desktop Infrastructure (VDI)

Virtual Desktop Infrastructure (VDI) refers to a technology that uses virtual machines to provide and manage virtual desktops. VDI hosts desktop environments on central servers and deploys them to end users on demand.



[More to come ...]



Document Actions