Compreender e implantar memória persistenteUnderstand and deploy persistent memory

Aplica-se a: Windows Server 2019Applies to: Windows Server 2019

A memória persistente (ou PMem) é um novo tipo de tecnologia de memória que oferece uma combinação exclusiva de alta capacidade e persistência acessíveis.Persistent memory (or PMem) is a new type of memory technology that delivers a unique combination of affordable large capacity and persistence. Este artigo fornece informações sobre o PMem e as etapas para implantá-lo no Windows Server 2019 usando o Espaços de Armazenamento Diretos.This article provides background on PMem and the steps to deploy it in Windows Server 2019 by using Storage Spaces Direct.

Segundo planoBackground

O PMem é um tipo de memória RAM não volátil (NVDIMM) que mantém seu conteúdo por meio de ciclos de energia.PMem is a type of non-volatile RAM (NVDIMM) that retains its content through power cycles. O conteúdo da memória permanece mesmo quando a energia do sistema fica inativa no caso de uma perda de energia inesperada, um desligamento iniciado pelo usuário, uma falha do sistema e assim por diante.Memory contents remain even when system power goes down in the event of an unexpected power loss, user initiated shutdown, system crash, and so on. Essa característica exclusiva significa que você também pode usar a PMem como armazenamento.This unique characteristic means that you can also use PMem as storage. É por isso que você pode ouvir as pessoas se referirem à PMem como "memória de classe de armazenamento".This is why you may hear people refer to PMem as "storage-class memory."

Para ver alguns desses benefícios, vejamos a demonstração a seguir do Microsoft Ignite 2018.To see some of these benefits, let's look at the following demo from Microsoft Ignite 2018.

Demonstração do pMem do Microsoft Ignite 2018Microsoft Ignite 2018 Pmem demo

Qualquer sistema de armazenamento que fornece tolerância a falhas necessariamente faz cópias distribuídas de gravações.Any storage system that provides fault tolerance necessarily makes distributed copies of writes. Essas operações devem atravessar a rede e ampliar o tráfego de gravação de back-end.Such operations must traverse the network and amplify backend write traffic. Por esse motivo, os números de benchmark de maior IOPS absolutos normalmente são obtidos apenas com a medição de leituras, especialmente se o sistema de armazenamento tiver otimizações de senso comum para ler a partir da cópia local sempre que possível.For this reason, the absolute largest IOPS benchmark numbers are typically achieved by measuring reads only, especially if the storage system has common-sense optimizations to read from the local copy whenever possible. Espaços de Armazenamento Diretos é otimizado para fazer isso.Storage Spaces Direct is optimized to do so.

Quando medido usando apenas operações de leitura, o cluster fornece 13.798.674 IOPS.When measured by using only read operations, the cluster delivers 13,798,674 IOPS.

captura de tela de registro de IOPS de 13.7 m

Se você assistir ao vídeo de maneira mais minuciosa, observará que o que é ainda mais Jaw é a latência.If you watch the video closely, you'll notice that what's even more jaw-dropping is the latency. Mesmo em mais de 13,7 M IOPS, o sistema de arquivos no Windows está relatando latência consistentemente menor que 40 μs!Even at over 13.7 M IOPS, the file system in Windows is reporting latency that's consistently less than 40 µs! (Esse é o símbolo de microssegundos, um milionésimo de um segundo.) Essa velocidade é uma ordem de magnitude mais rápida do que os fornecedores típicos de tudo-flash que, de forma orgulho, anunciam hoje.(That's the symbol for microseconds, one-millionth of a second.) This speed is an order of magnitude faster than what typical all-flash vendors proudly advertise today.

Juntos, Espaços de Armazenamento Diretos no Windows Server 2019 e na ® memória persistente do Intel Optane ™ DC oferecem desempenho inovador.Together, Storage Spaces Direct in Windows Server 2019 and Intel® Optane™ DC persistent memory deliver breakthrough performance. Esse benchmark de HCI líder do setor de 13.7 M IOPS, acompanhado por latência previsível e extremamente baixa, é mais do que o dobro de nosso benchmark líder do setor de IOPS de 6.7 M.This industry-leading HCI benchmark of over 13.7M IOPS, accompanied by predictable and extremely low latency, is more than double our previous industry-leading benchmark of 6.7M IOPS. Além disso, desta vez precisávamos apenas 12 nós de servidor — 25% menos de dois anos atrás.What's more, this time we needed only 12 server nodes—25 percent fewer than two years ago.

