Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Apr 2015 17:58:46 +0000
From:      Andrew Daugherity <adaugherity@tamu.edu>
To:        "freebsd-xen@freebsd.org" <freebsd-xen@freebsd.org>
Subject:   Re: Poor performance with FreeBSD 10.1 under Xen 4.2
Message-ID:  <5CC2ABAB-AE46-4C9F-A610-D4EAD735ECA0@tamu.edu>
In-Reply-To: <57429F3F-8CC9-4C4F-86DF-3E63C5853B01@tamu.edu>
References:  <115BE54D-078A-4C45-8904-861DAB316C03@tamu.edu> <5516A998.10206@citrix.com> <57429F3F-8CC9-4C4F-86DF-3E63C5853B01@tamu.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mar 30, 2015, at 6:52 PM, Andrew Daugherity <adaugherity@tamu.edu> wrote=
:
> On Mar 28, 2015, at 8:16 AM, Roger Pau Monn=E9 <roger.pau@citrix.com> wro=
te:
>> I'm Ccing feld because IIRC he found something similar on one of his
>> boxes, that also had VTx but no EPT (just like yours). Would it be
>> possible for you to try the same set of tests on a different hardware?
>=20
> I think you're on to something.  I copied this FreeBSD 10.1 VM to a syste=
m running the same version of Xen (and same SLES in the Dom0), but with an =
Opteron 2360SE CPU (which has both SVM and NPT), and it is *much* faster (a=
nd feels more responsive too):
> [snip]
>> Also, if even FreeBSD 10.1 compiled without XENHVM shows this issue it
>> means there's something in the generic code that doesn't work well when
>> running virtualized on this specific hardware, but I'm afraid figuring
>> it out is not trivial. One place to start would be asking on
>> freebsd-hackers and freebsd-virt.
>=20
> I suppose this performance delta with presence of EPT/NPT vs. lack thereo=
f means it's time to take it to those lists?  My next step will be to test =
10.1 under KVM on the Xeon to confirm whether it's a Xen issue or strictly =
EPT.

It seems I spoke too soon.  I booted into the "default" (non-Xen) Linux ker=
nel on the Xeon E5420 box and launched the same FreeBSD 10.1 VM under KVM, =
and performance is much, much better:

Forked, executed and destroyed 5000 processes in 12.307276 seconds.
[ Always remains at this time and does not become slower. ]
sssd configure:	24.713u 13.530s 0:36.89 103.6%	5337+233k 434+298io 69pf+0w
sssd build:	288.788u 235.076s 4:29.13 194.6%	3640+202k 233+28io 87pf+0w

