microsoft / microsoft/mimalloc

"Pointer compression/truncation" and huge pages

Offen
#596 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
C
Sterne
13.4k
Forks
1.2k
Ø Merge
4 T. 45 Min.
Gemergte PRs (30 T.)
13

Beschreibung

Suppose,

- we ask mimalloc to use 1GB pages.
- we make a heap
- we make zillions mallocs/frees over the same heap as in step 2
- assume we do not realloc, re-calloc, move the heap memory

are there any guarantees that every pointer will share the same value in bits above the last physical bit usually 38 (zero based) because the memory is coming off the same page?

If so, one can play memory tricks like save the base address somewhere and cut 64-bit pointers down to 32-bits. Which, for tree like data structures could be a handy, cheap way to cut memory for pointers in half. Yes, there's pointer and/or bit games to play, but it may be worth playing.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Es werden keine Dateien, Tests oder Einstiegspunkte genannt. Beginne damit, das Verhalten von mimalloc bei der Zuweisung von 1GB-Seiten und die Garantien zu überprüfen, die es für Zeigeradressen bei wiederholten Zuweisungen und Freigaben gibt; abgeschlossen ist die Untersuchung, wenn dokumentiert ist, ob die vorgeschlagene Zeigertrunkierung garantiert oder nicht unterstützt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c
Bereich
operating-systems, performance
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.