<div dir="ltr"><div>Virtio (for block storage devices) could be the cause.  There are known bugs in the DragonFly driver for virtio which haven't been tracked down yet (not enough of the devs are using virtual hosting to be able to reproduce the problem in a debugable way).<br><br></div>-Matt<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 27, 2016 at 7:39 AM, Steve Petrie, P.Eng. <span dir="ltr"><<a href="mailto:apetrie@aspetrie.net" target="_blank">apetrie@aspetrie.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Greetings To DragonFlyBSD List,<br>
<br>
The subject of random server crashes with DragonFly running running on a virtualized host machine, is of great interest (and concern) to me. Caveat: I am an (almost) complete DragonFly newbie.<br>
<br>
Please see my commens inline below.<br>
<br>
Steve<br>
<br>
----- Original Message ----- From: "Stefan Unterweger" <<a href="mailto:232.20711@chiffre.aleturo.com" target="_blank">232.20711@chiffre.aleturo.com</a>><br>
To: "Matthew Dillon" <<a href="mailto:dillon@backplane.com" target="_blank">dillon@backplane.com</a>><br>
Cc: <<a href="mailto:users@dragonflybsd.org" target="_blank">users@dragonflybsd.org</a>><br>
Sent: Friday, May 27, 2016 3:38 AM<br>
Subject: Re: Random server crashes every few weeks (smp_invltlb: endless loop […] retrysmp_invltlb: ipi sent)<div><div class="h5"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
* Matthew Dillon on Thu, May 26, 2016 at 11:00:18AM -0700:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
It's really hard to say from something which is virtually hosted.  It kinda<br>
sounds like the virtual host isn't assigning enough of its own cpus to the<br>
virtual host.  The fact that DragonFly is complaining about smp_invltlb()<br>
implies that the host's virtualized cpu threads are not getting scheduled<br>
properly.<br>
<br>
One thing to note is that we do not do any instruction escapes to hint to<br>
virtual hosts when a cpu is in a tight loop waiting for synchronization.<br>
It would be nice if we had some support for that, it would probably make<br>
DFly play better on virtualized systems.<br>
</blockquote>
<br>
This is an interesting suggestion, which at least would explain at least<br>
some of the cases where I’ve experienced the crashes (the daily HAMMER<br>
cronjob, heavy paging under stress, I/O bursts and so on).<br>
<br>
So in effect, could it be that the crashes are more likely as either my<br>
own server comes under load or some -other- server who happens to run in<br>
the same hypervisor?<br>
<br>
Would this warrant opening a ticket with Profitbricks, or is it just as<br>
likely that I’m wasting my time and will only get a response along the<br>
lines of ‘Use Linux; Dragonfly BSD most certainly is not supported’?<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I suggest setting the number of cores to 1.  That will get rid of all SMP<br>
interplay and hopefully remove the issues the virtual host is choking on.<br>
</blockquote>
<br>
Interestingly enough, I have seen the opposite so far.  At first, I have<br>
run the server on only one core, to save money and because it doesn’t<br>
really yet need any more.  When on one core, it still freezes, along<br>
approximately the same pattern, but I never got a trace there.<br>
<br>
My guess then was that perhaps there would have been some odd race<br>
condition between paging, HAMMER and dm_crypt—adding another core<br>
temporarily seemed more stable and then regressed back to the mean.<br>
<br>
I will try to set up another VM to see whether I can reliably reproduce<br>
such a crash.<br>
<br>
</blockquote>
<br></div></div>
After a great deal of research, I chose DragonFly as the OS for a new website (not yet online). Three main attributes drew me to DragonFly: 1. reputation for reliability and speed, 2. hammer file system, 3. responsiveness of DragonFly open source community.<br>
<br>
However, my business plan for this new website (not yet online), requires starting out hosting it on a VM under QEMU / KVM virtualization, because I cannot justify the much higher cost of dedicated server hosting hardware. And I like the brutally competitive quasi-commoditized hosting services market for QEMU / KVM virtualization offerings.<br>
<br>
I do have an experimental working DragonFly installation on a QEMU / KVM VM hosted at Elastic Hosts <a href="http://www.elastichosts.com" rel="noreferrer" target="_blank">www.elastichosts.com</a> I access this VM through TightVNC and I get a DragonFly console using PuTTY.<br>
<br>
But I had to suspend work on testing this DragonFly VM installation, due to other business priorities. I hope to get back to it later in 2016.<br>
<br>
However, I can highly recommend Elastic Hosts for their solid cloud infrastructure and their strong customer support.<br>
<br>
So if Stefan wants to expand his testing of the DragonFly crash to a VM with a (probably) different underlying architecture than at ProfitBricks, I would recommend giving an Elastic Hosts QEMU / KVM VM a try.<br>
<br>
Alternatively, if Stafan has (or develops) some simple limited self-contained testing setup, for reproducing the DragonFly crash he is experiencing with the ProfitBricks VM he's presently using, I would be interested to try to set up the same testing scenario on my current DragonFly (and later on an upgraded version of DragonFly) on the Elastic Hosts VM where I presently have (an outdated version of) DragonFly operational.<span class="HOEnZb"><font color="#888888"><br>
<br>
Steve</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks for your answer,<br>
 Stefan<br>
