全部产品
Search
文档中心

Database Autonomy Service:Fragmentasi Memori

更新时间:Jun 28, 2025

Fitur inspeksi dan penilaian Database Autonomy Service (DAS) mempertimbangkan rasio fragmentasi memori Redis. Topik ini menjelaskan definisi, penyebab, serta nilai ambang fragmentasi memori di Redis.

Apa itu fragmen memori di Redis

Sebagai contoh, asumsikan bahwa sistem operasi memiliki ruang memori tersedia lebih besar dari N byte, tetapi memori tersebut terdiri dari segmen-segmen yang lebih kecil dari N byte. Dalam situasi ini, ketika Redis meminta segmen memori bersebelahan sebesar N byte, sistem operasi tidak dapat menyediakannya. Segmen-segmen memori yang lebih kecil dari N byte inilah yang disebut sebagai fragmentasi memori.

Pada Tair (Redis OSS-Compatible), fragmentasi memori tidak memengaruhi memori yang dialokasikan untuk instance dan tidak menimbulkan biaya tambahan.

Catatan

Sebagai contoh, jika kapasitas memori sebuah instance Tair (Redis OSS-Compatible) adalah 1 GB dan 700 MB telah digunakan, meskipun rasio fragmentasi memori mencapai 2—yang berarti datanya secara efektif menempati 2 GB memori sistem—instance tersebut masih memiliki ruang memori tersedia sebesar 300 MB (1 GB - 700 MB).

Apa yang menyebabkan fragmen memori

Fragmentasi memori disebabkan oleh faktor internal dan eksternal.

  • Alasan internal: Mekanisme alokator memori Redis tidak selalu dapat mengalokasikan memori sesuai dengan kebutuhan spesifik pengguna.

    • Redis menggunakan beberapa alokator memori, termasuk libc, jemalloc, dan tcmalloc, dengan jemalloc sebagai alokator default.

    • Alokator memori mengalokasikan memori dalam jumlah tetap, bukan berdasarkan jumlah yang diminta oleh aplikasi.

      Sebagai contoh, jemalloc membagi ruang memori menjadi ukuran pangkat dua, seperti 8 byte, 16 byte, 32 byte, 2 KB, dan 4 KB. Ketika aplikasi meminta sejumlah memori tertentu, jemalloc memilih ukuran yang paling mendekati permintaan dan mengalokasikannya kepada aplikasi.

  • Alasan eksternal: Pasangan kunci-nilai memiliki ukuran yang bervariasi dan dapat dimodifikasi atau dihapus.

    • Karena mekanisme alokasi memori, memori yang dialokasikan sering kali sedikit lebih besar daripada jumlah yang diminta. Kelebihan memori ini menjadi bagian dari fragmentasi memori.

    • Pasangan kunci-nilai dapat dimodifikasi atau dihapus, sehingga ruang memori yang digunakan berubah atau dilepaskan selama proses tersebut.

Bagaimana cara memeriksa apakah ada fragmen memori di instance Redis

Anda dapat menggunakan perintah INFO yang disediakan oleh Redis di DAS untuk menanyakan informasi detail tentang penggunaan memori:

INFO memory
# Memory
used_memory:350458970752
used_memory_human:326.39G
used_memory_rss:349066919936
used_memory_rss_human:325.09G
…
mem_fragmentation_ratio:1.00
  • used_memory: Jumlah memori yang diminta Redis untuk menyimpan data.

  • used_memory_rss: Jumlah memori fisik yang dialokasikan sistem operasi ke Redis. Ukuran fragmentasi memori termasuk dalam nilai ini.

  • mem_fragmentation_ratio: Rasio fragmentasi memori saat ini pada Redis.

    Rasio fragmentasi memori dihitung menggunakan rumus berikut: mem_fragmentation_ratio = used_memory_rss / used_memory

    • Nilai mem_fragmentation_ratio antara 1 hingga 1,5 menunjukkan rasio fragmentasi yang dapat diterima.

    • Jika nilai mem_fragmentation_ratio lebih besar dari 1,5, terdapat fragmentasi memori yang ukurannya lebih dari setengah ukuran memori yang digunakan pada instance tersebut. Kami menyarankan Anda untuk segera mengambil tindakan dalam kasus ini.