Re: svs_pmap_sync() svs_pdir_switch() overhead

Andrew Doran <[email protected]>
Newsgroups gmane.os.netbsd.ports.x86-64
Message-ID <[email protected]>
On Sat, May 23, 2020 at 09:04:26AM +0200, Maxime Villard wrote:
> Le 20/05/2020 ? 11:12, Manuel Bouyer a ?crit?:
> > On Tue, May 19, 2020 at 10:51:52PM +0000, Andrew Doran wrote:
> > > Both of these show up prominently in profiling for me.  This change largely
> > > cures it:
> > > 
> > > 	http://www.netbsd.org/~ad/2020/svs.diff
> > > 
> > > Comments?
> 
> I didn't know kcpuset_isotherset() existed, that is indeed better.
> 
> Not sure the second part is correct though. Suppose:
> 
> cpu0 is executing svs_pdir_switch(), and cpu1 is modifying the PTEs at the
> same time. cpu0 returns to userland before cpu1 finished. [XXX]. cpu1
> finishes, and calls svs_pmap_sync().
> 
> In the [XXX] window, the PTEs could be used by userland. If you copied
> them using memcpy(), some parts of the bytes could contain stale values.

You mean if memcpy() was moving single bytes at a time?  That won't happen,
see:

https://nxr.netbsd.org/xref/src/common/lib/libc/arch/x86_64/string/bcopy.S

Cheers,
Andrew

 
> > I also noticed that the cost is very high on Xen PVH/PVHVM domUs,
> > at last with ~10 year old hardware.
> 
> On old CPUs the cost of the Meltdown mitigation is known to be huge. This
> is because they are slow at flushing+caching TLB entries, and the fact
> that there is no PCID doesn't help either.
> 
> Maxime
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.