9. SPDK, PMDK & Vtune™ Summit 9
Linuxutilities–ipmctlandndctl IPMCTL NDCTL
Vendor Intel® Neutral
Open Source Yes Yes
Linux Yes Yes
Windows Yes No
Manage Goals/Regions Yes No
Manage Namespaces No* Yes
Health/S.M.A.R.T Yes Yes
Performance Yes No
Security Yes Yes
* Available in UEFI
IPMCTL
• Intel® Optane® Technology only
• Linux, Windows, & UEFI
• Manage Hardware features
• Discover & Manage Modules
• Provision Platform Config – Memory or AppDirect
• View & Update Module Firmware
• Monitor Health
• Track Performance
• Debug & Troubleshoot
NDCTL
• Vendor Neutral
• Linux only
• Manage Hardware and OS features
• Show Module Information
• Manage Namespaces & Config Labels
• Monitor Health
• Manage Security - Passphrases & Secure Erase
• Error Injection/Testing
10. SPDK, PMDK & Vtune™ Summit 10
ipmctl-UtilityformanagingIntelOptaneDCpersistentmemorymodules
show –device
show -dimm
show –memory-resources
show –socket
show –system-capabilities
show -topology
change –device-passphrase
change –device-security
enable –device-security
erase –device-data
create -goal
delete -goal
show –goal
dump –goal
load –goal
show -region
show -performance
show -sensor
change -sensor
dump -support
show –events
show –firmware
show –host
acknowledge –event
update -firmware
change –preferences
show -preferences
help
dump –debug-log
inject -error
run -diagnostic
show -acpi
show -pcd
show –nfit
show –error-log
Device Discovery
SecurityProvision Memory Health & Performance
Support & Maintenance
Debugging
18. SPDK, PMDK & Vtune™ Summit 18
AccessingPersistentMemoryfromtheOS
Legacy Storage APIs
Block Atomicity
Storage APIs with DAX
(AppDirect)
PersistentMemory
USERSPACEKERNELSPACE
Standard
File API
GenericNVDIMMDriver
Application
FileSystem
Standard
Raw
Device
Access
mmap
Load/
Store
Standard
File API
pmem-Aware
FileSystem
MMU
Mappings
“DAX”
BTT
DevDAX
PMDK
mmap
HARDWARE
• No Code Changes Required
• Operates in Blocks like SSD/HDD
• Traditional read/write
• Works with Existing File
Systems
• Atomicity at block level
• Block size configurable
• 4K, 512B*
• NVDIMM Driver required
• Support starting Kernel 4.2
• Configured as Boot Device
• Higher Endurance than Enterprise
SSDs
• High Performance Block Storage
• Low Latency, higher BW, High
IOPs
*Requires Linux
• Code changes may be required*
• Bypasses file system page cache
• Requires DAX enabled file system
• XFS, EXT4, NTFS
• No Kernel Code or interrupts
• No interrupts
• Fastest IO path possible
* Code changes required for load/store direct
access if the application does not already
support this.
19. SPDK, PMDK & Vtune™ Summit
ProvisioningPersistentmemorySteps
Create Regions
(Hardware)
Create
Namespaces
(Kernel)
Make & Mount
File Systems
(User Space)
1 2 3
22. SPDK, PMDK & Vtune™ Summit 22
Step2&3–CreatingNamespaces&Filesystems
PMEM (Socket1)PMEM (Socket0)
Volatile
DRAM
Region 0
Namespace0.0
(fsdax)
/dev/pmem0
DAX
Filesystem
Namespace0.1
(devdax)
/dev/dax0.1
Region 1
Namespace1.0
(sector)
/dev/pmem1s
DAX
Filesystem
Namespace1.1
(fsdax)
/dev/pmem2
NVDIMM
Driver
(Kernel)
Hardware
DAX Filesystems:
EXT4, XFS, NTFS
Persistent Memory
Devices
Namespaces
Regions
(Interleave Sets)
Mount DAX-enabled file
system onto DCPMMs
Operating System
defined software device
representing the
namespace
ndctl (Linux): configures
& manages namespaces
ipmctl (Linux or UEFI):
configures & manages
the regions on the
DIMMs
DAX
FS
DAX
FS
23. SPDK, PMDK & Vtune™ Summit
23
Namespacemodes
FSDAX (Default)
• Default namespace mode
• Supports XFS & EXT4
• Removes Page Cache
• Allows Direct Mappings to PMEM
• Block Device (/dev/pmem0)
DEVDAX
• Similar mmap() capabilities to FSDAX
• Useful for RDMA
• Removes Page Cache
• Allows Direct Mappings to PMEM
• Character Device (/dev/dax0.0)
SECTOR
• Supports any filesystem
• Sector/Block Atomicity
• No DAX Support
• OS Bootable
• Block Device (/dev/pmem0s)
RAW
• Acts like a Memory Disk
• No DAX Support
See:
• https://docs.pmem.io/ndctl-users-guide/managing-namespaces
• # man ndctl-create-namespace