全部产品
Search
文档中心

Elastic Compute Service:Konfigurasikan mode penggunaan memori persisten

更新时间:Jun 26, 2025

Memori persisten pada instance Elastic Compute Service (ECS) dapat digunakan sebagai memori atau disk lokal tergantung pada tipe instance. Topik ini menjelaskan cara mengonfigurasi memori persisten sebagai disk lokal dan menyelesaikan masalah berikut: Instance yang dioptimalkan untuk memori persisten seperti ecs.re6p atau ecs.i4p gagal mengalokasikan kolam memori menggunakan Low-Level Persistence Library (LLPL).

Prasyarat

Memori persisten kompatibel dengan tipe instance dan versi gambar berikut:

  • Tipe instance

    • Keluarga instance di mana memori persisten dapat digunakan sebagai memori: ecs.re6p-redis

      Penting

      Jika Anda menggunakan memori persisten sebagai memori pada instance, perhatikan situasi berikut:

      • Anda dapat langsung menggunakan memori persisten setelah membeli instance tanpa perlu inisialisasi.

      • Memori persisten yang digunakan sebagai memori tidak menyediakan persistensi data, sehingga data akan hilang saat instance dihentikan atau di-restart.

    • Keluarga instance di mana memori persisten dapat digunakan sebagai disk lokal: ecs.re6p dan ecs.i4p

      Penting

      Jika Anda menggunakan memori persisten sebagai disk lokal pada instance, perhatikan situasi berikut:

      • Anda perlu menginisialisasi memori persisten setelah membeli instance. Untuk informasi lebih lanjut, lihat bagian Konfigurasikan memori persisten sebagai disk lokal dalam topik ini.

      • Memori persisten yang digunakan sebagai disk lokal menyediakan persistensi data tetapi dapat menyebabkan kehilangan data. Kami merekomendasikan agar Anda mencadangkan data terlebih dahulu. Untuk informasi lebih lanjut tentang disk lokal, lihat Disk Lokal.

  • Versi gambar

    • Alibaba Cloud Linux 2

    • CentOS 7.6 dan yang lebih baru

    • Ubuntu 18.04 dan 20.04

Informasi latar belakang

Memori persisten memiliki latensi akses lebih tinggi dibandingkan memori reguler, namun harganya lebih ekonomis dan cocok untuk penyimpanan lokal. Data yang disimpan dalam memori persisten tetap ada meskipun instance dihentikan atau di-restart. Memori persisten dapat digunakan baik sebagai memori maupun disk lokal.

  • Ketika digunakan sebagai memori, Anda dapat memindahkan data non-hot dari memori reguler ke memori persisten. Memori persisten menawarkan kapasitas besar dengan harga per GiB lebih rendah, membantu mengurangi total biaya kepemilikan (TCO).

  • Ketika digunakan sebagai disk lokal, memori persisten mendukung operasi baca/tulis tingkat blok dengan kinerja I/O ultra-tinggi dan latensi serendah 170 nanodetik. Anda dapat mengganti SSD NVMe dengan disk lokal berbasis memori persisten untuk meningkatkan IOPS, bandwidth, serta menurunkan latensi.

Penting

Keandalan data dalam memori persisten bergantung pada keandalan perangkat dan server fisik tempat perangkat tersebut terpasang. Risiko titik kegagalan tunggal tetap ada. Untuk memastikan keandalan data aplikasi, kami merekomendasikan penerapan redundansi data di lapisan aplikasi dan penggunaan cloud disk untuk penyimpanan jangka panjang.

Konfigurasikan memori persisten sebagai disk lokal

Contoh berikut menggunakan instance dengan konfigurasi berikut:

  • Tipe instance: ecs.re6p.2xlarge

  • Gambar: Alibaba Cloud Linux 2.1903 LTS 64-bit

  1. Masuk ke instance yang telah dibuat.

  2. Jalankan perintah berikut untuk menginstal utilitas manajemen memori persisten dan menghapus semua namespace serta label:

    sudo yum install -y ndctl daxctl
    sudo ndctl disable-namespace all && sudo ndctl destroy-namespace all #Hapus semua namespace.
    sudo ndctl disable-region all && sudo ndctl zero-labels all && sudo ndctl enable-region all #Hapus semua label.
  3. Periksa ukuran memori persisten.

    ndctl list -R

    Gambar berikut menunjukkan contoh keluaran perintah, di mana parameter size menunjukkan ukuran memori persisten.

    查询持久内存大小

  4. Atur mode penggunaan ke fsdax.

    sudo ndctl create-namespace --reconfig=namespace0.0 -m fsdax --size={region-size} --force
    Catatan

    Gantikan variabel {region-size} dengan nilai ukuran yang diperoleh pada langkah sebelumnya.

    11.png

  5. Jalankan perintah berikut untuk memformat dan memasang perangkat memori persisten (/dev/pmem):

    sudo mkfs -t ext4 /dev/pmem0
    sudo mkdir /mnt/sdb
    sudo mount -o dax,noatime /dev/pmem0 /mnt/sdb
  6. Lihat perangkat /dev/pmem yang telah dipasang.

    df -h

    pmem-as-ssd

    Setelah perangkat /dev/pmem dipasang, Anda dapat menggunakan alat uji kinerja disk untuk menguji kinerja perangkat tersebut.

    Untuk informasi tentang cara menguji kinerja disk lokal pada instance i4p atau re6p, lihat bagian Uji kinerja disk lokal pada instance i4p dari topik ini.

Uji kinerja disk lokal pada instance i4p

