Programação de memória persistente no Windows – Integração NVML
A tecnologia pm (memória persistente) fornece acesso no nível de bytes a mídia não volátil, ao mesmo tempo em que reduz significativamente a latência de armazenamento ou recuperação de dados. Ele cria uma nova camada entre a memória de um sistema e o armazenamento tradicional. Qualquer programa dependente ou dimensionado com gravações rápidas em um meio persistente pode se beneficiar do PM.
A finalidade deste artigo é descrever como a NVML (biblioteca de memória não volátil) pode ser integrada a um projeto do Visual Studio para facilitar o uso.
Observação
Às vezes, a Memória Persistente também é conhecida como SCM (Memória de Classe de Armazenamento).
PM e NVML
O primeiro suporte para memória persistente foi introduzido em Windows Server 2016 e na Atualização de Aniversário do Windows 10 (1607). Para obter uma visão geral rápida, marcar 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 endereçável por byte 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 NVML (biblioteca de memória não volátil) 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, na 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 aqui: 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 o 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) para o campo "Diretórios de Biblioteca Adicionais"
- Em seguida, certifique-se de direcionar o projeto para Windows Server 2016 ou Windows 10 Atualização de Aniversário:
- 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
- adicionar "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.