Page MenuHomeFreeBSD

Save a call to pmap_remove() if entry cannot have any pages mapped.
ClosedPublic

Authored by kib on Jul 5 2018, 7:08 PM.
Tags
None
Referenced Files
Unknown Object (File)
Dec 23 2023, 11:08 AM
Unknown Object (File)
Dec 20 2023, 2:15 AM
Unknown Object (File)
Nov 6 2023, 7:09 PM
Unknown Object (File)
Oct 24 2023, 9:28 AM
Unknown Object (File)
May 24 2023, 11:45 PM
Unknown Object (File)
Jan 3 2023, 4:28 AM
Unknown Object (File)
Dec 23 2022, 9:51 PM
Subscribers

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

FYI, I just did a "buildworld" where I counted the number of times that the pmap_remove() could be avoided ("debug.counter1") and the number of times that the pmap_remove() was needed ("debug.counter2"). The results are:

debug.counter1: 2044614
debug.counter2: 8117202

I'm actually surprised by how large debug.counter1 is.

This revision is now accepted and ready to land.Jul 5 2018, 10:47 PM
In D16148#342543, @alc wrote:

FYI, I just did a "buildworld" where I counted the number of times that the pmap_remove() could be avoided ("debug.counter1") and the number of times that the pmap_remove() was needed ("debug.counter2"). The results are:

debug.counter1: 2044614
debug.counter2: 8117202

I'm actually surprised by how large debug.counter1 is.

I added a dtrace probe before the pmap_remove() call so that I could dump the vm_map_entry. Most (~80%) of the no-op calls seem to be a result of the use of MAP_FIXED in rtld: as it maps segments of shared objects, vm_map_fixed() deletes subranges of the guard mapping.

This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state Needs Review.Jul 6 2018, 12:45 PM
This revision was automatically updated to reflect the committed changes.