Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Feb 2017 10:25:48 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 217247] [acpi] r265474 makes 11.0R unusable with Atom 330
Message-ID:  <bug-217247-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217247

            Bug ID: 217247
           Summary: [acpi] r265474 makes 11.0R unusable with Atom 330
           Product: Base System
           Version: 11.0-RELEASE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: stephane_freebsd@lesimple.fr

After upgrading my FreeBSD-based firewall from 10.3R to 11.0R, the boot time
(from power-on to the login prompt) rocketed from ~1 minute to more than 45
minutes, and even when up, the system was extremely slow. The loadavg was >2,
with no process really taking that much CPU time, and the number of IRQ was not
too high (200-300 per sec) even if 20% of the time was spent in IRQ.

To rule out any oddity with my system config, I reproduced the problem with the
bare official FreeBSD-10.3-RELEASE-amd64-memstick.img where the kernel takes
20s to boot, and FreeBSD-11.0-RELEASE-amd64-memstick.img takes more than 8
minutes, from "Booting..." to the login prompt.

So, it took me several days of manual bisecting-compiling-memstick-booting, and
I finally found the culprit: base r265474

The diff is pretty straightforward, in /etc/defaults/rc.conf:

-performance_cx_lowest="HIGH"    # Online CPU idle state
+performance_cx_lowest="Cmax"    # Online CPU idle state
-economy_cx_lowest="HIGH"        # Offline CPU idle state
+economy_cx_lowest="Cmax"        # Offline CPU idle state

If I override these values by putting HIGH back in /etc/rc.conf.local, the
problem disappears.

I was able to manually confirm that if I set dev.cpu.N.cx_lowest to C2 (or C3),
the system is horribly slow and sluggish, and back to C1 ("HIGH"), it's usable
again.

The commit message indicates that "This may not stay through 11.0-RELEASE, but
at least having it on by default in -HEAD will expose (more) issues with broken
hardware", so I guess my hardware is broken, even if I didn't observe such
behavior previously under other OSes (namely Linux). I can imagine that anybody
else booting FreeBSD 11.0 under such hardware would just give up, so it might
be a good idea to detect this CPU on install and keep cx_lowest at C1?

root@fw:~ # sysctl hw.machine hw.model dev.cpu.0
hw.machine: amd64
hw.model: Intel(R) Atom(TM) CPU  330   @ 1.60GHz
dev.cpu.0.cx_method: C1/hlt C2/io C3/io
dev.cpu.0.cx_usage_counters: 10731 0 0
dev.cpu.0.cx_usage: 100.00% 0.00% 0.00% last 4432us
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_supported: C1/1/0 C2/2/1 C3/3/85
dev.cpu.0.%parent: acpi0
dev.cpu.0.%pnpinfo: _HID=none _UID=0
dev.cpu.0.%location: handle=\_PR_.P001
dev.cpu.0.%driver: cpu
dev.cpu.0.%desc: ACPI CPU

-- 
You are receiving this mail because:
You are the assignee for the bug.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-217247-8>