<br>
<br>
<br>
PS: Just in case, as I’ve forgotten it previously: here’s the dmesg from<br>
   the server in question.<br>
<br>
| Copyright (c) 2003-2015 The DragonFly Project.<br>
| Copyright (c) 1992-2003 The FreeBSD Project.<br>
| Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994<br>
| The Regents of the University of California. All rights reserved.<br>
| DragonFly v4.4.1-RELEASE #2: Sun Dec  6 19:10:59 EST 2015<br>
| root@www.shiningsilence.com:/usr/obj/home/justin/release/4_4/sys/X86_64_GENERIC<br>
| TSC clock: 2600054420 Hz, i8254 clock: 1193169 Hz<br>
| CPU: AMD Opteron 62xx class CPU (2600.11-MHz K8-class CPU)<br>
|   Origin = "AuthenticAMD"  Id = 0x600f12  Stepping = 2<br>
| Features=0x783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2><br>
| Features2=0x96982203<SSE3,PCLMULQDQ,SSSE3,CX16,SSE4.1,SSE4.2,POPCNT,AESNI,XSAVE,AVX,VMM><br>
|   AMD Features=0x24500800<SYSCALL,NX,MMX+,Page1GB,LM><br>
|   AMD Features2=0x10be7<LAHF,CMP,SVM,ABM,SSE4A,MAS,Prefetch,OSVW,XOP,FMA4><br>
|   MONITOR/MWAIT Features=0x2<INTBRK><br>
| real memory  = 3219762176 (3070 MB)<br>
| avail memory = 2990727168 (2852 MB)<br>
| lapic: divisor index 0, frequency 500005713 Hz<br>
| SMI Frequency (worst case): 28571 Hz (35 us)<br>
| Initialize MI interrupts<br>
| wdog: In-kernel automatic watchdog reset enabled<br>
| kbd1 at kbdmux0<br>
| md0: Preloaded image <initrd.img> 15728640 bytes at 0xffffffff82739ac0<br>
| md1: Malloc disk<br>
| ACPI: RSDP 0x00000000000FC980 000014 (v00 BOCHS )<br>
| ACPI: RSDT 0x00000000BFFFBCA0 000040 (v01 BOCHS  BXPCRSDT 00000001 BXPC 00000001)<br>
| ACPI: FACP 0x00000000BFFFFF80 000074 (v01 BOCHS  BXPCFACP 00000001 BXPC 00000001)<br>
| ACPI: DSDT 0x00000000BFFFBCE0 00151D (v01 BXPC   BXDSDT   00000001 INTL 20100528)<br>
| ACPI: FACS 0x00000000BFFFFF40 000040<br>
| ACPI: APIC 0x00000000BFFFFC60 000270 (v01 BOCHS  BXPCAPIC 00000001 BXPC 00000001)<br>
| ACPI: HPET 0x00000000BFFFFC20 000038 (v01 BOCHS  BXPCHPET 00000001 BXPC 00000001)<br>
| ACPI: SRAT 0x00000000BFFFF770 0004A8 (v01 BOCHS  BXPCSRAT 00000001 BXPC 00000001)<br>
| ACPI: SSDT 0x00000000BFFFD8E0 001E8E (v01 BOCHS  BXPCSSDT 00000001 BXPC 00000001)<br>
| ACPI: SSDT 0x00000000BFFFD870 00003D (v01 BOCHS  BXPCSSDT 00000001 BXPC 00000001)<br>
| ACPI: SSDT 0x00000000BFFFD200 00066E (v01 BXPC   BXSSDTPC 00000001 INTL 20100528)<br>
| cryptosoft0: <software crypto> on motherboard<br>
| aesni0: <AES-CBC,AES-XTS> on motherboard<br>
| padlock0: No ACE support.<br>
| rdrand0: No RdRand support.<br>
| acpi0: <BOCHS BXPCRSDT> on motherboard<br>
| ACPI: 4 ACPI AML tables successfully acquired and loaded<br>
| ACPI FADT: SCI testing interrupt mode ...<br>
| ACPI FADT: SCI select level/low<br>
| objcache_reclaimlist<br>
| objcache_reclaimlist<br>
| objcache_reclaimlist<br>
| objcache_reclaimlist<br>
| acpi0: Power Button (fixed)<br>
| acpi_timer0 on acpi0<br>
| acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0<br>
| acpi_hpet0: frequency 100000000<br>
| pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0<br>
| pci0: <ACPI PCI bus> on pcib0<br>
| pci_link4: Unable to route IRQs: AE_NOT_FOUND<br>
| isab0: <PCI-ISA bridge> at device 1.0 on pci0<br>
| isa0: <ISA bus> on isab0<br>
| atapci0: <Intel PIIX3 WDMA2 controller> port 0xc120-0xc12f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 1.1 on pci0<br>
| ata0: <ATA channel 0> on atapci0<br>
| ata1: <ATA channel 1> on atapci0<br>
| acd0: DVDROM <QEMU DVD-ROM/1.0> at ata1-master WDMA2<br>
| uhci0: <Intel 82371SB (PIIX3) USB controller> port 0xc0c0-0xc0df irq 11 at device 1.2 on pci0<br>
| usbus0: controller did not stop<br>
| usbus0 on uhci0<br>
| pci0: <bridge> (vendor 0x8086, dev 0x7113) at device 1.3 irq 9<br>
| vgapci0: <VGA-compatible display> mem 0xfd000000-0xfdffffff at device 2.0 on pci0<br>
| vgapci0: Boot video device<br>
| virtio_pci0: <VirtIO PCI Balloon adapter> port 0xc0e0-0xc0ff irq 11 at device 3.0 on pci0<br>
| virtio_pci1: <VirtIO PCI Block adapter> port 0xc000-0xc03f mem 0xfebf0000-0xfebf0fff irq 10 at device 5.0 on pci0<br>
| vtblk0: <VirtIO Block Adapter> on virtio_pci1<br>
| virtio_pci1: host features: 0x710006d4 <EventIdx,RingIndirect,NotifyOnEmpty,Topology,WriteCache,SCSICmds,BlockSize,DiskGeometry,MaxNumSegs><br>
| virtio_pci1: negotiated features: 0x254 <WriteCache,BlockSize,DiskGeometry,MaxNumSegs><br>
| virtio_pci2: <VirtIO PCI Block adapter> port 0xc040-0xc07f mem 0xfebf1000-0xfebf1fff irq 10 at device 6.0 on pci0<br>
| vtblk1: <VirtIO Block Adapter> on virtio_pci2<br>
| virtio_pci2: host features: 0x710006d4 <EventIdx,RingIndirect,NotifyOnEmpty,Topology,WriteCache,SCSICmds,BlockSize,DiskGeometry,MaxNumSegs><br>
| virtio_pci2: negotiated features: 0x254 <WriteCache,BlockSize,DiskGeometry,MaxNumSegs><br>
| virtio_pci3: <VirtIO PCI Network adapter> port 0xc100-0xc11f mem 0xfebf2000-0xfebf2fff irq 11 at device 7.0 on pci0<br>
| vtnet0: <VirtIO Networking Adapter> on virtio_pci3<br>
| virtio_pci3: host features: 0x711f8060 <EventIdx,RingIndirect,NotifyOnEmpty,RxModeExtra,VLanFilter,RxMode,ControlVq,Status,MrgRxBuf,TxAllGSO,MacAddress><br>
| virtio_pci3: negotiated features: 0x110f8020 <RingIndirect,NotifyOnEmpty,VLanFilter,RxMode,ControlVq,Status,MrgRxBuf,MacAddress><br>
| usbus0: 12Mbps Full Speed USB v1.0<br>
| vtnet0: MAC address: 02:01:06:f6:1b:63<br>
| add dynamic link state<br>
| virtio_pci4: <VirtIO PCI Block adapter> port 0xc080-0xc0bf mem 0xfebf3000-0xfebf3fff irq 11 at device 8.0 on pci0<br>
| vtblk2: <VirtIO Block Adapter> on virtio_pci4<br>
| virtio_pci4: host features: 0x710006d4 <EventIdx,RingIndirect,NotifyOnEmpty,Topology,WriteCache,SCSICmds,BlockSize,DiskGeometry,MaxNumSegs><br>
| virtio_pci4: negotiated features: 0x254 <WriteCache,BlockSize,DiskGeometry,MaxNumSegs><br>
| atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0<br>
| atkbd0: <AT Keyboard> irq 1 on atkbdc0<br>
| kbd0 at atkbd0<br>
| ugen0.1: <Intel> at usbus0<br>
| uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0<br>
| psm0: <PS/2 Mouse> irq 12 on atkbdc0<br>
| psm0: model IntelliMouse Explorer, device ID 4<br>
| cpu0: <ACPI CPU> on acpi0<br>
| cpu_cst0: <ACPI CPU C-State> on cpu0<br>
| cpu1: <ACPI CPU> on acpi0<br>
| cpu_cst1: <ACPI CPU C-State> on cpu1<br>
| ACPI: Enabled 16 GPEs in block 00 to 0F<br>
| orm0: <ISA Option ROM> at iomem 0xe9800-0xeffff on isa0<br>
| pmtimer0 on isa0<br>
| vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0<br>
| sc0: <System console> at flags 0x100 on isa0<br>
| sc0: VGA <16 virtual consoles, flags=0x300><br>
| sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0<br>
| sio0: type 16550A<br>
| sio1: can't drain, serial port might not exist, disabling<br>
| hpt27xx: no controller detected.<br>
| CAM: Configuring 2 busses<br>
| CAM: finished configuring all busses<br>
| cd0 at ata1 bus 0 target 0 lun 0<br>
| cd0: <QEMU QEMU DVD-ROM 1.0> Removable CD-ROM SCSI-0 device<br>
| cd0: 16.000MB/s transfers<br>
| cd0: cd present [329728 x 2048 byte records]<br>
| uhub0: 2 ports with 2 removable, self powered<br>
| ugen0.2: <QEMU> at usbus0<br>
| uhid0: <QEMU QEMU USB Tablet, class 0/0, rev 1.00/0.00, addr 2> on usbus0<br>
| no B_DEVMAGIC (bootdev=0)<br>
| Device Mapper version 4.16.0 loaded<br>
| dm_target_zero: Successfully initialized<br>
| dm_target_crypt: Successfully initialized<br>
| dm_target_error: Successfully initialized<br>
| Mounting root from ufs:md0s0<br>
| DMA space used: 1236k, remaining available: 131072k<br>
| Mounting devfs<br>
| dm_target_crypt: Setting min/max mpipe buffers: 2/30<br>
| dm_target_crypt: Setting min/max mpipe buffers: 2/30<br>
| HAMMER(Rhaal) recovery check seqno=055a4f51<br>
| HAMMER(Rhaal) recovery range 300000000cc2da60-300000000cc2da60<br>
| HAMMER(Rhaal) recovery nexto 300000000cc2da60 endseqno=055a4f52<br>
| HAMMER(Rhaal) mounted clean, no recovery needed<br>
| chroot_kernel: set new rootnch/rootvnode to /new_root<br>
| dm_target_crypt: Setting min/max mpipe buffers: 2/30<br>
| dm_target_crypt: Setting min/max mpipe buffers: 2/30<br>
| dm_target_crypt: Setting min/max mpipe buffers: 2/30<br>
| HAMMER: read-only -> read-write<br>
| HAMMER(Rhaal-Daten) recovery check seqno=352f5bc4<br>
| HAMMER(Rhaal-Daten) recovery range 3000000000d5c108-3000000000d77bc8<br>
| HAMMER(Rhaal-Daten) recovery nexto 3000000000d77bc8 endseqno=352f5cc1<br>
| HAMMER(Rhaal-Daten) recovery undo  3000000000d5c108-3000000000d77bc8 (113344 bytes)(RW)<br>
| HAMMER(Rhaal-Daten) Found REDO_SYNC 3000000000cb87a0<br>
| HAMMER(Rhaal-Daten) recovery complete<br>
| HAMMER(Rhaal-Daten) recovery redo  3000000000d5c108-3000000000d77bc8 (113344 bytes)(RW)<br>
| HAMMER(Rhaal-Daten) Find extended redo  3000000000cb87a0, 670056 extbytes<br>
| HAMMER(Rhaal-Daten) End redo recovery<br>
| dm_target_crypt: Setting min/max mpipe buffers: 2/30<br>
| swap low/high-water marks set to 83874/125811 <br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>