User Tools

Site Tools


user:dshadeck:start

This is an old revision of the document!


Dan's Wiki/Research Journal

This Wiki is a dedicated space for documenting my projects and research!

Hypervisor Performace

Jan 28, 2014

I have decided to document the setup, usage, and performace differences of multiple hypervisors. The intent of this document is to help other Lab46 users ch

Hypervisors can be broken down into two types:

  • Type-1: Native or bare metal hypervisors
  • Type-2: Hosted hypervisors

Type-1

Type-1 hypervisors run directly on the host hardware allowing for hardware control and guest OS managability. Guest operating systmes are then run as processes on the host.

Examples of Type-1 hypervisors:

Type-2

Type-2 hypervisors run on top of existing operating systems much like web browsers or email clients. the hypervisor is then completely dependent upon the host operating system for its functionality.

Examples of Type-2 hypervisors:

Basic System Overview

To get this project going i decided to use one of my personal servers. This is the system i will be using for all testing as to keep a consistent approach to each hypervisor i test. System:

  • Opteron 1385 Quadcore CPU
  • 16GB of 800mhz DDR2
  • 6x1TB 7200RPM HDDs
  • Software Raid 10

OS:

  • Debian 8 (Jessie)

Installation of KVM

The first hypervisor i will be testing is KVM (Kernal Based Virtual Machine)

Step 1. Install KVM & Libvirt from Debian Repository

apt-get install qemu-kvm libvirt-bin

Step 2. To be able to manage virtual machines as a non-root user we will need to add our account to the groups kvm and libvirt

adduser "username" kvm
adduser "username" libvirt

Thats it! Now KVM is ready!

Management Options

KVM can be managed in multiple ways. The most popular approach is mgmt directly from the Linux CLI using virsh. (This is why we installed Libvirt)

duder@hyper1:~$ virsh --connect qemu:///system
Welcome to virsh, the virtualization interactive terminal.
 
Type:  'help' for help with commands
       'quit' to quit
 
virsh # list --all
 Id    Name                           State
----------------------------------------------------
 2     win7pro                        running
 3     Win2012R2                      running
 
virsh # 

virsh # help Grouped commands:

