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
F151686453: D16148.id44963.diff
Fri, Apr 10, 12:37 AM
Unknown Object (File)
Wed, Apr 8, 10:12 AM
Unknown Object (File)
Mon, Mar 30, 5:59 PM
Unknown Object (File)
Mon, Mar 30, 9:36 AM
Unknown Object (File)
Sat, Mar 28, 3:23 AM
Unknown Object (File)
Thu, Mar 26, 7:10 AM
Unknown Object (File)
Tue, Mar 17, 1:50 PM
Unknown Object (File)
Tue, Mar 17, 8:01 AM
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.