]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Previously, when vm_page_free_toq() was performed on a page belonging to
authoralc <alc@FreeBSD.org>
Sat, 11 Apr 2009 09:09:00 +0000 (09:09 +0000)
committeralc <alc@FreeBSD.org>
Sat, 11 Apr 2009 09:09:00 +0000 (09:09 +0000)
commit7ba2ea0371b556e3441456dc7a95b7a897b26249
treea5e44ff6fb29d3f71154698483850ecc88e9aaf3
parentc9f2c65c9f5c9902c5ad97fa9657ed6ba6c7db37
Previously, when vm_page_free_toq() was performed on a page belonging to
a reservation, unless all of the reservation's pages were free, the
reservation was moved to the head of the partially-populated reservations
queue, where it would be the next reservation to be broken in case the
free page queues were emptied.  Now, instead, I am moving it to the tail.
Very likely this reservation is in the process of being freed in its
entirety, so placing it at the tail of the queue makes it more likely that
the underlying physical memory will be returned to the free page queues as
one contiguous chunk.  If a reservation must be broken, it will, instead,
be the longest unchanged reservation, which is arguably the reservation
that is least likely to ever achieve promotion or be freed in its entirety.

MFC after: 6 weeks
sys/vm/vm_reserv.c