Is this the right configuration of a fully virtualized machine ?!

Hello everyone,

I am kind of new in the virtualization world; I am trying to benchmark the performance of VMs in a paravirtualized and a fully virtualized modes. I have installed Xen 4.2.1 and I have created different VMs through the VMM. I am trying to benchmark the disk performance using fio tool, and I was surprised when I found the results of the fully virtualized VMs are almost the same as the paravirtualized ones, and when I checked the configuration files (of the fully virtualized machines) I found the following:

(domain
(domid 53)
(vcpus_params ((cap 0) (weight 256)))
(PV_args ‘’)
(memory_static_min 0)
(HVM_boot_policy ‘BIOS order’)
(PV_bootloader ‘’)
(pool_name Pool-0)
(auto_power_on False)
(memory_static_max 2147483648)
(cpus (()))
(actions_after_shutdown destroy)
(memory_dynamic_max 2147483648)
(memory_sharing 0)
(superpages 0)
(is_a_template False)
(PV_bootloader_args ‘’)
(memory_dynamic_min 2147483648)
(VCPUs_live 1)
(target 0)
(actions_after_crash restart)
(uuid b34c0913-cb5d-62c8-6198-8515dd2d2eab)
(PV_ramdisk ‘’)
(other_config ())
(name_label winXP-FV)
(PV_kernel ‘’)
(actions_after_reboot restart)
(VCPUs_at_startup 1)
(HVM_boot_params ((order dc)))
(platform
((xenpaging_extra ())
(rtc_timeoffset 0)
(loader /usr/lib/xen/boot/hvmloader)
(serial pty)
(vncunused 1)
(soundhw es1370)
(timer_mode 1)
(hpet 0)
(boot dc)
(parallel none)
(xen_platform_pci 1)
(pci ())
(pae 1)
(vpt_align 1)
(viridian 0)
(acpi 1)
(localtime 1)
(smbios_firmware ‘’)
(vnc 1)
(actmem 0)
(apic 1)
(acpi_firmware ‘’)
(nomigrate 0)
(usb 1)
(tsc_mode 0)
(usbdevice tablet)
(device_model /usr/lib64/xen/bin/qemu-dm)
(xenpaging_file ‘’)
(keymap en-us)
)
)
(VCPUs_max 1)
(Description ‘’)
(pool_name Pool-0)
(bootloader ‘’)
(vcpus 1)
(cpus (()))
(on_poweroff destroy)
(description ‘’)
(on_crash restart)
(uuid b34c0913-cb5d-62c8-6198-8515dd2d2eab)
(bootloader_args ‘’)
(name winXP-FV)
(on_reboot restart)
(maxmem 2048)
(memory 2048)
(shadow_memory 17)
(vcpu_avail 1)
(features ‘’)
(on_xend_start ignore)
(on_xend_stop ignore)
(start_time 1398706105.87)
(image
(hvm
(kernel ‘’)
(superpages 0)
(hpet 0)
(loader /usr/lib/xen/boot/hvmloader)
(smbios_firmware ‘’)
(xen_platform_pci 1)
(rtc_timeoffset 0)
(parallel none)
(pci ())
(localtime 1)
(xenpaging_extra ())
(actmem 0)
(apic 1)
(acpi_firmware ‘’)
(usbdevice tablet)
(xenpaging_file ‘’)
(timer_mode 1)
(vpt_align 1)
(serial pty)
(vncunused 1)
(soundhw es1370)
(boot dc)
(pae 1)
(viridian 0)
(acpi 1)
(vnc 1)
(nomigrate 0)
(usb 1)
(tsc_mode 0)
(device_model /usr/lib64/xen/bin/qemu-dm)
(keymap en-us)
(notes (SUSPEND_CANCEL 1))
)
)
(status 1)
(state ------)
(store_mfn ‘1044476’)
(device
(vif
(bridge virbr0)
(mac 00:16:3e:db:2f:57)
(script /etc/xen/scripts/vif-bridge)
(uuid e9a3e492-cf05-5765-dc3f-5e0df9b42e90)
(backend 0)
)
)
(device
(vbd
(uuid d07bd05f-7f35-599f-55bb-b9dd9bdfa4ef)
(bootable 1)
(dev hda:disk)
(uname file:/var/lib/libvirt/images/winXP-FV.img)
(mode w)
(backend 0)
(VDI ‘’)
)
)
(device
(vbd
(uuid 79ca444a-0de1-2a24-e898-a1f95bbcde91)
(bootable 0)
(dev hdc:cdrom)
(uname phy:/dev/sr0)
(mode r)
(backend 0)
(VDI ‘’)
)
)
(device
(vfb
(vncunused 1)
(keymap en-us)
(vnc 1)
(uuid 3b33c676-4976-e3be-df2c-b5f0c82fab5d)
)
)
)

