Page MenuHomeFreeBSD

arm64 pmap: implement per-superpage locks
ClosedPublic

Authored by andrew on Aug 23 2022, 12:24 PM.

Details

Summary

As with amd64 pmap introduce per-superpage locks backed by pages
allocated by their respective domains.

This significiantly reduces lock contantion from pmap when running
poudriere on a 160 core Ampere Altra server

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Why do we continue to implement the old locking scheme if NUMA isn't configured? It seems more complicated than necessary, and it's not only NUMA systems that suffer from pv list lock contention. Graviton EC2 instances always have a single memory domain, and one might disable NUMA in the kernel config.

sys/arm64/arm64/pmap.c
195
1467
1489

Pass VM_ALLOC_ZERO to vm_page_alloc_noobj_domain() instead of calling pmap_zero_page().

1545

Extra newline.

andrew marked 4 inline comments as done.

Fixes from feedback by @markj

This revision was not accepted when it landed; it landed in state Needs Review.Thu, Nov 17, 5:13 PM
This revision was automatically updated to reflect the committed changes.