David Goldblatt
dcb7b83fac
Eset: Cache summary information for heap edatas.
...
This lets us do a single array scan to find first fits, instead of taking a
cache miss per examined size class.
2021-08-02 15:02:49 -07:00
David Goldblatt
252e0942d0
Eset: Pull per-pszind data into structs.
...
We currently have one for stats and one for the data. The data struct is just a
wrapper around the edata_heap_t, but this will change shortly.
2021-08-02 15:02:49 -07:00
Qi Wang
1784939688
Use rtree tracked states to protect edata outside of ecache locks.
...
This avoids the addr-based mutexes (i.e. the mutex_pool), and instead relies on
the metadata tracked in rtree leaf: the head state and extent_state. Before
trying to access the neighbor edata (e.g. for coalescing), the states will be
verified first -- only neighbor edatas from the same arena and with the same
state will be accessed.
2021-03-29 17:19:53 -07:00
David Goldblatt
154aa5fcc1
Use the flat bitmap for eset and psset bitmaps.
...
This is simpler (note that the eset field comment was actually incorrect!), and
slightly faster.
2021-02-19 15:10:54 -08:00
David Goldblatt
392f645f4d
Edata: split up different list linkage uses.
2020-07-08 13:20:59 -07:00
David Goldblatt
f730577277
Eset: Parameterize last globals accesses.
...
I.e. opt_retain and maps_coalesce.
2020-04-10 13:12:47 -07:00
David Goldblatt
7bb6e2dc0d
Eset: take opt_lg_max_active_fit as a parameter.
...
This breaks its dependence on the global.
2020-04-10 13:12:47 -07:00
David Goldblatt
d8b0b66c6c
Put extent_state_t into ecache as well as eset.
2019-12-20 10:18:40 -08:00
David Goldblatt
98eb40e563
Move delay_coalesce from the eset to the ecache.
2019-12-20 10:18:40 -08:00
David Goldblatt
bb70df8e5b
Extent refactor: Introduce ecache module.
...
This will eventually completely wrap the eset, and handle concurrency,
allocation, and deallocation. For now, we only pull out the mutex from the
eset.
2019-12-20 10:18:40 -08:00
David Goldblatt
a7862df616
Rename extent_t to edata_t.
...
This frees us up from the unfortunate extent/extent2 naming collision.
2019-12-20 10:18:40 -08:00
David T. Goldblatt
e144b21e4b
Extent -> Eset: Move fork handling.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
77bbb35a92
Extent -> Eset: Move extent fit functions.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
1210af9a4e
Extent -> Eset: Move insertion and removal.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
a42861540e
Extents -> Eset: Convert some stats getters.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
63d1b7a7a7
Extents -> Eset: move extents_state_get.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
b416b96a39
Extents -> Eset: rename/move extents_init.
2019-09-23 23:06:27 -07:00
David T. Goldblatt
e6180fe1b4
Eset: Add a source file.
...
This will let us move extents_* functions over one by one.
2019-09-23 23:06:27 -07:00