My question is…Are these configurations (especially the one that are marked in red) are the right configurations of a fully virtualized machine ?! And if they are the right configuration; why do I get such a high performance from a fully virtualized VM ?!

When I checked the configuration of Xen itself throught xm info… I got the following:

(XEN) Xen version 4.2.1_06-1.1.1 (abuild@) (gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]) Mon Feb 25 21:26:36 UTC 2013
(XEN) Latest ChangeSet: 25952
(XEN) Bootloader: GRUB2 2.00
(XEN) Command line: dom0_max_vcpus=2 dom0_vcpus_pin dom0_mem=2048M
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: none; EDID transfer time: 0 seconds
(XEN) EDID info not retrieved because no DDC retrieval method detected
(XEN) Disc information:
(XEN) Found 2 MBR signatures
(XEN) Found 2 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN) 0000000000000000 - 0000000000097c00 (usable)
(XEN) 0000000000097c00 - 00000000000a0000 (reserved)
(XEN) 00000000000e4000 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 00000000bf780000 (usable)
(XEN) 00000000bf780000 - 00000000bf798000 (ACPI data)
(XEN) 00000000bf798000 - 00000000bf7dc000 (ACPI NVS)
(XEN) 00000000bf7dc000 - 00000000c0000000 (reserved)
(XEN) 00000000fee00000 - 00000000fee01000 (reserved)
(XEN) 00000000ffe00000 - 0000000100000000 (reserved)
(XEN) 0000000100000000 - 0000000240000000 (usable)
(XEN) ACPI: RSDP 000FB0C0, 0024 (r2 ACPIAM)
(XEN) ACPI: XSDT BF780100, 0064 (r1 042010 XSDT2051 20100420 MSFT 97)
(XEN) ACPI: FACP BF780290, 00F4 (r3 042010 FACP2051 20100420 MSFT 97)
(XEN) ACPI: DSDT BF7804B0, D0DD (r1 A1234 A1234000 0 INTL 20060113)
(XEN) ACPI: FACS BF798000, 0040
(XEN) ACPI: APIC BF780390, 00D8 (r1 042010 APIC2051 20100420 MSFT 97)
(XEN) ACPI: MCFG BF780470, 003C (r1 042010 OEMMCFG 20100420 MSFT 97)
(XEN) ACPI: OEMB BF798040, 0072 (r1 042010 OEMB2051 20100420 MSFT 97)
(XEN) ACPI: HPET BF78F4B0, 0038 (r1 042010 OEMHPET 20100420 MSFT 97)
(XEN) ACPI: DMAR BF7980C0, 0138 (r1 AMI OEMDMAR 1 MSFT 97)
(XEN) ACPI: OSFR BF78F4F0, 00B0 (r1 042010 OEMOSFR 20100420 MSFT 97)
(XEN) ACPI: SSDT BF79A020, 0363 (r1 DpgPmm CpuPm 12 INTL 20060113)
(XEN) System RAM: 8183MB (8379484kB)
(XEN) Domain heap initialised
(XEN) Processor #0 7:10 APIC version 21
(XEN) Processor #2 7:10 APIC version 21
(XEN) Processor #4 7:10 APIC version 21
(XEN) Processor #6 7:10 APIC version 21
(XEN) Processor #1 7:10 APIC version 21
(XEN) Processor #3 7:10 APIC version 21
(XEN) Processor #5 7:10 APIC version 21
(XEN) Processor #7 7:10 APIC version 21
(XEN) IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23
(XEN) IOAPIC[1]: apic_id 9, version 32, address 0xfec8a000, GSI 24-47
(XEN) Enabling APIC mode: Flat. Using 2 I/O APICs
(XEN) [VT-D]dmar.c:535: RMRR address range not in reserved memory base = bf7dc000 end = bf7dbfff; iommu_inclusive_mapping=1 parameter may be needed.
(XEN) [VT-D]dmar.c:598: The RMRR (bf7dc000, bf7dbfff) is incorrect!
(XEN) Failed to parse ACPI DMAR. Disabling VT-d.
(XEN) Table is not found!
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 2803.568 MHz processor.
(XEN) Initing memory sharing.
(XEN) PCI: Not using MCFG for segment 0000 bus 00-ff
(XEN) I/O virtualisation disabled
(XEN) ENABLING IO-APIC IRQs
(XEN) → Using new ACK method
(XEN) Platform timer is 14.318MHz HPET
(XEN) Allocated console ring of 16 KiB.
(XEN) VMX: Supported advanced features:
(XEN) - APIC MMIO access virtualisation
(XEN) - APIC TPR shadow
(XEN) - Extended Page Tables (EPT)
(XEN) - Virtual-Processor Identifiers (VPID)
(XEN) - Virtual NMI
(XEN) - MSR direct-access bitmap
(XEN) HVM: ASIDs enabled.
(XEN) HVM: VMX enabled
(XEN) HVM: Hardware Assisted Paging (HAP) detected
(XEN) HVM: HAP page sizes: 4kB, 2MB
(XEN) Brought up 8 CPUs
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Xen kernel: 64-bit, lsb, compat32
(XEN) Dom0 kernel: 64-bit, lsb, paddr 0x2000 → 0xa65000
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN) Dom0 alloc.: 0000000234000000->0000000235000000 (505217 pages to be allocated)
(XEN) Init. ramdisk: 000000023c581000->000000023ffff400
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN) Loaded kernel: ffffffff80002000->ffffffff80a65000
(XEN) Init. ramdisk: 0000000000000000->0000000000000000
(XEN) Phys-Mach map: ffffea0000000000->ffffea0000400000
(XEN) Start info: ffffffff80a65000->ffffffff80a654b4
(XEN) Page tables: ffffffff80a66000->ffffffff80a6f000
(XEN) Boot stack: ffffffff80a6f000->ffffffff80a70000
(XEN) TOTAL: ffffffff80000000->ffffffff80c00000
(XEN) ENTRY ADDRESS: ffffffff80002000
(XEN) Dom0 has maximum 2 VCPUs
(XEN) Scrubbing Free RAM: …done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) *** Serial input → DOM0 (type ‘CTRL-a’ three times to switch input to Xen)
(XEN) Freed 264kB init memory.
(XEN) mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining
(XEN) sh error: sh_remove_all_mappings(): can’t find all mappings of mfn 17f4a2: c=c000000000000002 t=7400000000000001
(XEN) sh error: sh_remove_all_mappings(): can’t find all mappings of mfn 17f4a2: c=c000000000000002 t=7400000000000001