Ganhos de IOPS

O hardware de teste era um cluster de 12 servidores que foi configurado para usar espelhamento triplo e volumes ReFS delimitados, 12 x Intel ® S2600WFT, 384 GiB Memory, 2 x 28-core "CascadeLake", 1,5 TB Intel ® Optane de ™ memória persistente de DC como cache, 32 TB NVMe (4 x 8 TB Intel ® DC P4510) como capacidade, 2 x Mellanox ConnectX-4 25 Gbps.The test hardware was a 12-server cluster that was configured to use three-way mirroring and delimited ReFS volumes, 12 x Intel® S2600WFT, 384 GiB memory, 2 x 28-core "CascadeLake," 1.5 TB Intel® Optane™ DC persistent memory as cache, 32 TB NVMe (4 x 8 TB Intel® DC P4510) as capacity, 2 x Mellanox ConnectX-4 25 Gbps.

A tabela a seguir mostra os números de desempenho completos.The following table shows the full performance numbers.

Parâmetro de comparaçãoBenchmark DesempenhoPerformance
leitura aleatória de 4K 100%4K 100% random read IOPS de 13,8 milhões13.8 million IOPS
leitura/gravação aleatória de 4K 90/10%4K 90/10% random read/write IOPS de 9.450.0009.45 million IOPS
leitura sequencial de 2 MB2 MB sequential read taxa de transferência de 549 GB/s549 GB/s throughput

Hardware com suporteSupported hardware

A tabela a seguir mostra o hardware de memória persistente com suporte para o Windows Server 2019 e o Windows Server 2016.The following table shows supported persistent memory hardware for Windows Server 2019 and Windows Server 2016.

Tecnologia de memória persistentePersistent Memory Technology Windows Server 2016Windows Server 2016 Windows Server 2019Windows Server 2019
NVDIMM-N no modo persistenteNVDIMM-N in persistent mode Com suporteSupported Com suporteSupported
Intel Optane ™ Memória persistente de DC no modo direto do aplicativoIntel Optane™ DC Persistent Memory in App Direct Mode Sem suporteNot Supported Com suporteSupported
Intel Optane ™ Memória persistente de DC no modo de memóriaIntel Optane™ DC Persistent Memory in Memory Mode Com suporteSupported Com suporteSupported

Observação

O Intel Optane dá suporte aos modos de memória (volátil) e direto do aplicativo (persistente).Intel Optane supports both Memory (volatile) and App Direct (persistent) modes.

Observação

Quando você reinicia um sistema que tem vários ® ™ módulos PMem Intel Optane no modo de aplicativo direto que são divididos em vários namespaces, você pode perder o acesso a alguns ou todos os discos de armazenamento lógico relacionados.When you restart a system that has multiple Intel® Optane™ PMem modules in App Direct mode that are divided into multiple namespaces, you might lose access to some or all of the related logical storage disks. Esse problema ocorre em versões do Windows Server 2019 anteriores à versão 1903.This issue occurs on Windows Server 2019 versions that are older than version 1903.

Essa perda de acesso ocorre porque um módulo PMem é não treinado ou, de outra forma, falha quando o sistema é iniciado.This loss of access occurs because a PMem module is untrained or otherwise fails when the system starts. Nesse caso, todos os namespaces de armazenamento em qualquer módulo PMem no sistema falham, incluindo namespaces que não são mapeados fisicamente para o módulo com falha.In such a case, all the storage namespaces on any PMem module on the system fail, including namespaces that do not physically map to the failed module.

Para restaurar o acesso a todos os namespaces, substitua o módulo com falha.To restore access to all the namespaces, replace the failed module.

Se um módulo falhar no Windows Server 2019 versão 1903 ou em versões mais recentes, você perderá o acesso somente a namespaces que são mapeados fisicamente para o módulo afetado.If a module fails on Windows Server 2019 version 1903 or newer versions, you lose access to only namespaces that physically map to the affected module. Outros namespaces não são afetados.Other namespaces are not affected.

Agora, vamos nos aprofundar em como você configura a memória persistente.Now, let's dive into how you configure persistent memory.

Conjuntos intercaladosInterleaved sets

Noções básicas sobre conjuntos intercaladosUnderstanding interleaved sets