Contoh berikut menggunakan konfigurasi dan alat uji berikut:

  • Tipe instance: ecs.i4p.2xlarge

  • Gambar: Alibaba Cloud Linux 2.1903 LTS 64-bit

  • Alat uji: flexible I/O tester (fio). fio adalah alat benchmarking kinerja I/O open source yang kuat untuk menguji metrik kinerja perangkat penyimpanan blok, seperti operasi baca dan tulis acak serta berurutan.

  1. Alat fio dapat menyebabkan kehilangan data. Pastikan bahwa disk lokal yang ingin Anda uji tidak berisi data sebelum melakukan pengujian.

  2. Jika Anda harus menguji disk lokal yang berisi data, cadangkan data disk sebelum melakukan pengujian. Untuk informasi lebih lanjut, lihat Cadangkan data pada disk lokal.

  3. Hubungkan ke instance ECS.

    Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.

  4. Jalankan perintah berikut untuk menginstal alat fio:

    sudo yum install -y ndctl daxctl ipmctl libpmem librpmem libpmemblk libpmemlog libpmemobj libpmempool pmempool fio
  5. Jalankan perintah untuk menguji kinerja disk lokal.

    • Untuk informasi tentang perintah contoh, lihat bagian Uji IOPS, Uji throughput, dan Uji latensi dari topik ini.

      Penting

      Jika Anda melakukan pengujian secara berturut-turut, jalankan perintah sudo rm /mnt/sdb/* -rf setelah setiap pengujian untuk menghapus hasil sisa dari pengujian sebelumnya dan menyiapkan lingkungan bersih untuk pengujian berikutnya.

    • Tabel berikut menjelaskan perbandingan kinerja antara disk lokal Non-Volatile Memory Express (NVMe) SSD, Enterprise SSD (ESSD), dan disk lokal berbasis memori persisten.

      Catatan

      Data kinerja dalam tabel berikut hanya untuk referensi. Data dalam hasil pengujian Anda yang berlaku.

      Metric

      128-GiB memori persisten

      1.788-GiB NVMe SSD

      800-GiB ESSD pada level performa 1 (PL1)

      Bandwidth baca

      8 GB/s hingga 10 GB/s

      2 GB/s hingga 3 GB/s

      0,2 GB/s hingga 0,3 GB/s

      Bandwidth baca/tulis

      8 GB/s hingga 10 GB/s

      1 GB/s hingga 2 GB/s

      0,2 GB/s hingga 0,3 GB/s

      Bandwidth tulis

      2 GB/s hingga 3 GB/s

      1 GB/s hingga 2 GB/s

      0,2 GB/s hingga 0,3 GB/s

      IOPS baca

      1.000.000

      500.000

      20.000 hingga 30.000

      IOPS baca/tulis

      1.000.000

      300.000

      20.000 hingga 30.000

      IOPS tulis

      1.000.000

      300.000

      20.000 hingga 30.000

      Latensi baca

      300 nanodetik hingga 400 nanodetik

      100.000 nanodetik

      250.000 nanodetik

      Latensi tulis

      300 nanodetik hingga 400 nanodetik

      20.000 nanodetik

      150.000 nanodetik

Uji IOPS

  • Uji IOPS baca berurutan dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=read --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji IOPS tulis berurutan dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=write --bs=4k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji IOPS baca acak dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=randread --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji IOPS tulis acak dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=randwrite --bs=4k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split

Uji throughput

  • Uji throughput baca berurutan dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=96 --iodepth=1 --rw=read --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji throughput tulis berurutan dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=1 --numjobs=8 --iodepth=1 --rw=write --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji throughput baca acak dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=96 --iodepth=1 --rw=randread --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji throughput tulis acak dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=96 --iodepth=1 --rw=randwrite --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split

Uji latensi

  • Uji latensi baca berurutan dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=1 --numjobs=1 --iodepth=1 --rw=read --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Uji latensi tulis berurutan dari disk lokal

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=1 --numjobs=1 --iodepth=1 --rw=write --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split

Selesaikan masalah bahwa instance gagal mengalokasikan kolam memori menggunakan LLPL

Deskripsi masalah

Instance ecs.re7p atau ecs.i4p, di mana memori persisten dapat digunakan sebagai disk lokal, gagal mengalokasikan kolam memori menggunakan LLPL. Pesan kesalahan Failed to create heap. Cannot read unsafe shutdown count** dikembalikan.问题现象

Penyebab

Secara default, unsafe shutdown detection diaktifkan dalam kode sumber LLPL. Namun, memori non-volatile (NVM) virtual tidak mendukung unsafe shutdown detection. Untuk informasi lebih lanjut, lihat llpl.

Solusi

Lakukan langkah-langkah berikut untuk menonaktifkan unsafe shutdown detection dalam kode sumber LLPL:

  1. Tambahkan kode berikut ke file src/main/cpp/com_intel_pmem_llpl_AnyHeap.cpp dari kode sumber LLPL:

    int sds_write_value=0;
    pmemobj_ctl_set(NULL,"sds.at_create",&sds_write_value)

    Gambar berikut menunjukkan bahwa kode di atas telah ditambahkan ke file.

    AnyHeap

  2. Masuk ke instance.

    Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.

  3. Jalankan perintah berikut untuk menjalankan kasus uji menggunakan LLPL:

    mvn clean && mvn test -Dtest.heap.path=/mnt/sdb

    Jika pesan kesalahan "Failed to create heap. Cannot read unsafe shutdown count**" tidak dikembalikan, Anda dapat melanjutkan untuk mengalokasikan kolam memori.