Home

Preallocatie

Preallocatie is een techniek waarbij bronnen vooraf worden gereserveerd of toegewezen voordat ze daadwerkelijk nodig zijn. Het doel is om latentie te verminderen,(fragmentatie) te voorkomen en de voorspelbaarheid van prestaties te vergroten door runtime-toewijzing te minimaliseren.

In computersystemen vindt preallocatie op verschillende niveaus plaats. In geheugenbeheer worden vaak geheugenpools, arenas of slab-allocators

Voordelen van preallocatie zijn onder meer minder runtime-toewijzingsoverhead, lagere operationele latentie en betere voorspelbaarheid van prestaties.

Toepassingen variëren van systeembrede geheugen- en opslagbeheer tot gespecialiseerde softwarecomponenten zoals geheugenpools, database-extents en netwerkbuffers. Zie

gebruikt
om
objecten
snel
uit
een
gereserveerde
ruimte
te
kunnen
halen.
Bij
bestandssystemen
kan
preallocatie
plaatsvinden
door
opslagruimte
van
tevoren
toe
te
wijzen,
bijvoorbeeld
met
fallocate
of
posix_fallocate,
zodat
bestanden
contiguïter
ruimte
hebben
en
toekomstige
uitbreiding
efficiënter
verloopt.
In
databasesystemen
kan
preallocatie
worden
toegepast
door
pagina’s
of
extents
vooraf
toe
te
wijzen
om
I/O-kosten
te
verlagen
en
toekomstige
schalings-
en
cachinggedrag
te
stabiliseren.
Ook
in
netwerken
komen
voorgealloceerde
buffers
voor,
zodat
ontvangen
of
verzonden
data
zonder
wachttijden
kan
worden
verwerkt.
Nadelen
zijn
mogelijk
verspilling
van
resources
wanneer
gereserveerde
ruimte
niet
volledig
wordt
gebruikt,
verhoogde
complexiteit
bij
het
beheren
van
reserveringen
en
risico’s
op
overallocatie
of
resource
starvation
als
reserves
niet
effectief
worden
benut.
ook
onderwerpen
als
prefetching,
lazy
allocation
en
memory
pooling.