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
F163333964: D16148.id44963.diff
Wed, Jul 22, 5:28 AM
F163310049: D16148.id44964.diff
Tue, Jul 21, 11:18 PM
Unknown Object (File)
Tue, Jul 21, 4:52 AM
Unknown Object (File)
Mon, Jul 20, 10:37 PM
Unknown Object (File)
Sun, Jul 19, 12:37 PM
Unknown Object (File)
Sun, Jul 19, 7:40 AM
Unknown Object (File)
Sun, Jul 12, 12:32 AM
Unknown Object (File)
Fri, Jul 10, 4:57 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.