Programando para Memória Persistente: Dificuldades, Armadilhas e Desempenho

  • Lucas Bastelli UNESP
  • Alexandro Baldassin UNESP
  • Emilio Francesquini UFABC

Resumo


A tecnologia de memória persistente (PM) provê endereçamento por byte com latência de acesso relativamente próxima às das memórias voláteis (DRAM). Contudo, programar com PM traz novos desafios não encontrados em ambientes típicos com memória volátil. Neste contexto, este artigo apresenta duas contribuições principais. Primeiramente, analisamos qualitativamente as dificuldades e armadilhas de se programar com a PMDK, a biblioteca oficial da Intel para programação do Optane DC (seu dispositivo de armazenamento persistente). Esta análise é o resultado das nossas experiências coletadas durante o desenvolvimento de um conjunto de estruturas de dados típicas de aplicações com persistência de dados. A segunda contribuição é uma análise de desempenho considerando implementações persistentes e voláteis dessas estruturas de dados para DRAM, Optane DC e SSD. Os resultados experimentais mostram que o Optane DC, apesar de em média ser 5,54× mais lento que o dispositivo volátil (DRAM), supera o SSD em 14× no pior caso.

Referências

Baldassin, A., Barreto, J., Castro, D., and Romano, P. (2021). Persistent memory: A survey of programming support and implementations. ACM Comput. Surv., 54(7).

Chen, Z., Hua, Y., Zhang, Y., and Ding, L. (2022). Efficiently detecting concurrency bugs in persistent memory programs. In ASPLOS'22, pages 873-887.

Felber, P., Fetzer, C., and Riegel, T. (2008). Dynamic performance tuning of word-based software transactional memory. In PPoPP'08, pages 237-246.

Gorjiara, H., Xu, G. H., and Demsky, B. (2022). Yashme: detecting persistency races. In ASPLOS'22, pages 830-845.

Gray, J. and Reuter, A. (1992). Transaction Processing: Concepts and Techniques. Morgan Kaufmann, 1st edition.

J.Choe (2017). Intel 3d xpoint memory die removed from intel optane™ pcm (phase change memory). url [link].

Jeongdong Choe, T. I. (2017). Intel 3D XPoint memory die removed from Intel Optane™ PCM (phase change memory).

Kannan, S., Gavrilovska, A., and Schwan, K. (2016). pVM: Persistent Virtual Memory for Efficient Capacity Scaling and Object Storage. In EuroSys'16, pages 1-16.

Liu, R.-S., Shen, D.-Y., Yang, C.-L., Yu, S.-C., and Wang, C.-Y. M. (2014). NVM Duet: Unified Working Memory and Persistent Store Architecture. In ASPLOS'14, pages 455-470.

Liu, S., Seemakhupt, K., Wei, Y., Wenisch, T., Kolli, A., and Khan, S. (2020). Cross-Failure Bug Detection in Persistent Memory Programs. In ASPLOS'20, ASPLOS '20, pages 1187-1202.

Marathe, V. J., Seltzer, M., Byan, S., and Harris, T. (2017). Persistent Memcached: Bringing Legacy Code to Byte-Addressable Persistent Memory. In USENIX HotStorage' 17.

Mohan, C., Haderle, D., Lindsay, B., Pirahesh, H., and Schwarz, P. (1992). ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging. ACM Trans. Database Syst., 17(1):94-162.

Palma, M., Francesquini, E., and Azevedo, R. (2016). Simulação de arquiteturas de hardware com memórias não-voláteis. In Anais do XVII Simpósio em Sistemas Computacionais de Alto Desempenho, pages 121-132.

Patil, O., Ionkov, L., Lee, J., Mueller, F., and Lang, M. (2019). Performance characterization of a DRAM-NVM hybrid memory architecture for HPC applications using intel pptane DC persistent memory modules. In ISMM'19, pages 288-303.

Ren, J., Hu, Q., Khan, S., and Moscibroda, T. (2017). Programming for Non-Volatile Main Memory Is Hard. In APSys'17, pages 1-8.

Ren, J., Zhao, J., Khan, S., Choi, J., Wu, Y., and Mutlu, O. (2015). ThyNVM: Enabling Software-Transparent Crash Consistency in Persistent Memory Systems. In MICRO'15, pages 672-685.

Scargall, S. (2020). Programming Persistent Memory A Comprehensive Guide for Developers. Apress, 1st edition.
Publicado
19/10/2022
BASTELLI, Lucas; BALDASSIN, Alexandro; FRANCESQUINI, Emilio. Programando para Memória Persistente: Dificuldades, Armadilhas e Desempenho. In: SIMPÓSIO EM SISTEMAS COMPUTACIONAIS DE ALTO DESEMPENHO (SSCAD), 23. , 2022, Florianópolis/SC. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2022 . p. 133-144. DOI: https://doi.org/10.5753/wscad.2022.226384.