Programmation de la mémoire persistante dans Windows - Intégration NVML
La technologie de mémoire persistante (PM) offre un accès au niveau octet aux supports non volatiles tout en réduisant considérablement la latence de stockage ou de récupération des données. Il crée un nouveau niveau entre la mémoire d’un système et le stockage traditionnel. Tout programme dépendant ou mis à l’échelle avec des écritures rapides sur un support persistant peut bénéficier de PM.
L’objectif de cet article est de décrire comment la bibliothèque de mémoire non volatile (NVML) peut être intégrée à un projet Visual Studio pour une utilisation simple.
Note
La mémoire persistante est parfois appelée mémoire de classe de stockage (SCM).
PM et NVML
La première prise en charge de la mémoire persistante a été introduite dans Windows Server 2016 et la mise à jour anniversaire Windows 10 (1607). Pour obtenir une vue d’ensemble rapide, consultez ces deux vidéos Channel9 :
- utilisation de la mémoire non volatile (NVDIMM-N) comme stockage de blocs dans Windows Server 2016
- utilisation de la mémoire non volatile (NVDIMM-N) comme stockage Byte-Addressable dans Windows Server 2016
Pour aider les développeurs à tirer parti des avantages des offres de mémoire persistante, Microsoft a également contribué aux efforts de l’apport de la bibliothèque de mémoire non volatile (NVML) à Windows. Cette bibliothèque fournit différents outils pour rendre les applications prenant en charge la mémoire persistante. Par exemple, il contient du code qui vous permet de créer facilement un magasin clé-valeur prenant en charge PM pour des recherches et des magasins extrêmement rapides. Vous trouverez plus d’informations sur NVML, notamment des exemples, dans bibliothèque NVM.
Intégration de NVML dans un projet Visual Studio
- Télécharger les fichiers et en-têtes de bibliothèque NVML
- NVML est géré sur GitHub. Vous pouvez compiler la source vous-même ou simplement télécharger des fichiers binaires compilés directement à partir d’ici : NVML version 1.2 - Windows Technical Preview.
Placez les fichiers et les en-têtes de bibliothèque dans un répertoire de votre choix, par exemple : « C :\NVML\lib » et « C :\NVML\inc », respectivement.
Configurez votre projet comme suit :
- Ouvrez votre projet Visual Studio et, dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nom de votre projet.
- Ouvrez le volet de paramètres du projet en bas de la fenêtre contextuelle résultante.
- Accédez à « Propriétés de configuration -> C/C++ » et ajoutez le dossier dans lequel vous avez stocké l’en-tête (C :\NVML\inc) au champ « Répertoires Include supplémentaires ».
- Ensuite, accédez à « Propriétés de configuration -> Éditeur de liens » et ajoutez le dossier dans lequel vous avez stocké la bibliothèque (C :\NVML\lib) dans le champ « Répertoires de bibliothèque supplémentaires »
- Ensuite, veillez à cibler le projet pour la mise à jour anniversaire windows Server 2016 ou Windows 10 :
- Accédez à « Propriétés de configuration -> Général » et définissez le champ « Version de la plateforme cible » sur « 10.0.14393.0 » et
- Accédez à « Propriétés de configuration -> C/C++ » et ajoutez « NTDDI_VERSION=NTDDI_WIN10_RS1 ; » au champ « Préprocesseur ».
- Inclure les en-têtes dans votre code et établir un lien vers les bibliothèques requises
- À ce stade, vous pouvez simplement inclure les fichiers d’en-tête que vous recherchez à utiliser dans votre code comme tous les autres fichiers d’en-tête. Par exemple, pour utiliser libpmem :
- ajoutez « #include <libpmem.h>» et
- ajoutez « libpmem.lib » à « Propriétés de configuration - éditeur de liens> - entrée> -> dépendances supplémentaires »
À ce stade, vous êtes prêt à appeler les fonctions de la bibliothèque directement dans votre code et à en tirer parti.