Does the parameters marked in red make any difference ?! As far as I understand I don’t need IOMMU/VT-D to be enabled !! I have Intel Virtualizatin Technology enabled in the kernel.

All my OS are 32bits…I am using MS OS (Win XP) as a fully virtualized VM and Linux (Ubuntu 12.04 LTS) as a paravitualized VM.

I apologize for the long post, any help would be appreciated :slight_smile:

Thanks.

I have also installed the paravirtualization drivers on Win XP (GPLPV and SUSE VM Driver Pack) but they didn’t make any difference…any idea why ?!

Based on my understanding,

Any warnings or advice about disk I/O bottlenecks are generally FUD.
When a virtualized file system is placed on top on a real file system, there is typically a direct one-to-one relationship between the blocks (note I am not saying addresses).

So, there should be practically no overhead for today’s virtualization technologies when accessing storage <if properly installed and maintained>. Of course, anything off the beaten path is a wild card.

The main things to be aware of primarily relate to block and partition alignments which primarily relate to where the file system was created and moving them around from one machine to another. Windows partitions don’t align with the beginning of the partition by default (there should not be an issue if you deal only with Linux partitions) and today’s “big” disks to varying degrees depending on the manufacturer implement or support 4k blocks instead of the older 2k block standard.

Mis-alignment for the above reasons will require multiple reads for the same data instead of just one.

So, if you’re looking to optimize, generally you might find things to do elsewhere…

TSU