Page MenuHomeFreeBSD

vm_reserv: introduce unmanaged reservations
Needs ReviewPublic

Authored by bnovkov on Wed, May 1, 1:36 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, May 13, 7:09 AM
Unknown Object (File)
Thu, May 9, 4:55 PM
Unknown Object (File)
Sun, May 5, 1:06 AM
Unknown Object (File)
Sat, May 4, 5:57 PM
Unknown Object (File)
Thu, May 2, 6:43 AM
Unknown Object (File)
Thu, May 2, 6:43 AM
Unknown Object (File)
Thu, May 2, 12:14 AM
Subscribers

Details

Reviewers
alc
markj
kib
Summary

This is the first of four patches in a series that aims to replace uma_small_alloc with a reservation-aware 0-order page allocator.

This patch introduces unmanaged reservations, i.e. reservations that are not a part of any vm_object but are still used to serve page allocation requests. In this case, they are used to allocate 0-order pages for UMA zones.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

sys/vm/vm_reserv.c
148

Why 4 bits and not 1?

Or you might use a special invalid object value like (vm_object_t)1 instead of adding inpartpopq flags. I mention this because the check for free reservation is rv->object == NULL, which can be kept intact this way. Also unmanaged becomes exclusive with managed reservation condition by the mere way it is stored.

sys/vm/vm_reserv.c
148

No particular reason, the 4 bit split seemed cleaner since both fields are effectively booleans.

I hadn't considered the special vm_object approach, I like it more than the current approach of adding in new fields.
I'll try to work it into the patch.