Domain Management (help keyword 'domain'):

  attach-device                  attach device from an XML file
  attach-disk                    attach disk device
  attach-interface               attach network interface
  autostart                      autostart a domain
  blkdeviotune                   Set or query a block device I/O tuning parameters.
  blkiotune                      Get or set blkio parameters
  blockcommit                    Start a block commit operation.
  blockcopy                      Start a block copy operation.
  blockjob                       Manage active block operations
  blockpull                      Populate a disk from its backing image.
  blockresize                    Resize block device of domain.
  change-media                   Change media of CD or floppy drive
  console                        connect to the guest console
  cpu-baseline                   compute baseline CPU
  cpu-compare                    compare host CPU with a CPU described by an XML file
  cpu-stats                      show domain cpu statistics
  create                         create a domain from an XML file
  define                         define (but don't start) a domain from an XML file
  desc                           show or set domain's description or title
  destroy                        destroy (stop) a domain
  detach-device                  detach device from an XML file
  detach-disk                    detach disk device
  detach-interface               detach network interface
  domdisplay                     domain display connection URI
  domfsfreeze                    Freeze domain's mounted filesystems.
  domfsthaw                      Thaw domain's mounted filesystems.
  domfstrim                      Invoke fstrim on domain's mounted filesystems.
  domhostname                    print the domain's hostname
  domid                          convert a domain name or UUID to domain id
  domif-setlink                  set link state of a virtual interface
  domiftune                      get/set parameters of a virtual interface
  domjobabort                    abort active domain job
  domjobinfo                     domain job information
  domname                        convert a domain id or UUID to domain name
  dompmsuspend                   suspend a domain gracefully using power management functions
  dompmwakeup                    wakeup a domain from pmsuspended state
  domuuid                        convert a domain name or id to domain UUID
  domxml-from-native             Convert native config to domain XML
  domxml-to-native               Convert domain XML to native config
  dump                           dump the core of a domain to a file for analysis
  dumpxml                        domain information in XML
  edit                           edit XML configuration for a domain
  event                          Domain Events
  inject-nmi                     Inject NMI to the guest
  send-key                       Send keycodes to the guest
  send-process-signal            Send signals to processes
  lxc-enter-namespace            LXC Guest Enter Namespace
  managedsave                    managed save of a domain state
  managedsave-remove             Remove managed save of a domain
  memtune                        Get or set memory parameters
  metadata                       show or set domain's custom XML metadata
  migrate                        migrate domain to another host
  migrate-setmaxdowntime         set maximum tolerable downtime
  migrate-compcache              get/set compression cache size
  migrate-setspeed               Set the maximum migration bandwidth
  migrate-getspeed               Get the maximum migration bandwidth
  numatune                       Get or set numa parameters
  qemu-attach                    QEMU Attach
  qemu-monitor-command           QEMU Monitor Command
  qemu-monitor-event             QEMU Monitor Events
  qemu-agent-command             QEMU Guest Agent Command
  reboot                         reboot a domain
  reset                          reset a domain
  restore                        restore a domain from a saved state in a file
  resume                         resume a domain
  save                           save a domain state to a file
  save-image-define              redefine the XML for a domain's saved state file
  save-image-dumpxml             saved state domain information in XML
  save-image-edit                edit XML for a domain's saved state file
  schedinfo                      show/set scheduler parameters
  screenshot                     take a screenshot of a current domain console and store it into a file
  setmaxmem                      change maximum memory limit
  setmem                         change memory allocation
  setvcpus                       change number of virtual CPUs
  shutdown                       gracefully shutdown a domain
  start                          start a (previously defined) inactive domain
  suspend                        suspend a domain
  ttyconsole                     tty console
  undefine                       undefine a domain
  update-device                  update device from an XML file
  vcpucount                      domain vcpu counts
  vcpuinfo                       detailed domain vcpu information
  vcpupin                        control or query domain vcpu affinity
  emulatorpin                    control or query domain emulator affinity
  vncdisplay                     vnc display

Domain Monitoring (help keyword 'monitor'):

  domblkerror                    Show errors on block devices
  domblkinfo                     domain block device size information
  domblklist                     list all domain blocks
  domblkstat                     get device block stats for a domain
  domcontrol                     domain control interface state
  domif-getlink                  get link state of a virtual interface
  domiflist                      list all domain virtual interfaces
  domifstat                      get network interface stats for a domain
  dominfo                        domain information
  dommemstat                     get memory statistics for a domain
  domstate                       domain state
  domstats                       get statistics about one or multiple domains
  domtime                        domain time
  list                           list domains

Host and Hypervisor (help keyword 'host'):

  allocpages                     Manipulate pages pool size
  capabilities                   capabilities
  cpu-models                     CPU models
  domcapabilities                domain capabilities
  freecell                       NUMA free memory
  freepages                      NUMA free pages
  hostname                       print the hypervisor hostname
  maxvcpus                       connection vcpu maximum
  node-memory-tune               Get or set node memory parameters
  nodecpumap                     node cpu map
  nodecpustats                   Prints cpu stats of the node.
  nodeinfo                       node information
  nodememstats                   Prints memory stats of the node.
  nodesuspend                    suspend the host node for a given time duration
  sysinfo                        print the hypervisor sysinfo
  uri                            print the hypervisor canonical URI
  version                        show version

Interface (help keyword 'interface'):

  iface-begin                    create a snapshot of current interfaces settings, which can be later committed (iface-commit) or restored (iface-rollback)
  iface-bridge                   create a bridge device and attach an existing network device to it
  iface-commit                   commit changes made since iface-begin and free restore point
  iface-define                   define (but don't start) a physical host interface from an XML file
  iface-destroy                  destroy a physical host interface (disable it / "if-down")
  iface-dumpxml                  interface information in XML
  iface-edit                     edit XML configuration for a physical host interface
  iface-list                     list physical host interfaces
  iface-mac                      convert an interface name to interface MAC address
  iface-name                     convert an interface MAC address to interface name
  iface-rollback                 rollback to previous saved configuration created via iface-begin
  iface-start                    start a physical host interface (enable it / "if-up")
  iface-unbridge                 undefine a bridge device after detaching its slave device
  iface-undefine                 undefine a physical host interface (remove it from configuration)

Network Filter (help keyword 'filter'):

  nwfilter-define                define or update a network filter from an XML file
  nwfilter-dumpxml               network filter information in XML
  nwfilter-edit                  edit XML configuration for a network filter
  nwfilter-list                  list network filters
  nwfilter-undefine              undefine a network filter

Networking (help keyword 'network'):

  net-autostart                  autostart a network
  net-create                     create a network from an XML file
  net-define                     define (but don't start) a network from an XML file
  net-destroy                    destroy (stop) a network
  net-dhcp-leases                print lease info for a given network
  net-dumpxml                    network information in XML
  net-edit                       edit XML configuration for a network
  net-event                      Network Events
  net-info                       network information
  net-list                       list networks
  net-name                       convert a network UUID to network name
  net-start                      start a (previously defined) inactive network
  net-undefine                   undefine a persistent network
  net-update                     update parts of an existing network's configuration
  net-uuid                       convert a network name to network UUID

Node Device (help keyword 'nodedev'):

  nodedev-create                 create a device defined by an XML file on the node
  nodedev-destroy                destroy (stop) a device on the node
  nodedev-detach                 detach node device from its device driver
  nodedev-dumpxml                node device details in XML
  nodedev-list                   enumerate devices on this host
  nodedev-reattach               reattach node device to its device driver
  nodedev-reset                  reset node device

Secret (help keyword 'secret'):

  secret-define                  define or modify a secret from an XML file
  secret-dumpxml                 secret attributes in XML
  secret-get-value               Output a secret value
  secret-list                    list secrets
  secret-set-value               set a secret value
  secret-undefine                undefine a secret

Snapshot (help keyword 'snapshot'):

  snapshot-create                Create a snapshot from XML
  snapshot-create-as             Create a snapshot from a set of args
  snapshot-current               Get or set the current snapshot
  snapshot-delete                Delete a domain snapshot
  snapshot-dumpxml               Dump XML for a domain snapshot
  snapshot-edit                  edit XML for a snapshot
  snapshot-info                  snapshot information
  snapshot-list                  List snapshots for a domain
  snapshot-parent                Get the name of the parent of a snapshot
  snapshot-revert                Revert a domain to a snapshot

Storage Pool (help keyword 'pool'):

  find-storage-pool-sources-as   find potential storage pool sources
  find-storage-pool-sources      discover potential storage pool sources
  pool-autostart                 autostart a pool
  pool-build                     build a pool
  pool-create-as                 create a pool from a set of args
  pool-create                    create a pool from an XML file
  pool-define-as                 define a pool from a set of args
  pool-define                    define (but don't start) a pool from an XML file
  pool-delete                    delete a pool
  pool-destroy                   destroy (stop) a pool
  pool-dumpxml                   pool information in XML
  pool-edit                      edit XML configuration for a storage pool
  pool-info                      storage pool information
  pool-list                      list pools
  pool-name                      convert a pool UUID to pool name
  pool-refresh                   refresh a pool
  pool-start                     start a (previously defined) inactive pool
  pool-undefine                  undefine an inactive pool
  pool-uuid                      convert a pool name to pool UUID

Storage Volume (help keyword 'volume'):

  vol-clone                      clone a volume.
  vol-create-as                  create a volume from a set of args
  vol-create                     create a vol from an XML file
  vol-create-from                create a vol, using another volume as input
  vol-delete                     delete a vol
  vol-download                   download volume contents to a file
  vol-dumpxml                    vol information in XML
  vol-info                       storage vol information
  vol-key                        returns the volume key for a given volume name or path
  vol-list                       list vols
  vol-name                       returns the volume name for a given volume key or path
  vol-path                       returns the volume path for a given volume name or key
  vol-pool                       returns the storage pool for a given volume key or path
  vol-resize                     resize a vol
  vol-upload                     upload file contents to a volume
  vol-wipe                       wipe a vol

Virsh itself (help keyword 'virsh'):

  cd                             change the current directory
  connect                        (re)connect to hypervisor
  echo                           echo arguments
  exit                           quit this interactive terminal
  help                           print help
  pwd                            print the current directory
  quit                           quit this interactive terminal

virsh #

<code cli>

Another approach is to use managment software. I currently use Virtual Machine Manager.

user/dshadeck/start.1430770721.txt.gz · Last modified: 2015/05/04 20:18 by dshadeck