Port-amd64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: svs_pmap_sync() svs_pdir_switch() overhead
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.
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
Home |
Main Index |
Thread Index |
Old Index