Skip to content

De geheugenreservering van de allocatie groeide 104 GB na de domeinmigratie, terwijl het werkelijke gebruik gelijk bleef #775

Description

@jipclaassens

De migratie van de trede en de zeef naar 25 meter in #759 heeft de rekentijd verkort en het werkelijke geheugengebruik ongemoeid gelaten, maar de reservering fors verhoogd. Dit issue is om die reservering te begrijpen en terug te brengen.

Gemeten

Hetzelfde zichtjaar, dezelfde machine (OVSRV08, 32 kernen, 128 GB, wisselbestand 600 GB), uit de staart van de allocatielogs in batch/log/run2120:

29 augustus, voor 786f862 4 september, na 786f862
Highest CommitCharge 213 GB 317 GB
Highest allocated 197 GB 185 GB
rekentijd BAU Y2040 69 min 49 min

De migratie is dus op twee van de drie assen een verbetering: 29 procent sneller en 12 GB minder werkelijk toegewezen. Wat groeide is de reservering, met 104 GB. Het gat tussen gereserveerd en toegewezen is daarmee 132 GB.

Ter aanvulling: NbSGenuanceerd Y2040 op 4 september piekt op 368 GB CommitCharge in 61 minuten. Daar zit de waterbergingsallocatie bij die BAU niet heeft.

Waarom dit toch aandacht verdient

Op deze machine gaat het goed, want het wisselbestand is 600 GB. Maar 317 GB reservering voor een run die 185 GB gebruikt betekent dat de configuratie op een machine met een kleiner wisselbestand omvalt zonder dat er iets mis is met de berekening. Dat is een onnodige eis aan de omgeving, en het maakt de run gevoelig voor een tweede proces ernaast.

Waar het vandaan komt

De richting is bekend, de details niet. Alleen Templates/VariantData_T/Trede.dms ging van 184 items op AllocDomain naar 185 op AdminDomain, en een cel van 100 meter telt 9,1 miljoen keer tegen 145,6 miljoen op 25 meter. Als bool gerekend is dat voor dat ene bestand ongeveer 1,7 tegenover 26,9 GB. De commit raakte negentien bestanden.

Dat verklaart waarom er meer wordt gereserveerd, maar niet waarom het werkelijke gebruik gelijk blijft. Kennelijk worden lang niet alle tredevlaggen tegelijk vastgehouden. De vraag is dan of de reservering die ruimte wel opeist terwijl zij hem niet nodig heeft.

Aanknopingspunten

Geen daarvan is onderzocht; het is een lijstje om mee te beginnen.

  1. De log noemt zelf Highest uncommitted: 55750 MB op 29 augustus. Kijk wat die post in de nieuwe situatie is en of de groei daarin zit.
  2. Veel van de 185 tredevlaggen zijn bool. Een bitset of een samengesteld klasse-attribuut in plaats van een attribuut per vlag scheelt direct een factor.
  3. De vlaggen per sector of per sequentie opbouwen en loslaten in plaats van als blok.
  4. Niet elke laag hoeft op 25 meter. De fout die De allocatie is sinds #508 op 25 meter, maar 527 items staan nog op het domein van 100 meter #759 oploste was een toets die op 25 meter besliste met een antwoord van 100 meter; lagen die alleen als grove context dienen kunnen grof blijven, mits ze nergens met een fijne toets worden gemengd.

Voorbehoud bij de aanleiding

Dit issue verving een eerdere formulering van mij waarin stond dat het geheugen van 70 naar 180 GB ging. Dat klopte niet: die 70 GB was de werkset van de lopende run op een willekeurig moment en geen meting van een eerdere run. De vergelijking hierboven is wel like-for-like, uit de logstaarten van beide runs.

Zie #771, dat op deze meting is gesloten, en #770 voor de correctheidskant van dezelfde commit.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions