Page MenuHomeFreeBSD

arm64 pmap: implement per-superpage locks
ClosedPublic

Authored by andrew on Aug 23 2022, 12:24 PM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 16 2024, 8:23 AM
Unknown Object (File)
Feb 16 2024, 8:23 AM
Unknown Object (File)
Feb 16 2024, 8:23 AM
Unknown Object (File)
Feb 16 2024, 8:23 AM
Unknown Object (File)
Feb 16 2024, 8:23 AM
Unknown Object (File)
Feb 16 2024, 8:19 AM
Unknown Object (File)
Feb 16 2024, 5:39 AM
Unknown Object (File)
Dec 27 2023, 4:39 PM
Subscribers

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 Passed
Unit
No Test Coverage
Build Status
Buildable 47262
Build 44149: arc lint + arc unit

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
1386–1387
1411

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

1564

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.Nov 17 2022, 5:13 PM
This revision was automatically updated to reflect the committed changes.