持久内存支持的使用方式和实例规格有关,本文介绍如何配置将持久内存作为内存或本地盘使用。

前提条件

实例镜像的版本满足以下要求:
  • Alibaba Cloud Linux 2
  • CentOS 7.6及更高版本
  • Ubuntu 18.10及更高版本
  • SUSE Linux 12 SP4及更高版本

背景信息

持久内存的访问速度相对普通内存较低,但在停机或重启后,持久内存中数据不会丢失。持久内存的使用方式包括:
  • 作为内存使用:您可以将部分原本存放在普通内存中的数据存放到到持久内存中,例如对访问速度要求较低的非热点数据。持久内存容量大,单GiB价格更实惠,可以帮助您大幅降低单GiB内存的整体拥有成本(TCO)。
  • 作为本地盘使用:持久内存作为本地盘使用时,类似性能超高的SSD盘,读写延时低至400 ns。因此,您可以为需要极致稳定RT(响应时间)的核心应用数据库选用持久内存。您也可以将原有的缓存盘换成持久内存,获得更高的IOPS和带宽、更低的延时,提升整体集群业务性能。
注意 持久内存中数据的可靠性取决于物理服务器和持久内存设备的可靠性,因此存在单点故障风险。建议您在应用层做好数据冗余,将需要长期保存的业务数据存储到云盘上,以保证应用数据的可靠性。
持久内存支持的使用方式和实例规格有关:
  • 作为内存或本地盘使用:ecs.re6p.large、ecs.re6p.xlarge、ecs.re6p.2xlarge、ecs.re6p.13xlarge、ecs.re6p.26xlarge
  • 作为内存使用:ecs.re6p-redis.large、ecs.re6p-redis.xlarge、ecs.re6p-redis.2xlarge、ecs.re6p-redis.13xlarge
本文示例中使用的配置如下:
  • 实例规格:ecs.re6p.2xlarge
  • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位

将持久内存作为内存使用

持久内存作为内存使用时,核心能力是支持字符寻址。持久内存和普通内存的容量空间会各自独立存在,并不会合并。您可以通过memkind工具分配内存空间,关于如何使用memkind,请参见memkind

  1. 登录实例。
    具体操作,请参见连接方式概述
  2. 安装持久内存管理工具并将使用模式配置为devdax。
    yum install -y ndctl daxctl && \
    ndctl create-namespace -f -e namespace0.0 --mode=devdax
  3. 查看内存大小。
    • 查看持久内存大小。
      ndctl list -R
      pmem-size
    • 查看普通内存大小。
      cat /proc/meminfo

将持久内存作为本地盘使用

  1. 登录实例。
    具体操作,请参见连接方式概述
  2. 安装持久内存管理工具并将使用模式配置为fsdax。
    yum install -y ndctl daxctl && \
    ndctl create-namespace -f -e namespace0.0 --mode=fsdax
  3. 格式化并挂载磁盘。
    mkfs -t ext4 /dev/pmem0 && \
    mkdir /mnt/sdb && \
    mount -o dax,noatime /dev/pmem0 /mnt/sdb
  4. 查看已挂载的磁盘。
    df -h
    pmem-as-ssd

    挂载完成后,您可以使用磁盘性能测试工具测试磁盘性能。

    关于如何在re6p实例中使用fio测试磁盘性能,请参见测试块存储性能中的云盘性能测试命令。re6p实例的持久内存作为本地盘使用时,与本地NVMe SSD盘、ESSD云盘的性能对比如下表所示。
    说明 表中列出了性能级别供您参考,单次测试的具体结果请以您自行测试时的结果为准。
    指标 持久内存(容量128 GiB) NVMe SSD(容量1788 GiB) ESSD云盘(容量800 GiB,性能级别PL1)
    读带宽 8~10 GByte/s级别 2~3 GByte/s级别 0.2~0.3 GByte/s级别
    读写带宽 8~10 GByte/s级别 1~2 GByte/s级别 0.2~0.3 GByte/s级别
    写带宽 4~6 GByte/s级别 1~2 GByte/s级别 0.2~0.3 GByte/s级别
    读IOPS 100万级别 50万级别 2~3万级别
    读写IOPS 100万级别 30万级别 2~3万级别
    写IOPS 100万级别 30万级别 2~3万级别
    读延时 300~400纳秒级别 100000纳秒级别 250000纳秒级别
    写延时 300~400纳秒级别 20000纳秒级别 150000纳秒级别