It may not be the Xen platform drivers at fault (since my NOHVM kernel didn=
't help), but something is causing FreeBSD 10.x to perform badly under Xen =
on a CPU w/o EPT, whereas KVM does not have this issue.

Full KVM dmesg follows at the end for comparison; I've highlighted some dif=
ferences here.  I wonder if any of the CPU/ACPI/timer differences are relev=
ant?
--- dmesg.xen	2015-03-27 18:06:12.000000000 -0500
+++ dmesg.kvm	2015-04-02 12:39:51.000000000 -0500
@@ -5,54 +5,55 @@
 FreeBSD 10.1-RELEASE-p6 #0: Tue Feb 24 19:00:21 UTC 2015
     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
 FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
-XEN: Hypervisor version 4.2 detected.
-CPU: Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz (2493.90-MHz K8-class=
 CPU)
-  Origin =3D "GenuineIntel"  Id =3D 0x10676  Family =3D 0x6  Model =3D 0x1=
7  Stepping =3D 6
-  Features=3D0x1783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,P=
GE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2,HTT>
-  Features2=3D0x81282201<SSE3,SSSE3,CX16,SSE4.1,x2APIC,TSCDLT,HV>
+CPU: QEMU Virtual CPU version 1.4.2 (2493.82-MHz K8-class CPU)
+  Origin =3D "GenuineIntel"  Id =3D 0x623  Family =3D 0x6  Model =3D 0x2  =
Stepping =3D 3
+  Features=3D0x783fbfd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MC=
A,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
+  Features2=3D0x80002001<SSE3,CX16,HV>
   AMD Features=3D0x20100800<SYSCALL,NX,LM>
   AMD Features2=3D0x1<LAHF>
 real memory  =3D 1073741824 (1024 MB)
-avail memory =3D 1010737152 (963 MB)
+avail memory =3D 1010745344 (963 MB)
 Event timer "LAPIC" quality 400
-ACPI APIC Table: <Xen HVM>
+ACPI APIC Table: <BOCHS  BXPCAPIC>
 FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
-FreeBSD/SMP: 1 package(s) x 2 core(s)
+FreeBSD/SMP: 2 package(s) x 1 core(s)
  cpu0 (BSP): APIC ID:  0
- cpu1 (AP): APIC ID:  2
-ioapic0: Changing APIC ID to 1
-MADT: Forcing active-low polarity and level trigger for SCI
-ioapic0 <Version 1.1> irqs 0-47 on motherboard
+ cpu1 (AP): APIC ID:  1
+ioapic0 <Version 1.1> irqs 0-23 on motherboard
 kbd1 at kbdmux0
 random: <Software, Yarrow> initialized
-xen_et0: <Xen PV Clock> on motherboard
-Event timer "XENTIMER" frequency 1000000000 Hz quality 950
-Timecounter "XENTIMER" frequency 1000000000 Hz quality 950
-acpi0: <Xen> on motherboard
+acpi0: <BOCHS BXPCRSDT> on motherboard
 acpi0: Power Button (fixed)
-acpi0: Sleep Button (fixed)
-acpi0: reservation of 0, a0000 (3) failed
 cpu0: <ACPI CPU> on acpi0
 cpu1: <ACPI CPU> on acpi0
-attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
-Timecounter "i8254" frequency 1193182 Hz quality 0
-Event timer "i8254" frequency 1193182 Hz quality 100
-atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
+atrtc0: <AT realtime clock> port 0x70-0x71,0x72-0x77 irq 8 on acpi0
 Event timer "RTC" frequency 32768 Hz quality 0
+hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
+Timecounter "HPET" frequency 100000000 Hz quality 950
 Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
-acpi_timer0: <32-bit timer at 3.579545MHz> port 0xb008-0xb00b on acpi0
+acpi_timer0: <24-bit timer at 3.579545MHz> port 0xb008-0xb00b on acpi0
[snip]
+orm0: <ISA Option ROM> at iomem 0xef000-0xeffff on isa0
 sc0: <System console> at flags 0x100 on isa0
 sc0: VGA <16 virtual consoles, flags=3D0x100>
 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
+attimer0: <AT timer> at port 0x40 on isa0
+Timecounter "i8254" frequency 1193182 Hz quality 0
+Event timer "i8254" frequency 1193182 Hz quality 100=20
[more snipped]

Any idea how to track this down?  I suppose I should file a bug to keep tra=
ck of this, but maybe wait until we narrow down the cause?


Thanks,

Andrew


dmesg.kvm:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Copyright (c) 1992-2014 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 10.1-RELEASE-p6 #0: Tue Feb 24 19:00:21 UTC 2015
    root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
CPU: QEMU Virtual CPU version 1.4.2 (2493.82-MHz K8-class CPU)
  Origin =3D "GenuineIntel"  Id =3D 0x623  Family =3D 0x6  Model =3D 0x2  S=
tepping =3D 3
  Features=3D0x783fbfd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA=
,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=3D0x80002001<SSE3,CX16,HV>
  AMD Features=3D0x20100800<SYSCALL,NX,LM>
  AMD Features2=3D0x1<LAHF>
real memory  =3D 1073741824 (1024 MB)
avail memory =3D 1010745344 (963 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <BOCHS  BXPCAPIC>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 2 package(s) x 1 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0 <Version 1.1> irqs 0-23 on motherboard
kbd1 at kbdmux0
random: <Software, Yarrow> initialized
acpi0: <BOCHS BXPCRSDT> on motherboard
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
atrtc0: <AT realtime clock> port 0x70-0x71,0x72-0x77 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 100000000 Hz quality 950
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0xb008-0xb00b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX3 WDMA2 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,=
0x376,0xc060-0xc06f at device 1.1 on pci0
ata0: <ATA channel> at channel 0 on atapci0
ata1: <ATA channel> at channel 1 on atapci0
uhci0: <Intel 82371SB (PIIX3) USB controller> port 0xc000-0xc01f irq 11 at =
device 1.2 on pci0
usbus0: controller did not stop
usbus0 on uhci0
pci0: <bridge> at device 1.3 (no driver attached)
vgapci0: <VGA-compatible display> mem 0xfc000000-0xfdffffff,0xfebf0000-0xfe=
bf0fff at device 2.0 on pci0
vgapci0: Boot video device
virtio_pci0: <VirtIO PCI Network adapter> port 0xc020-0xc03f mem 0xfebf1000=
-0xfebf1fff irq 11 at device 3.0 on pci0
vtnet0: <VirtIO Networking Adapter> on virtio_pci0
virtio_pci0: host features: 0x719fffe3 <EventIdx,RingIndirect,NotifyOnEmpty=
,SetMacAddress,RxModeExtra,VLanFilter,RxMode,ControlVq,Status,MrgRxBuf,TxUF=
O,TxTSOECN,TxTSOv6,TxTSOv4,RxUFO,RxECN,RxTSOv6,RxTSOv4,TxAllGSO,MacAddress,=
RxChecksum,TxChecksum>
virtio_pci0: negotiated features: 0x308fbbe3 <EventIdx,RingIndirect,SetMacA=
ddress,VLanFilter,RxMode,ControlVq,Status,MrgRxBuf,TxTSOECN,TxTSOv6,TxTSOv4=
,RxECN,RxTSOv6,RxTSOv4,TxAllGSO,MacAddress,RxChecksum,TxChecksum>
vtnet0: Ethernet address: 52:54:00:7d:be:ff
virtio_pci1: <VirtIO PCI Balloon adapter> port 0xc040-0xc05f irq 10 at devi=
ce 5.0 on pci0
vtballoon0: <VirtIO Balloon Adapter> on virtio_pci1
virtio_pci1: host features: 0x71000002 <EventIdx,RingIndirect,NotifyOnEmpty=
,StatsVq>
virtio_pci1: negotiated features: 0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
fdc0: <floppy drive controller> port 0x3f2-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: does not respond
device_attach: fdc0 attach returned 6
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (9600,n,8,1)
orm0: <ISA Option ROM> at iomem 0xef000-0xeffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=3D0x100>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
attimer0: <AT timer> at port 0x40 on isa0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
fdc0: No FDOUT register!
ppc0: cannot reserve I/O port range
Timecounters tick every 10.000 msec
usbus0: 12Mbps Full Speed USB v1.0
ugen0.1: <Intel> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
ada0 at ata0 bus 0 scbus0 target 0 lun 0
ada0: <QEMU HARDDISK 1.4.2> ATA-7 device
ada0: Serial Number QM00001
ada0: 16.700MB/s transfers (WDMA2, PIO 8192bytes)
ada0: 6144MB (12582912 512 byte sectors: 16H 63S/T 12483C)
ada0: Previously was known as ad0
random: unblocking device.
SMP: AP CPU #1 Launched!
Root mount waiting for: usbus0
uhub0: 2 ports with 2 removable, self powered
Trying to mount root from ufs:/dev/ada0p2 [rw]...=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5CC2ABAB-AE46-4C9F-A610-D4EAD735ECA0>