MAAS lists DCPMM in App Direct mode as RAM, not Storage
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MAAS |
Invalid
|
Undecided
|
Unassigned | ||
lshw |
Invalid
|
Undecided
|
Unassigned | ||
lxd |
Invalid
|
Undecided
|
Unassigned | ||
maas-images |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
The advent of Cascade Lake introduces the new persistent memory technology, known as DCPMMs or NVDIMMs. These are RAM devices that can function as standard RAM, persistent memory (RAM that doesn't empty on power-down) and block storage devices, providing filesystems immediately next to the CPU.
MAAS does not currently properly handle DCPMM devices. Currently, no matter what mode the memory is in, MAAS lumps the DCPMMs in as "RAM" incorrectly reporting enormous amounts of RAM rather than an accurate picture of RAM and Storage.
For example, the test system has several 128GB DCPMM modules installed in addition to standard DDR4 RAM:
Slot Number  Size  Type  Speed 
CPU1_DIMM_A1 16384MB DDR4 2666MH
CPU1_DIMM_A2 129408MB Logical non-volatile device 2666MH
CPU1_DIMM_B1 16384MB DDR4 2666MH
CPU1_DIMM_B2 129408MB Logical non-volatile device
CPU1_DIMM_C1 16384MB DDR4 2666MH
CPU1_DIMM_C2 129408MB Logical non-volatile device 2666MH
CPU1_DIMM_D1 16384MB DDR4 2666MH
CPU1_DIMM_D2 129408MB Logical non-volatile device 2666MH
CPU1_DIMM_E1 16384MB DDR4 2666MH
CPU1_DIMM_E2 129408MB Logical non-volatile device 2666MH
CPU1_DIMM_F1 16384MB DDR4 2666MH
CPU1_DIMM_F2 129408MB Logical non-volatile device 2666MH
CPU2_DIMM_A1 16384MB DDR4 2666MH
CPU2_DIMM_A2 129408MB Logical non-volatile device 2666MH
CPU2_DIMM_B1 16384MB DDR4 2666MH
CPU2_DIMM_B2 129408MB Logical non-volatile device 2666MH
CPU2_DIMM_C1 16384MB DDR4 2666MH
CPU2_DIMM_C2 129408MB Logical non-volatile device 2666MH
CPU2_DIMM_D1 16384MB DDR4 2666MH
CPU2_DIMM_D2 129408MB Logical non-volatile device 2666MH
CPU2_DIMM_E1 16384MB DDR4 2666MH
CPU2_DIMM_E2 129408MB Logical non-volatile device 2666MH
CPU2_DIMM_F1 16384MB DDR4 2666MH
CPU2_DIMM_F2 129408MB Logical non-volatile device 2666MH
These are configured into two regions:
root@vought:~# ipmctl show -region
SocketID ISetID PersistentMemor
0 0x595e7f4801ff2ccc AppDirect 756.0 GiB 624.0 GiB Healthy
1 0xec947f480a022ccc AppDirect 756.0 GiB 492.0 GiB Healthy
ALL DCPMMs are configured in AppDirect mode and Bionic supports DCPMMs in all modes as of the 18.04 release.
I've carved out a couple storage devices:
root@vought:~# ndctl list
[
{
"dev"
"mode"
"size"
"uuid"
"raw_
"sector_
"blockdev"
"numa_node":1
},
{
"dev"
"mode":"fsdax",
"map":"dev",
"size"
"uuid"
"raw_
"sector_
"blockdev"
"numa_node":0
}
]
and those are visible to the Bionic after deployment:
root@vought:~# fdisk -l
Disk /dev/sda: 745.2 GiB, 800166076416 bytes, 1562824368 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D0D6561D-
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1562824334 1561773711 744.7G Linux filesystem
Disk /dev/pmem1s: 263.8 GiB, 283190206464 bytes, 69138234 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xddf6fb2f
Device Boot Start End Sectors Size Id Type
/dev/pmem1s1 256 64453119 64452864 245.9G 83 Linux
Disk /dev/pmem0: 130 GiB, 139517231104 bytes, 272494592 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xc4436811
Device Boot Start End Sectors Size Id Type
/dev/pmem0p1 2048 257812479 257810432 123G 83 Linux
So as you can see, I have a 123GB storage device and a 246GB storage device, yet NEITHER of those appear in MAAS as a configurable storage device. Instead MAAS still incorrectly reports everything as RAM.
Memory
1708.5 GiB
Storage
800.2 GB over 1 disks
I then recommissioned once more (previous attempts failed to pick up the pmem devices) to see if the ephemeral itself could see the devices. Turns out the ephemeral cannot see them as it's apparently lacking the necessary drivers:
From inside the commissioning ephemeral:
ubuntu@
ubuntu@
And from inside a full deployment of bionic:
root@vought:~# lsmod |grep pmem
dax_pmem 16384 0
nd_pmem 20480 0
device_dax 20480 1 dax_pmem
nd_btt 24576 1 nd_pmem
So here's what I think needs to be added/corrected in MAAS:
Phase 1:
Add pmem modules to the ephemerals so commissioning can pick up configured storage devices on DCPMMs
MAAS to properly identify DCPMM storage as storage, and memory segments as memory, and correctly display these in the system summary and other information
Phase 2:
MAAS to gain ability to configure these using MAAS just as you can configure any other storage device such as RAID, bcache, disk partitioning, etc.
Related branches
- Newell Jensen (community): Approve
-
Diff: 13 lines (+2/-0)1 file modifiedbin/kpack-from-image (+2/-0)
Changed in maas-images: | |
assignee: | nobody → Lee Trager (ltrager) |
status: | New → Incomplete |
Changed in maas: | |
status: | Incomplete → Confirmed |
Changed in maas-images: | |
status: | Incomplete → Confirmed |
Changed in maas: | |
assignee: | Lee Trager (ltrager) → nobody |
Changed in maas-images: | |
assignee: | Lee Trager (ltrager) → nobody |
status: | Confirmed → Incomplete |
Changed in maas: | |
status: | Incomplete → New |
tags: | added: hwcert-server |
Changed in maas-images: | |
status: | Fix Committed → Fix Released |
The above really depends on the ipmctl tool being introduced into Ubuntu which still hasn't happened yet. So the phase one above boils down to:
1: MAAS can identify the storage devices presented by pre-configured DCPMMs
2: MAAS can partition/format those devices as it does any other block device
3: MAAS can correctly display these in the system summary (currently MAAS shows them as 100% RAM even when they're configured as 100% storage in App Direct mode).
Phase 2 would see MAAS gaining the ability to configure the DCPMMs directly once ipmctl is in Ubuntu including setting them up in a mixed mode (X% RAM, Y% fsdax, Z% devdax, etc)
Phase 1 is the minimum support needed I think.