Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Apr 2015 09:31:31 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>
Subject:   RFC: setting performance_cx_lowest=C2 in -HEAD to avoid lock contention on many-CPU boxes
Message-ID:  <CAJ-VmonG%2By5gzoYmer70KAswUorvezcZxRSDsQWj47=jsAZ71w@mail.gmail.com>

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

I've been doing some NUMA testing on large boxes and I've found that
there's lock contention in the ACPI path. It's due to my change a
while ago to start using sleep states above ACPI C1 by default. The
ACPI C3 state involves a bunch of register fiddling in the ACPI sleep
path that grabs a serialiser lock, and on an 80 thread box this is
costly.

I'd like to drop performance_cx_lowest to C2 in -HEAD. ACPI C2 state
doesn't require the same register fiddling (to disable bus mastering,
if I'm reading it right) and so it doesn't enter that particular
serialised path. I've verified on Westmere-EX, Sandybridge, Ivybridge
and Haswell boxes that ACPI C2 does let one drop down into a deeper
CPU sleep state (C6 on each of these). I think is still a good default
for both servers and desktops.

If no-one has a problem with this then I'll do it after the weekend.

Thanks!



-adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonG%2By5gzoYmer70KAswUorvezcZxRSDsQWj47=jsAZ71w>