Skip to content
This repository has been archived by the owner on Nov 4, 2024. It is now read-only.

Commit

Permalink
Undo GitBook sync error
Browse files Browse the repository at this point in the history
  • Loading branch information
sscargal committed Mar 31, 2023
1 parent 0700f46 commit ee46543
Show file tree
Hide file tree
Showing 41 changed files with 51 additions and 2,537 deletions.
Binary file removed .gitbook/assets/image.png
Binary file not shown.
39 changes: 20 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
# IPMCTL User Guide
# Persistent Memory Documentation

## Introduction
## **Introductory Materials**

`ipmctl` is an open source utility created and maintained by Intel to manage Intel® Optane™ persistent memory modules. `ipmctl`, works on both Linux and Windows. The full project is open source and can be seen on [GitHub](https://github.com/intel/ipmctl). In this guide we will refer to Intel® Optane™ memory modules simply as _modules_ or _persistent memory modules_.
This [USENIX ;login: article](https://www.usenix.org/system/files/login/articles/login\_summer17\_07\_rudoff.pdf), published in the Summer of 2017, provides an overview of the persistent memory programming model and the related software work that has been taking place. It includes a very high-level description of programming with [PMDK](http://pmem.io/pmdk/), although it refers to it by the old name, [NVM Libraries](http://pmem.io/2017/12/11/NVML-is-now-PMDK.html). This article is actually a follow-on to an [earlier article](https://www.usenix.org/system/files/login/articles/08\_rudoff\_040-045\_final.pdf), published in the Summer 2013 issue of USENIX ;login:.

`ipmctl` refers to the following interface components:
The [Persistent Memory Summit 2018](https://www.snia.org/pm-summit), held January 24th, 2018, provided a day full of informative talks and panels on persistent memory (slides and videos of the sesssions are available at above link).

* `libipmctl`: An Application Programming Interface (API) library for managing persistent memory modules.
* `ipmctl`: A Command Line Interface (CLI) application for configuring and managing persistent memory modules from the command line.
* `ipmctl-monitor`: A monitor daemon/system service for monitoring the health and status of persistent memory modules.
The projects on this site, like [PMDK](http://pmem.io/pmdk/), are product-neutral, meant to work on any product that provides the persistent memory programming model. One such product is Intel’s [3D XPoint](https://www.youtube.com/watch?v=Wgk4U4qVpNY). Intel has assembled a collection of persistent memory programming documentation, webinars, videos, and related materials on the [Intel Developer Zone](https://software.intel.com/en-us/persistent-memory).

Functionality includes:
Dozens of companies have collaborated on a common persistent memory programming model in the SNIA NVM Programming Technical Workgroup (TWG). SNIA provides a [persistent memory page](http://www.snia.org/PM) on their web site with links to recent presentations, persistent memory standards and white papers, etc. The SNIA activity continues to be very active, working on areas like remote persistent memory and security. The original programming model specification put forward the basic idea that applications access persistent memory as _memory-mapped files_, a concept which has appeared as the **DAX** feature (Direct Access) on both [Linux](https://nvdimm.wiki.kernel.org/) and [Windows](https://channel9.msdn.com/Events/Build/2016/P470).

* Discover Intel Optane persistent memory modules on the platform
* Provision the platform memory configuration
* Learn more about operating modes in this [video](https://www.youtube.com/watch?v=gqo3gty-R4s)
* View and update module firmware
* Configure data-at-rest security
* Monitor module health
* Track performance of modules
* Debug and troubleshoot modules
## **Standards**

Architecture Diagram:
The [SNIA NVM Programming Model](https://www.snia.org/sites/default/files/technical\_work/final/NVMProgrammingModel\_v1.2.pdf) standard describes the basic programming model used for persistent memory programming.

![](.gitbook/assets/capture.PNG)
The [ACPI Specification](http://www.uefi.org/specifications), starting with version 6.0, defines the _NVDIMM Firmware Interface Table_ (NFIT) which is how the existence of persistent memory is communicated to operating systems. The specification also describes how NVDIMMs are partitioned into _namespaces_, methods for communicating with NVDIMMs, etc.

To learn more about how ipmctl works with the hardware see the [Intel® Optane™ Persistent Memory OS Provisioning Specification](https://cdrdv2.intel.com/v1/dl/getContent/634430), which describes all the firmware interface commands used for this operation. 
The [UEFI Specification](http://www.uefi.org/specifications), covers other NVDIMM-related topics such as the _Block Translation Table_ (BTT) which allows an NVDIMM to provide block device semantics.

Before the above two standards were developed, the [NVDIMM Namespace Specification](http://pmem.io/documents/NVDIMM\_Namespace\_Spec.pdf) described the namespace and BTT mechanisms. The link to the outdated document is maintained here for reference.

## **Related Specifications**

The [NVDIMM Driver Writers Guide](http://pmem.io/documents/NVDIMM\_DriverWritersGuide-July-2016.pdf) is targeted to driver writers for NVDIMMs that adhere to the NFIT tables in the Advanced Configuration and Power Interface (ACPI) V6.0 specification, the Device Specific Method (DSM) specification, and the NVDIMM Namespace Specification. This document specifically discusses the block window HW interface and persistent memory interface that Intel is proposing for NVDIMMs. A version of the document with [change bars](http://pmem.io/documents/NVDIMM\_DriverWritersGuide-July-2016\_wChanges.pdf) \[pdf] from the previous version is also available.

The [Intel Optane PMem DSM Interface](https://pmem.io/documents/IntelOptanePMem\_DSM\_Interface-V3.0.pdf), Version 3.0, describes the NVDIMM Device Specific Methods (\_DSM) that pertain to Optane PMem modules. This document is provided as a reference for BIOS and OS driver writers supporting NVDIMMs and similar devices that appear in the ACPI NFIT table.

The [Dirty Shutdown Handling guide](https://pmem.io/documents/Dirty\_Shutdown\_Handling-V1.0.pdf) describes the (hopefully rare) error case where flushes to persistent memory did not go as expected on power failure or system crash. The guide describes how this failure is detected, and how it is communicated to applications via the dirty shutdown count**.**
66 changes: 28 additions & 38 deletions SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,30 @@
# Table of contents

* [IPMCTL User Guide](README.md)
* [Installing IPMCTL](installing-ipmctl/README.md)
* [Installing IPMCTL packages on Linux](installing-ipmctl/installing-ipmctl-packages-on-linux.md)
* [Building and Installing IPMCTL from Source on Linux](installing-ipmctl/building-and-installing-ipmctl-from-source-on-linux.md)
* [Installing IPMCTL on Microsoft Windows using the MSI Installer](installing-ipmctl/installing-ipmctl-on-microsoft-windows-using-the-msi-installer.md)
* [Building and Installing IPMCTL on Microsoft Windows from Source](installing-ipmctl/building-and-installing-ipmctl-on-microsoft-windows-from-source.md)
* [Basic Usage](basic-usage.md)
* [Module Discovery](module-discovery/README.md)
* [Show System Capabilities](module-discovery/show-system-capabilities.md)
* [Show Socket](module-discovery/show-socket.md)
* [Show Topology](module-discovery/show-topology.md)
* [Show Memory Resources](module-discovery/show-memory-resources.md)
* [Show Device](module-discovery/show-device.md)
* [Provisioning](provisioning/README.md)
* [Concepts](provisioning/concepts.md)
* [Create Memory Allocation Goal](provisioning/create-memory-allocation-goal.md)
* [Provision App Direct](provisioning/provision-app-direct.md)
* [Provision Memory Mode](provisioning/provision-memory-mode.md)
* [Provision Mixed Mode](provisioning/provision-mixed-mode.md)
* [Show Memory Allocation Goal](provisioning/show-memory-allocation-goal.md)
* [Dump Memory Allocation Settings](provisioning/dump-memory-allocation-settings.md)
* [Load Memory Allocation Goal](provisioning/load-memory-allocation-goal.md)
* [Delete Memory Allocation Goal](provisioning/delete-memory-allocation-goal.md)
* [Instrumentation](instrumentation/README.md)
* [Show Sensor](instrumentation/show-sensor.md)
* [Change Sensor Settings](instrumentation/change-sensor-settings.md)
* [Show Device Performance](instrumentation/show-device-performance.md)
* [Debug](debug/README.md)
* [Run Diagnostic](debug/run-diagnostic.md)
* [Show Error Log](debug/show-error-log.md)
* [Dump Debug Log](debug/dump-debug-log.md)
* [Show ACPI Tables](debug/show-acpi-tables.md)
* [Show Device Platform Configuration Data](debug/show-device-platform-configuration-data.md)
* [Delete Device Platform Configuration Data](debug/delete-device-platform-configuration-data.md)
* [Inject Error](debug/inject-error.md)
* [Support and Maintenance](support-and-maintenance/README.md)
* [Show Events](support-and-maintenance/show-events.md)
* [Version and Firmware](support-and-maintenance/version-and-firmware.md)
* [Persistent Memory Documentation](README.md)
* [Getting Started Guide](getting-started-guide/README.md)
* [Introduction](getting-started-guide/introduction.md)
* [PMDK Introduction](getting-started-guide/what-is-pmdk.md)
* [NDCTL Introduction](getting-started-guide/what-is-ndctl.md)
* [System Requirements](getting-started-guide/system-requirements.md)
* [Creating Development Environments](getting-started-guide/creating-development-environments/README.md)
* [Linux Environments](getting-started-guide/creating-development-environments/linux-environments/README.md)
* [Using the memmap Kernel Option](getting-started-guide/creating-development-environments/linux-environments/linux-memmap.md)
* [Advanced Topics](getting-started-guide/creating-development-environments/linux-environments/advanced-topics/README.md)
* [Partitioning Namespaces](getting-started-guide/creating-development-environments/linux-environments/advanced-topics/partitioning-namespaces.md)
* [I/O Alignment Considerations](getting-started-guide/creating-development-environments/linux-environments/advanced-topics/i-o-alignment-considerations.md)
* [Windows Environments](getting-started-guide/creating-development-environments/windows-environments.md)
* [Virtualization](getting-started-guide/creating-development-environments/virtualization/README.md)
* [Windows Server Hyper-V](getting-started-guide/creating-development-environments/virtualization/windows-server-hyper-v.md)
* [Using QEMU Virtualization](getting-started-guide/creating-development-environments/virtualization/qemu.md)
* [VMware VSphere/ESXi](getting-started-guide/creating-development-environments/virtualization/vmware-vsphere-esxi.md)
* [Cloud Environments](getting-started-guide/creating-development-environments/cloud-environments/README.md)
* [Microsoft Azure Cloud](getting-started-guide/creating-development-environments/cloud-environments/microsoft-azure-cloud.md)
* [Google Cloud Platform (GCP)](getting-started-guide/creating-development-environments/cloud-environments/google-cloud-platform-gcp.md)
* [Installing NDCTL](getting-started-guide/installing-ndctl.md)
* [Installing PMDK](getting-started-guide/installing-pmdk/README.md)
* [PMDK Directory Structure](getting-started-guide/installing-pmdk/pmdk-directory-structure.md)
* [Installing PMDK using Linux Packages](getting-started-guide/installing-pmdk/installing-pmdk-using-linux-packages.md)
* [Installing PMDK from Source on Linux](getting-started-guide/installing-pmdk/compiling-pmdk-from-source.md)
* [Installing PMDK on Windows](getting-started-guide/installing-pmdk/installing-pmdk-on-windows.md)
* [IPMCTL User Guide](https://docs.pmem.io/ipmctl-user-guide/)
* [NDCTL User Guide](https://docs.pmem.io/ndctl-user-guide/)
29 changes: 0 additions & 29 deletions basic-usage.md

This file was deleted.

36 changes: 0 additions & 36 deletions debug/README.md

This file was deleted.

25 changes: 0 additions & 25 deletions debug/delete-device-platform-configuration-data.md

This file was deleted.

32 changes: 0 additions & 32 deletions debug/dump-debug-log.md

This file was deleted.

Loading

0 comments on commit ee46543

Please sign in to comment.