Re: ACPI idle performance problem

Andrew Doran <[email protected]> Tue, 3 Mar 2020 22:12:29 +0000
Newsgroups gmane.os.netbsd.ports.x86-64,gmane.os.netbsd.ports.i386
Message-ID <[email protected]>
On Sat, Feb 29, 2020 at 09:32:48PM +0000, Andrew Doran wrote:

> Am I missing some vital piece of information

Yes, I was.  I had a quick look at the code.  I assumed it was doing ACPI
bytecode voodoo to enter a low power state, but that's currenly disabled
because more needs doing.  It uses MWAIT/HLT under the covers, and the
performance problem is in software.  Things I would give consideration to
here:

- better avoidance of contention / false sharing
- HyperThreading
- avoidance of the timer reads (e.g. use hardclock_ticks instead)
- avoidance of the cache flush (does this always happen?)
- likely need something done for TLB flush IPIs (and device interrupts)
- tickless operation - could probably benefit from it a lot

So this is burning power/CPU rather than saving it.  On the face of it I
think we should put acpicpu's idle method under an option and come back to
making it the default once the kinks are worked out, unless I have missed
something.

Cheers,
Andrew