Lembre-se de que um NVDIMM reside em um slot de DIMM (memória) padrão, que coloca os dados mais próximos do processador.Recall that an NVDIMM resides in a standard DIMM (memory) slot, which puts data closer to the processor. Essa configuração reduz a latência e melhora o desempenho de busca.This configuration reduces latency and improves fetch performance. Para aumentar ainda mais a taxa de transferência, dois ou mais NVDIMMs criam um conjunto intercalado de n vias para distribuir operações de leitura/gravação.To further increase throughput, two or more NVDIMMs create an n-way interleaved set to stripe read/write operations. As configurações mais comuns são intercalação bidirecional ou de quatro vias.The most common configurations are two-way or four-way interleaving. Um conjunto intercalado também faz com que vários dispositivos de memória persistente apareçam como um único disco lógico para o Windows Server.An interleaved set also makes multiple persistent memory devices appear as a single logical disk to Windows Server. Você pode usar o cmdlet Get-PmemDisk do Windows PowerShell para examinar a configuração desses discos lógicos, da seguinte maneira:You can use the Windows PowerShell get-PmemDisk cmdlet to review the configuration of such logical disks, as follows:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

Podemos ver que o disco PMem lógico #2 usa os dispositivos físicos Id20 e Id120, e o disco PMem lógico #3 usa os dispositivos físicos Id1020 e Id1120.We can see that the logical PMem disk #2 uses the physical devices Id20 and Id120, and logical PMem disk #3 uses the physical devices Id1020 and Id1120.

Para recuperar mais informações sobre o conjunto intercalado usado por uma unidade lógica, execute o cmdlet Get-PmemPhysicalDevice :To retrieve further information about the interleaved set that a logical drive uses, run the Get-PmemPhysicalDevice cmdlet:

(Get-PmemDisk)[0] | Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB

Configurando conjuntos intercaladosConfiguring interleaved sets

Para configurar um conjunto intercalado, comece revisando todas as regiões de memória persistente que não estão atribuídas a um disco PMem lógico no sistema.To configure an interleaved set, start by reviewing all the persistent memory regions that are not assigned to a logical PMem disk on the system. Para fazer isso, execute o seguinte cmdlet do PowerShell:To do this, run the following PowerShell cmdlet:

Get-PmemUnusedRegion

RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
       1     270582939648 {20, 120}
       3     270582939648 {1020, 1120}

Para ver todas as informações do dispositivo PMem no sistema, incluindo tipo de dispositivo, local, integridade e status operacional, e assim por diante, execute o seguinte cmdlet no servidor local:To see all the PMem device information in the system, including device type, location, health and operational status, and so on, run the following cmdlet on the local server:

Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile
                                                                                                                      memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------
1020     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_C1     102005310        126 GB                 0 GB
1120     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_F1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB

Como temos uma região PMem não usada disponível, podemos criar novos discos de memória persistente.Because we have an available unused PMem region, we can create new persistent memory disks. Podemos usar a região não usada para criar vários discos de memória persistente executando os seguintes cmdlets:We can use the unused region to create multiple persistent memory disks by running the following cmdlets:

Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.

Depois que isso for feito, podemos ver os resultados executando:After this is done, we can see the results by running:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

Vale a pena observar que podemos executar Get-PhysicalDisk | Em que o PmemDisk de MediaType-EQ em vez de Get- para obter os mesmos resultados.It is worth noting that we can run Get-PhysicalDisk | Where MediaType -Eq SCM instead of Get-PmemDisk to get the same results. O disco PMem recém-criado corresponde a um para um com unidades que aparecem no PowerShell e no centro de administração do Windows.The newly-created PMem disk corresponds one-to-one with drives that appear in PowerShell and in Windows Admin Center.

Usando memória persistente para cache ou capacidadeUsing persistent memory for cache or capacity

O Espaços de Armazenamento Diretos no Windows Server 2019 dá suporte ao uso de memória persistente como um cache ou uma unidade de capacidade.Storage Spaces Direct on Windows Server 2019 supports using persistent memory as either a cache or a capacity drive. Para obter mais informações sobre como configurar unidades de cache e capacidade, consulte noções básicas sobre o cache em espaços de armazenamento diretos.For more information about how to set up cache and capacity drives, see Understanding the cache in Storage Spaces Direct.

Criando um volume DAXCreating a DAX volume

Compreendendo o DAXUnderstanding DAX

