Re: ACPI idle performance problem

Jukka Ruohonen <[email protected]>
Newsgroups gmane.os.netbsd.ports.x86-64,gmane.os.netbsd.ports.i386
Message-ID <20200601042102.GA29845@sartre>
On Sun, May 31, 2020 at 10:23:56PM +0000, Andrew Doran wrote:
> I spent a bit of time playing with this over the weekend, instrumented the
> code to find out what was happening and and made a commit to
> acpi_cpu_cstate.c work around the problem.  There are a couple of comments
> in there explaining what I found but basically reading the ACPI timer
> (mapped via I/O port) during idle seems stupidly costly, enough to add
> between 5-10% system time to a kernel build for me.
> 
> I guess the system builders don't pay attention to I/O port access since
> most devices are memory mapped now.

Thanks for looking into the problem! 

I think this is an implementation bug.  Would a simple fix suffice: add
acpi_md_timer_read() and map it to a better timer in acpi_machdep.c?

Another thing that I was thinking about was acpicpu_md_quirk_c1e() that
is potentially called for some AMD CPUs in the idle loop. It might be
costly, and I am not sure whether it is the right thing to do. Should read
the BKDGs again.

- Jukka
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.