Hello again,

I tested with each of the "acpihpet0", "acpitimer0", and "i8254" timers. The timing problem manifested when using all 3 timers. I ran the date loop with "acpihpet0" and "acpitimer0" until the issue manifested, and let "i8254" run overnight.

Here are some snippets from the date logs from where I started logging the date loop, and where the timing issue became present.

acpitimer0:

    Tue Dec 26 23:57:57 UTC 2017
    Tue Dec 26 23:57:58 UTC 2017
    ...
    Wed Dec 27 00:10:10 UTC 2017
    Wed Dec 27 00:10:12 UTC 2017
    Wed Dec 27 00:10:14 UTC 2017

i8254:

    Wed Dec 27 00:14:23 UTC 2017
    Wed Dec 27 00:14:24 UTC 2017
    ...
    Wed Dec 27 00:59:30 UTC 2017
    Wed Dec 27 00:59:31 UTC 2017
    Wed Dec 27 00:59:33 UTC 2017

acpihpet0:

    Wed Dec 27 16:20:54 UTC 2017
    Wed Dec 27 16:20:55 UTC 2017
    ...
    Wed Dec 27 16:32:44 UTC 2017
    Wed Dec 27 16:32:45 UTC 2017
    Wed Dec 27 16:32:47 UTC 2017
    Wed Dec 27 16:32:49 UTC 2017

The i8254 timer hit a point where the system stopped reporting the proper time altogether. I ran these commands this morning after my OpenBSD VM ran with i8254 overnight, and this is what the "date" command displayed. The proper time is shown below.

    # sysctl | grep -i timecounter
    kern.timecounter.tick=1
    kern.timecounter.timestepwarnings=0
    kern.timecounter.hardware=i8254
    kern.timecounter.choice=i8254(0) acpihpet0(1000) acpitimer0(1000) dummy(-1000000)

    # date
    Wed Dec 27 01:35:51 UTC 2017

    [root@local-linux ~]# date
    Wed Dec 27 16:11:05 UTC 2017

Best regards,
Andrew


On 12/26/2017 5:44 PM, Mike Larkin wrote:
On Tue, Dec 26, 2017 at 03:24:03PM -0500, Andrew Davis wrote:
Hello,

No, I didn't changing the kern.timecounter selection directly. I had tried
disabling the HPET on qemu/kvm (which may have affected this selection?).

Two of my boxes, both OpenBSD 6.1 report this:

# sysctl kern.timecounter
kern.timecounter.tick=1
kern.timecounter.timestepwarnings=0
kern.timecounter.hardware=acpihpet0
kern.timecounter.choice=i8254(0) acpihpet0(1000) acpitimer0(1000)
dummy(-1000000)

Best,
Andrew

Could you try one of the others and let us know if it helps, please?

-ml

On 12/26/2017 2:36 PM, Mike Larkin wrote:
On Tue, Dec 26, 2017 at 12:27:31PM -0500, Andrew Davis wrote:
Hello,

I'm experiencing some odd timing issues on OpenBSD 6.2 (and 6.1) on the
system listed below. This is preventing me from running OpenBSD on my
servers. Can you determine if this is a bug in the OpenBSD operating system?
I can provide more information if needed.

Virtualized environment.

Host CPU: 2 x Intel E5-2630 v3 2.4 Ghz
Host OS: Fedora 27
Virtualization software: QEMU + KVM (2.10.0-1.fc27)
Guest Machine: default (pc-i440fx-2.10)
Guest OS: OpenBSD 6.2 (and 6.1).

Basically, OpenBSD processes degrade over time to the point where they're
completely unresponsive. This simple date printout script is a good example.
It should print out the date once per second, but after roughly ~20 mins on
this hardware configuration, it takes 2 seconds to print each line, then 4
seconds to print each line, and so on. After running for about 24 hours, the
delay is about 1 minute between line printouts.

      while sleep 1; do date; done

I've tried tweaking some different settings on the guest and host, such as
disabling the HPET timer and x2apic, neither of which has proven effective.

I saw mention of adding "kvm-intel.preemption_timer=0" in another recent
thread. This seems to resolve the slowdown issue.

However, I have run other guest operating systems on this hardware
configuration (CentOS, Ubuntu, FreeBSD) - neither of which required any of
these tweaks, or experienced timing issues. This leads me to believe that it
could be related to a bug in OpenBSD.

I have access to several machines with this hardware configuration and
tested on multiple machines, to rule out a possible one-off hardware issue.
Each host displayed the same behavior.

Best regards,
Andrew

What timecounter source did the OpenBSD guests pick? Did you try selecting
one of the other choices to see if this helps?

sysctl kern.timecounter    if you're not sure what I'm talking about.

-ml

Reply via email to