[Bug 270785] Performance and power efficiency regression due to pthread_cond_timedwait() changes

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 12 Apr 2023 13:08:57 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270785

            Bug ID: 270785
           Summary: Performance and power efficiency regression due to
                    pthread_cond_timedwait() changes
           Product: Base System
           Version: 13.2-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: bllcha013@myuct.ac.za

After updating from 13.1-RELEASE-p7 to 13.2-RELEASE-p0, I experienced a
performance and power efficiency regression especially when running Java
programs, in particular the Minecraft server.

After some testing, this appears to be caused by commit
e21c77f80c3b1cf2bd0a9f874e15e7a8e49f0dba [Improve timeout precision of
pthread_cond_timedwait().]. When building the kernel just before this commit,
this regression does not occur, while building with this commit
(n253051-e21c77f80c3b), the regression occurs. The regression is still present
in the 6 April 2023 snapshot kernel of 14.0-CURRENT.

I have observed this behavior on two systems, a server with an Intel Xeon X3460
(Lynnfield, Nehalem) CPU, as well as a desktop PC with an Intel Core i7-6700K
(Skylake) CPU.

When running a kernel with this commit, the WCPU usage of the java process in
top is considerably higher at idle than without the commit when running a
Minecraft server (1 to 2% before, 10% to 30% after). In addition, the CPU
spends a lot more time in less power efficient C-states (C1) where before this
commit, the CPU spends much more time in power efficient C-states such as C3.
On my server, the CPU used to spend 98% time in C3 while after the commit it
spends only 30% time in C3, leading to higher power consumption, more heat, and
faster fan speeds.

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