Tentang pengelolaan memori otomatis

Pilih versi dokumentasi:

AlloyDB Omni menggunakan algoritma adaptif untuk pengelolaan memori.

Anda dapat menentukan batas atas buffer bersama saat memulai AlloyDB Omni. Jika Anda tidak menetapkan batas atas, AlloyDB Omni akan otomatis menyetel ukuran dukungan buffer bersama ke 80% dari memori sistem. Ukuran dukungan awal buffer bersama dapat berbeda dari batas atas.

AlloyDB Omni terdiri dari pekerja memori cerdas yang terus memantau status memori, dan menyesuaikan ukuran dukungan buffer bersama untuk performa terbaik saat menyimpan data dalam cache.

Memori otomatis

Secara default, parameter shared_buffers disetel ke 0, yang merupakan nilai khusus yang menetapkan batas atas ukuran cache shared buffers menjadi 80% dari memori sistem. AlloyDB Omni dimulai dari 10% batas atas shared_buffers. Jika shared_buffers diganti dengan nilai kustom, AlloyDB Omni akan menggunakan nilai tersebut sebagai batas atas ukuran shared_buffers, dan dimulai dengan ukuran kustom yang ditentukan tersebut.

Untuk menentukan ukuran kustom, Anda dapat menyetel shared_buffers ke 1GB. Metodenya bergantung pada jenis deployment Anda:

Untuk penginstalan berbasis Linux (termasuk RPM), Anda dapat menetapkan parameter shared_buffers menggunakan salah satu metode berikut. Setelah menerapkan perubahan, Anda harus memulai ulang layanan.

  • Opsi 1: Edit file konfigurasi

    1. Buka file postgresql.conf untuk mengedit.

    2. Tambahkan atau ubah baris berikut:

      shared_buffers = 1GB
      
    3. Simpan file dan mulai ulang layanan AlloyDB Omni:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Ganti MAJOR_VERSION dengan versi utama penginstalan AlloyDB Omni Anda, seperti 18.

  • Opsi 2: Gunakan perintah ALTER SYSTEM

    1. Hubungkan ke instance database Anda menggunakan klien SQL.

    2. Jalankan perintah berikut:

      ALTER SYSTEM SET shared_buffers = '1GB';
      
    3. Mulai ulang layanan AlloyDB Omni:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Ganti MAJOR_VERSION dengan versi utama penginstalan AlloyDB Omni Anda, seperti 18.

Mengoptimalkan performa kueri

Nilai default parameter shared_buffers berfungsi untuk skenario umum.

Namun, Anda dapat menyesuaikan nilai untuk performa terbaik. Jika Anda memilih untuk mengandalkan nilai default shared_buffers untuk menyimpulkan batas atas buffer bersama, gunakan nilai memory.max cgroup untuk memengaruhi komputasi.

Memori columnar engine

shared_buffers dinamis tidak bergantung pada memori columnar engine. Jika columnar engine diaktifkan, ukuran shared_buffers dinamis dapat diperoleh dengan mengurangi jumlah memori yang digunakan oleh columnar engine dari 80% total memori yang tersedia untuk sistem atau cgroup.

Huge page

Huge page meningkatkan performa database. AlloyDB Omni mengelola huge page secara eksplisit jika memungkinkan, atau mengandalkan fitur huge page transparan (THP) dari sistem operasi. Jika kedua jenis huge page tidak didukung, AlloyDB Omni akan kembali ke halaman 4k, dan mencetak peringatan di log database dengan petunjuk khusus untuk menyiapkan huge page.

Peringatannya akan terlihat mirip dengan berikut ini:


HINT:  Please manually execute:
          echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
          sudo sysctl -w vm.nr_overcommit_hugepages="$(/usr/bin/awk '/MemTotal/ { printf "%.0f", $2/1024 }' /proc/meminfo)"

Pengelolaan memori otomatis saat runtime

AlloyDB Omni terus memantau beban sistem, dan menyesuaikan penggunaan memorinya untuk performa yang lebih baik. Secara khusus, Anda mungkin melihat hal berikut:

Perubahan ukuran shared_buffers dinamis
AlloyDB Omni meningkatkan ukuran shared_buffers dinamis saat penggunaan memori sistem rendah, dan mengurangi ukuran saat penggunaan memori sistem tinggi. Ekstensi `g_memory` disertakan dalam distribusi AlloyDB Omni. Untuk mengaktifkannya dan memantau ukuran `shared_buffers` dinamis, jalankan perintah berikut:
CREATE EXTENSION IF NOT EXISTS g_memory;
SELECT g_dynamic_shared_size();
Penghentian koneksi PostgreSQL saat sistem memiliki memori yang sangat rendah
Jika AlloyDB Omni mendeteksi bahwa sistem memiliki memori yang sangat rendah, AlloyDB Omni akan mencoba menghapus koneksi PostgreSQL yang paling banyak menggunakan memori hingga beban kembali ke tingkat yang wajar. Saat peristiwa seperti itu terjadi, AlloyDB Omni mencatat entri yang mirip dengan contoh berikut dalam log database:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)