Programação de memória persistente no Windows – Integração NVML
A tecnologia pm (memória persistente) fornece acesso em nível de bytes a mídia não volátil, ao mesmo tempo em que reduz significativamente a latência de armazenar ou recuperar dados. Ele cria uma nova camada entre a memória de um sistema e o armazenamento tradicional. Qualquer programa que dependa ou dimensione com gravações rápidas em um meio persistente pode se beneficiar da PM.
A finalidade deste artigo é descrever como a biblioteca de memória não volátil (NVML) pode ser integrada a um projeto do Visual Studio para facilitar o uso.
Nota
A memória persistente às vezes também é conhecida como SCM (Memória de Classe de Armazenamento).
PM e NVML
O primeiro suporte para memória persistente foi introduzido no Windows Server 2016 e na Atualização de Aniversário do Windows 10 (1607). Para obter uma visão geral rápida, confira estes dois vídeos do Channel9:
- usando memória não volátil (NVDIMM-N) como armazenamento em bloco no Windows Server 2016
- usando memória não volátil (NVDIMM-N) como armazenamento Byte-Addressable no Windows Server 2016
Para ajudar os desenvolvedores a aproveitar os benefícios das ofertas de memória persistente, a Microsoft também contribuiu para os esforços de trazer a biblioteca de memória não volátil (NVML) para o Windows. Essa biblioteca fornece várias ferramentas para tornar os aplicativos com reconhecimento de memória persistente. Por exemplo, ele contém código que permite criar facilmente um repositório de chave-valor com reconhecimento de PM para pesquisas e repositórios extremamente rápidos. Você pode encontrar mais informações sobre NVML, incluindo exemplos, em biblioteca NVM.
Integrando o NVML a um projeto do Visual Studio
- Baixar arquivos e cabeçalhos da biblioteca NVML
- O NVML é mantido no GitHub. Você pode compilar a origem por conta própria ou apenas baixar binários compilados diretamente a partir daqui: NVML Versão 1.2 – Windows Technical Preview.
Coloque os arquivos e cabeçalhos da biblioteca em um diretório de sua escolha, por exemplo: "C:\NVML\lib" e "C:\NVML\inc", respectivamente.
Configure seu projeto da seguinte maneira:
- Abra seu projeto do Visual Studio e, no "Gerenciador de Soluções", clique com o botão direito do mouse no nome do projeto.
- Abra o painel de configuração do projeto na parte inferior do pop-up resultante.
- Navegue até "Propriedades de Configuração –> C/C++" e adicione a pasta na qual você armazenou o cabeçalho (C:\NVML\inc) ao campo "Diretórios de Inclusão Adicionais".
- Em seguida, navegue até "Propriedades de Configuração –> Vinculador" e adicione a pasta na qual você armazenou a biblioteca (C:\NVML\lib) ao campo "Diretórios de Biblioteca Adicionais"
- Em seguida, certifique-se de direcionar o projeto para Windows Server 2016 ou Atualização de Aniversário do Windows 10:
- Navegue até "Propriedades de Configuração –> Geral" e defina o campo "Versão da Plataforma de Destino" como "10.0.14393.0" e
- Navegue até "Propriedades de Configuração –> C/C++" e adicione "NTDDI_VERSION=NTDDI_WIN10_RS1;" ao campo "Pré-processador".
- Incluir os cabeçalhos em seu código e vincular às bibliotecas necessárias
- Neste ponto, você pode simplesmente incluir os arquivos de cabeçalho que deseja usar em seu código, como qualquer outro arquivo de cabeçalho. Por exemplo, para usar libpmem:
- adicionar "#include <libpmem.h>" e
- adicione "libpmem.lib" a "Propriedades de configuração – vinculador> – entrada> –> dependências adicionais"
Neste ponto, você está pronto para chamar as funções da biblioteca diretamente em seu código e tirar proveito delas.