Methods for dynamically allocating memory in a multiprocessor computer
system such as a non-uniform memory access (NUMA) machine having
distributed shared memory. The methods include allocating memory by
specified node, memory class, or memory pool in response to requests by
the system (kernel memory allocation) or a user (application memory
allocation). Through these methods memory is allocated more efficiently in
a NUMA machine. For example, allocating memory on a specified node in a
NUMA machine, such as the same node on which a process requiring the
memory is running, reduces memory access time. Allocating memory from a
specified memory class allows device drivers with restricted DMA ranges to
operate with dynamically allocated memory. Other benefits of these methods
include minimizing expensive remote-memory accesses using a distributed
reference count mechanism and lock-free cache access.
Les méthodes pour assigner dynamiquement la mémoire dans un système informatique de multiprocesseur tel qu'une machine non-uniforme de l'accès mémoire (NUMA) ayant distribué ont partagé la mémoire. Les méthodes incluent assigner la mémoire par noeud, classe de mémoire, ou piscine indiquée de mémoire en réponse aux demandes par le système (attribution de mémoire de grain) ou un utilisateur (attribution de mémoire d'application). Par ces méthodes de la mémoire est assignée plus efficacement dans une machine de NUMA. Par exemple, assigner la mémoire sur un noeud indiqué dans une machine de NUMA, telle que le même noeud sur lequel un processus exigeant la mémoire fonctionne, réduit le temps d'accès mémoire. Assigner la mémoire d'une classe indiquée de mémoire permet à des modules de gestion de périphérique avec les chaînes restreintes de DMA de fonctionner avec de la mémoire dynamiquement assignée. D'autres avantages de ces méthodes incluent des accès chers réduisants au minimum de à distance-mémoire en utilisant un mécanisme distribué de compte de référence et un accès serrure-libre de cachette.