Программирование постоянной памяти в Windows — интеграция NVML
Технология постоянной памяти (PM) обеспечивает доступ на уровне байтов к энергонезависимым носителям, а также значительно сокращает задержку при хранении или извлечении данных. Он создает новый уровень между памятью системы и традиционным хранилищем. Все программы, зависящие от или масштабируемые с быстрой записью на постоянный носитель, могут воспользоваться преимуществами PM.
В этой статье показано, как можно интегрировать библиотеку энергонезависимой памяти (NVML) в проект Visual Studio для простоты использования.
Примечание
Постоянную память иногда также называют памятью класса хранилища (SCM).
PM и NVML
Первая поддержка постоянной памяти появилась в Windows Server 2016 и юбилейном обновлении Windows 10 (1607). Для краткого обзора проверка эти два видео Channel9:
- Использование энергонезависимой памяти (NVDIMM-N) в качестве блочного хранилища в Windows Server 2016
- Использование энергонезависимой памяти (NVDIMM-N) в качестве хранилища Byte-Addressable в Windows Server 2016
Чтобы помочь разработчикам воспользоваться преимуществами постоянной памяти, корпорация Майкрософт также внесла свой вклад в внедрение библиотеки энергонезависимой памяти (NVML) в Windows. Эта библиотека предоставляет различные средства для поддержки постоянной памяти приложений. Например, он содержит код, который позволяет легко создать хранилище ключей и значений с поддержкой PM для чрезвычайно быстрого поиска и хранилищ. Дополнительные сведения о NVML, включая примеры, см. в библиотеке NVM.
Интеграция NVML в проект Visual Studio
- Скачивание файлов и заголовков библиотеки NVML
- NVML поддерживается на GitHub. Вы можете скомпилировать источник самостоятельно или просто скачать скомпилированные двоичные файлы непосредственно отсюда: NVML версии 1.2 — Windows Technical Preview.
Поместите файлы и заголовки библиотеки в каталог по своему выбору, например C:\NVML\lib и C:\NVML\inc соответственно.
Настройте проект следующим образом:
- Откройте проект Visual Studio и в Обозреватель решений щелкните правой кнопкой мыши имя проекта.
- Откройте область параметров проекта в нижней части полученного всплывающего окна.
- Перейдите к разделу "Свойства конфигурации -> C/C++" и добавьте папку, в которой вы сохранили заголовок (C:\NVML\inc), в поле "Дополнительные каталоги включения".
- Затем перейдите к разделу "Свойства конфигурации —> компоновщик" и добавьте папку, в которой хранится библиотека (C:\NVML\lib), в поле "Дополнительные каталоги библиотек".
- Затем убедитесь, что проект предназначен для Windows Server 2016 или юбилейного обновления Windows 10:
- Перейдите к разделу "Свойства конфигурации —> общие" и задайте для поля "Версия целевой платформы" значение "10.0.14393.0" и
- Перейдите к разделу "Свойства конфигурации -> C/C++" и добавьте "NTDDI_VERSION=NTDDI_WIN10_RS1;" в поле "Препроцессор".
- Включение заголовков в код и ссылка на необходимые библиотеки
- На этом этапе можно просто включить файлы заголовков, которые вы хотите использовать в коде, как и любые другие файлы заголовков. Например, чтобы использовать libpmem:
- добавьте "#include <libpmem.h>" и
- добавьте libpmem.lib в раздел "Свойства конфигурации -> Компоновщик -> Входные данные -> Дополнительные зависимости"
На этом этапе вы готовы вызвать функции библиотеки непосредственно в коде и воспользоваться их преимуществами.