Información acerca de la administración automática de la memoria

Selecciona una versión de la documentación:

AlloyDB Omni usa algoritmos adaptativos para la administración de la memoria.

Puedes decidir el límite superior del búfer compartido cuando inicies AlloyDB Omni. Si no estableces el límite superior, AlloyDB Omni establece automáticamente el tamaño de respaldo del búfer compartido en el 80% de la memoria del sistema. El tamaño de respaldo inicial del búfer compartido puede ser diferente del límite superior.

AlloyDB Omni consta de un trabajador de memoria inteligente que supervisa constantemente el estado de la memoria y ajusta el tamaño de respaldo del búfer compartido para obtener el mejor rendimiento cuando se almacenan datos en caché.

Memoria automática

De forma predeterminada, el parámetro shared_buffers se establece en 0, que es un valor especial que establece el límite superior del tamaño de la caché de shared buffers en el 80% de la memoria del sistema. AlloyDB Omni comienza con el 10% del límite superior de shared_buffers. Si un valor personalizado anula shared_buffers, AlloyDB Omni respeta el valor como el límite superior del tamaño de shared_buffers y comienza con ese tamaño personalizado especificado.

Para especificar un tamaño personalizado, puedes establecer shared_buffers en 1GB. El método depende del tipo de implementación:

Para las instalaciones basadas en Linux (incluidos los RPM), puedes establecer el parámetro shared_buffers con uno de los siguientes métodos. Después de aplicar el cambio, debes reiniciar el servicio.

  • Opción 1: Edita el archivo de configuración

    1. Abre el archivo postgresql.conf para editarlo.

    2. Agrega o modifica la siguiente línea:

      shared_buffers = 1GB
      
    3. Guarda el archivo y reinicia el servicio de AlloyDB Omni:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Reemplaza MAJOR_VERSION por la versión principal de tu instalación de AlloyDB Omni, como 18.

  • Opción 2: Usa el comando ALTER SYSTEM

    1. Conéctate a la instancia de la base de datos con un cliente de SQL.

    2. Ejecuta el comando siguiente:

      ALTER SYSTEM SET shared_buffers = '1GB';
      
    3. Reinicia el servicio de AlloyDB Omni:

      sudo systemctl restart alloydbomniMAJOR_VERSION

      Reemplaza MAJOR_VERSION por la versión principal de tu instalación de AlloyDB Omni, como 18.

Optimiza el rendimiento de las consultas

El valor predeterminado del parámetro shared_buffers funciona para situaciones comunes.

Sin embargo, puedes ajustar el valor para obtener el mejor rendimiento. Si decides confiar en el valor predeterminado de shared_buffers para deducir el límite superior del búfer compartido, usa el valor memory.max del cgroup para influir en el cálculo.

Memoria del motor de columnas

El shared_buffers dinámico es independiente de la memoria del motor de columnas. Cuando el motor columnar está habilitado, el tamaño dinámico de shared_buffers se puede derivar restando la cantidad de memoria que usa el motor columnar del 80% de la memoria total disponible para el sistema o el cgroup.

Páginas enormes

Las páginas grandes mejoran el rendimiento de la base de datos. AlloyDB Omni administra las páginas enormes de forma explícita si es posible; de lo contrario, se basa en la función de páginas enormes transparentes (THP) del sistema operativo. Si no se admite ninguno de los tipos de páginas enormes, AlloyDB Omni recurre a la página de 4 k y muestra una advertencia en los registros de la base de datos con instrucciones específicas para configurar las páginas enormes.

La advertencia es similar a la siguiente:


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)"

Administración automática de la memoria en el tiempo de ejecución

AlloyDB Omni supervisa constantemente la carga del sistema y ajusta su consumo de memoria para mejorar el rendimiento. Específicamente, es posible que observes lo siguiente:

Cambio de tamaño shared_buffers dinámico
AlloyDB Omni aumenta el tamaño dinámico de shared_buffers cuando el consumo de memoria del sistema es bajo y lo disminuye cuando el consumo de memoria del sistema es alto. La extensión `g_memory` se incluye en la distribución de AlloyDB Omni. Para habilitarlo y supervisar el tamaño dinámico de `shared_buffers`, ejecuta los siguientes comandos:
CREATE EXTENSION IF NOT EXISTS g_memory;
SELECT g_dynamic_shared_size();
Finalización de una conexión de PostgreSQL cuando el sistema tiene muy poca memoria
Cuando AlloyDB Omni detecta que el sistema tiene muy poca memoria, intenta borrar las conexiones de PostgreSQL que consumen más memoria hasta que la carga vuelva a un nivel razonable. Cuando ocurre un evento de este tipo, AlloyDB Omni registra una entrada similar al siguiente ejemplo en los registros de la base de datos:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)