Há dois métodos para acessar a memória persistente.There are two methods for accessing persistent memory. Eles são:They are:

  1. Acesso direto (DAX), que opera como memória para obter a menor latência.Direct access (DAX), which operates like memory to get the lowest latency. O aplicativo modifica diretamente a memória persistente, ignorando a pilha.The app directly modifies the persistent memory, bypassing the stack. Observe que você só pode usar DAX em combinação com NTFS.Note that you can only use DAX in combination with NTFS.
  2. Bloquear o acesso, que funciona como armazenamento para compatibilidade de aplicativos.Block access, which operates like storage for app compatibility. Neste configuração, os dados fluem pela pilha.In this configuraion, the data flows through the stack. Você pode usar essa configuração em combinação com NTFS e ReFS.You can use this configuration in combination with NTFS and ReFS.

A figura a seguir mostra um exemplo de uma configuração DAX:The following figure shows an example of a DAX configuration:

Pilha DAX

Configurando DAXConfiguring DAX

Precisamos usar os cmdlets do PowerShell para criar um volume DAX em um disco de memória persistente.We have to use PowerShell cmdlets to create a DAX volume on a persistent memory disk. Usando a opção -IsDax , podemos Formatar um volume para que seja habilitado para Dax.By using the -IsDax switch, we can format a volume to be DAX-enabled.

Format-Volume -IsDax:$true

O trecho de código a seguir ajuda a criar um volume DAX em um disco de memória persistente.The following code snippet helps you create a DAX volume on a persistent memory disk.

# Here we use the first pmem disk to create the volume as an example
$disk = (Get-PmemDisk)[0] | Get-PhysicalDisk | Get-Disk
# Initialize the disk to GPT if it is not initialized
If ($disk.partitionstyle -eq "RAW") {$disk | Initialize-Disk -PartitionStyle GPT}
# Create a partition with drive letter 'S' (can use any available drive letter)
$disk | New-Partition -DriveLetter S -UseMaximumSize


   DiskPath: \\?\scmld#ven_8980&dev_097a&subsys_89804151&rev_0018#3&1b1819f6&0&03018089fb63494db728d8418b3cbbf549997891#{53f56307-b6
bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                               Size Type
---------------  ----------- ------                                               ---- ----
2                S           16777216                                        251.98 GB Basic

# Format the volume with drive letter 'S' to DAX Volume
Format-Volume -FileSystem NTFS -IsDax:$true -DriveLetter S

DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining      Size
----------- ------------ -------------- --------- ------------ ----------------- -------------      ----
S                        NTFS           Fixed     Healthy      OK                    251.91 GB 251.98 GB

# Verify the volume is DAX enabled
Get-Partition -DriveLetter S | fl


UniqueId             : {00000000-0000-0000-0000-000100000000}SCMLD\VEN_8980&DEV_097A&SUBSYS_89804151&REV_0018\3&1B1819F6&0&03018089F
                       B63494DB728D8418B3CBBF549997891:WIN-8KGI228ULGA
AccessPaths          : {S:\, \\?\Volume{cf468ffa-ae17-4139-a575-717547d4df09}\}
DiskNumber           : 2
DiskPath             : \\?\scmld#ven_8980&dev_097a&subsys_89804151&rev_0018#3&1b1819f6&0&03018089fb63494db728d8418b3cbbf549997891#{5
                       3f56307-b6bf-11d0-94f2-00a0c91efb8b}
DriveLetter          : S
Guid                 : {cf468ffa-ae17-4139-a575-717547d4df09}
IsActive             : False
IsBoot               : False
IsHidden             : False
IsOffline            : False
IsReadOnly           : False
IsShadowCopy         : False
IsDAX                : True                   # <- True: DAX enabled
IsSystem             : False
NoDefaultDriveLetter : False
Offset               : 16777216
OperationalStatus    : Online
PartitionNumber      : 2
Size                 : 251.98 GB
Type                 : Basic

Monitorando a integridadeMonitoring health

Quando você usa a memória persistente, há algumas diferenças na experiência de monitoramento:When you use persistent memory, there are a few differences in the monitoring experience:

  • A memória persistente não cria contadores de desempenho de disco físico, portanto, você não verá que ele aparece em gráficos no centro de administração do Windows.Persistent memory doesn't create Physical Disk performance counters, so you won't see it appear on charts in Windows Admin Center.
  • A memória persistente não cria dados Storport 505, portanto, você não obterá detecção de exceção proativa.Persistent memory doesn't create Storport 505 data, so you won't get proactive outlier detection.

Além disso, a experiência de monitoramento é a mesma para qualquer outro disco físico.Apart from that, the monitoring experience is the same as for any other physical disk. Você pode consultar a integridade de um disco de memória persistente executando os seguintes cmdlets:You can query for the health of a persistent memory disk by running the following cmdlets:

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Unhealthy    None          True         {20, 120}         2
3          252 GB Healthy      None          True         {1020, 1120}      0

Get-PmemDisk | Get-PhysicalDisk | select SerialNumber, HealthStatus, OperationalStatus, OperationalDetails

SerialNumber               HealthStatus OperationalStatus  OperationalDetails
------------               ------------ ------------------ ------------------
802c-01-1602-117cb5fc      Healthy      OK
802c-01-1602-117cb64f      Warning      Predictive Failure {Threshold Exceeded,NVDIMM_N Error}

HealthStatus mostra se o disco PMem está íntegro.HealthStatus shows whether the PMem disk is healthy.

O valor UnsafeshutdownCount controla o número de desligamentos que podem causar perda de dados nesse disco lógico.The UnsafeshutdownCount value tracks the number of shutdowns that may cause data loss on this logical disk. É a soma das contagens de desligamento não seguras de todos os dispositivos PMem subjacentes deste disco.It is the sum of the unsafe shutdown counts of all the underlying PMem devices of this disk. Para obter mais informações sobre o status de integridade, use o cmdlet Get-PmemPhysicalDevice para encontrar informações como OperationalStatus.For more information about the health status, use the Get-PmemPhysicalDevice cmdlet to find information such as OperationalStatus.

Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
1020     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_C1     102005310        126 GB                 0 GB
1120     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_F1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB
20       Intel INVDIMM device Unhealthy    {HardwareError}   CPU1_DIMM_C1     102005310        126 GB                 0 GB

Esse cmdlet mostra qual dispositivo de memória persistente não está íntegro.This cmdlet shows which persistent memory device is unhealthy. O dispositivo não íntegro (DeviceID 20) corresponde ao caso no exemplo anterior.The unhealthy device (DeviceId 20) matches the case in the previous example. O PhysicalLocation no BIOS pode ajudar a identificar qual dispositivo de memória persistente está em estado de falha.The PhysicalLocation in BIOS can help identify which persistent memory device is in faulty state.

Substituindo a memória persistenteReplacing persistent memory

Este artigo descreve como exibir o status de integridade da sua memória persistente.This article describes how to view the health status of your persistent memory. Se você precisar substituir um módulo com falha, será necessário provisionar novamente o disco PMem (consulte as etapas descritas anteriormente).If you have to replace a failed module, you have to re-provision the PMem disk (refer to the steps that we outlined previously).

Ao solucionar problemas, talvez seja necessário usar Remove-PmemDisk.When you troubleshoot, you might have to use Remove-PmemDisk. Esse cmdlet Remove um disco de memória persistente específico.This cmdlet removes a specific persistent memory disk. Podemos remover todos os discos PMem atuais executando os seguintes cmdlets:We can remove all current PMem disks by running the following cmdlets:

Get-PmemDisk | Remove-PmemDisk

cmdlet Remove-PmemDisk at command pipeline position 1
Supply values for the following parameters:
DiskNumber: 2

This will remove the persistent memory disk(s) from the system and will result in data loss.
Remove the persistent memory disk(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
Removing the persistent memory disk. This may take a few moments.

Importante

A remoção de um disco de memória persistente causa a perda de dados nesse disco.Removing a persistent memory disk causes data loss on that disk.

Outro cmdlet que você pode precisar é Initialize-PmemPhysicalDevice.Another cmdlet you might need is Initialize-PmemPhysicalDevice. Esse cmdlet inicializa as áreas de armazenamento de rótulo nos dispositivos de memória persistente física e pode limpar as informações de armazenamento de rótulo corrompidas nos dispositivos PMem.This cmdlet initializes the label storage areas on the physical persistent memory devices, and can clear corrupted label storage information on the PMem devices.

Get-PmemPhysicalDevice | Initialize-PmemPhysicalDevice

This will initialize the label storage area on the physical persistent memory device(s) and will result in data loss.
Initializes the physical persistent memory device(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.

Importante

Initialize-PmemPhysicalDevice causa a perda de dados na memória persistente.Initialize-PmemPhysicalDevice causes data loss in persistent memory. Use-o como um último recurso para corrigir problemas persistentes relacionados à memória.Use it as a last resort to fix persistent memory-related issues.

Referências adicionaisAdditional References