Información sobre la tecnología de control y gestión de recursos detallada de GaussDB

Este artículo es compartido por Huawei Cloud Community " [GaussTech Express] Interpretación técnica del control y la gestión de recursos detallados ", autor: base de datos GaussDB.

fondo

El control y el aislamiento de recursos dentro de los clústeres de bases de datos han sido demandas de larga data de los clientes empresariales. Como base de datos distribuida a nivel empresarial, Huawei Cloud GaussDB se ha comprometido a satisfacer las necesidades de gestión de grandes grupos de bases de datos de las empresas.

Los recursos que la base de datos puede administrar incluyen recursos informáticos y recursos de almacenamiento. Los recursos informáticos incluyen CPU, memoria, IO y recursos de red que incluyen espacio de almacenamiento de datos, espacio de almacenamiento de registros y archivos temporales.

Desde la perspectiva del usuario, la gestión y el control de recursos garantizan el compromiso con los acuerdos de nivel de servicio al establecer umbrales o límites de prioridad en el uso de los recursos, al tiempo que cumplen con el aislamiento de recursos entre diferentes usuarios y logran el propósito de compartir recursos de bases de datos entre múltiples inquilinos.

Desde una perspectiva del sistema, la introducción de métodos de control y monitoreo de recursos puede lograr el propósito de utilizar racionalmente los recursos en condiciones controlables, evitar el agotamiento de los recursos y evitar que el sistema deje de responder y colapse. La prioridad del trabajo puede garantizar el buen funcionamiento de los trabajos, evitar que un trabajo afecte a otros trabajos cuando su uso de recursos es demasiado alto y maximizar la utilización de recursos cuando los recursos son abundantes. Además, también puede cumplir con las expectativas externas y garantizar el máximo uso de los recursos del sistema. Al controlar el trabajo, podemos garantizar que el trabajo sea estable y evitar comportamientos incontrolables durante la ejecución del trabajo.

Para resolver los objetivos anteriores, la base de datos Huawei Cloud GaussDB proporciona una solución para la gestión y el control detallados de los recursos en el clúster de bases de datos: gestión y control detallados de los recursos. Esta solución proporciona capacidades de gestión y control correspondientes en diferentes granularidades de control (como nivel de usuario, nivel de sesión y nivel de declaración) y diferentes dimensiones de control (CPU, memoria e IO). Los usuarios pueden adoptar dimensiones de control apropiadas y granularidad de control de acuerdo con sus propias necesidades comerciales para lograr los objetivos de control y aislamiento de recursos, y satisfacer las necesidades de control de recursos en diferentes escenarios.

Arquitectura Tecnológica

Veamos primero la arquitectura técnica y los principios operativos de la gestión y el control detallados de recursos:

Diapositiva 1.PNG

Como puede ver en la imagen de arriba, GaussDB proporciona un módulo de grupo de recursos para completar la lógica de administración y control de la CPU, la memoria y el IO. Los usuarios pueden crear un grupo de recursos y especificar la CPU, la memoria y los recursos compartidos de IO que pueden usar, y vincular el grupo de recursos al usuario. Posteriormente, el trabajo iniciado por el usuario estará sujeto a gestión y control de recursos en tiempo real durante la operación de los módulos de optimización y análisis del núcleo de la base de datos, motor de ejecución y motor de almacenamiento para garantizar que su CPU, memoria e IO estén dentro del alcance del grupo de recursos correspondiente.
 
Supongamos que la Compañía A implementa una instancia de GaussDB y tres aplicaciones diferentes acceden a la instancia al mismo tiempo, como negocios OLTP, negocios de informes y otros negocios de baja prioridad. La empresa A espera administrar y controlar razonablemente los recursos de las tres empresas para que el sistema pueda funcionar sin problemas y al mismo tiempo garantizar el máximo uso de los recursos. Podemos utilizar el administrador del sistema para ejecutar el siguiente comando para establecer la proporción de recursos compartidos para los tres usuarios comerciales en 50:30:10, y el 10% restante está reservado para el sistema.
 
Estos son solo ejemplos de uso simples. El significado específico de cada parámetro se explicará en detalle en los siguientes capítulos.
 
cree un grupo de recursos respool_tp con(control_group="cgroup_tp", max_dynamic_memory="5GB", max_shared_memory="5GB", io_limits=50, io_priority="High");
alterar rol tp_user PISCINA DE RECURSOS 'respool_tp';

crear grupo de recursos respool_report con(control_group="cgroup_report", max_dynamic_memory="3GB", max_shared_memory="3GB", io_limits=30, io_priority="Medio");
alterar rol report_user PISCINA DE RECURSOS 'respool_report';

crear grupo de recursos respool_other con(control_group="cgroup_other", max_dynamic_memory="1GB", max_shared_memory="1GB", io_limits=10, io_priority="Low");
alterar rol other_user PISCINA DE RECURSOS 'respool_other';
Después de las operaciones anteriores, cuando las empresas OLTP, las empresas de informes y otras empresas de baja prioridad utilizan tp_user, report_user y other_user para conectarse a GaussDB para ejecutar trabajos, estas tres empresas serán controladas por los grupos de recursos correspondientes respool_tp, respool_report y respool_other. recurso Cuando se produce una contención, se garantiza que las tres empresas puedan utilizar el 50%, el 30% y el 10% de los recursos del clúster GaussDB respectivamente.

capacidades clave

Después de comprender la arquitectura general y el uso de la gestión y el control detallados de recursos, echemos un vistazo a sus capacidades clave y al valor empresarial que estas capacidades pueden aportar a los clientes.

control de CPU

La administración y el control de la CPU de GaussDB se basan en la granularidad del grupo de recursos para la administración y el control de los recursos del usuario. Cada grupo de recursos está vinculado a un grupo de control, y la administración y el control de la CPU se implementan a través del grupo de control (Grupo de control, CGroup). CGroup es un mecanismo proporcionado por el kernel de Linux para limitar, registrar y aislar los recursos físicos (como CPU, memoria, IO, etc.) utilizados por los grupos de procesos.
 
Teniendo en cuenta el aislamiento y la configurabilidad de los sistemas de bases de datos, usuarios y trabajos en diferentes dimensiones, GaussDB utiliza las características jerárquicas de los grupos de control para construir un modelo que se ajuste al escenario de la base de datos (consulte la figura siguiente), que cumple con las características clave de SLA del cliente y admite tres dimensiones de aislamiento y control jerárquico: aislamiento entre programas de bases de datos y programas que no son de bases de datos, aislamiento entre subprocesos de respaldo residentes de bases de datos y subprocesos de trabajos de ejecución, y aislamiento entre múltiples usuarios de bases de datos.

Diapositiva 2.PNG

El grupo de control de GaussDB puede establecer el porcentaje de CPU y el límite superior del número de núcleos. El nodo raíz es responsable de controlar la participación de CPU disponible para el proceso de GaussDB. El grupo de control de backend es responsable de controlar la participación de CPU del residente de la base de datos. subprocesos en segundo plano (Vacuum, DefaultBackend), el grupo de control de clase es responsable de controlar la participación de CPU del subproceso de trabajo del usuario (UserClass1, UserClass2,...UserClassN) también se puede crear el grupo de control de carga de trabajo (TopWD, RemainWD...); dentro del grupo de control de Clase para un control más detallado.
 
Continuando con el ejemplo anterior, utilizamos la herramienta CGroup proporcionada por GaussDB para crear grupos de control para el negocio OLTP, el negocio de informes y otros negocios de baja prioridad de la empresa A, con proporciones de asignación de CPU del 50 %, 30 % y 10 %.
 
gs_cgroup -c -S cgroup_tp -s 50;
gs_cgroup -c -S cgroup_report -s 30;
gs_cgroup -c -S cgroup_other -s 10;
Ejecutar el comando anterior significa que hemos creado con éxito tres grupos de control. Luego podemos especificar el nombre del grupo de control al crear un grupo de recursos. Los trabajos iniciados por usuarios vinculados al grupo de recursos serán controlados por el recurso compartido de CPU correspondiente del grupo de control.
 
Hay dos cuestiones a las que debes prestar atención al controlar la CPU con CGroup:
 
Primero, si la CPU de un subproceso necesita ser controlada por un CGroup, entonces la API del sistema del CGroup debe ejecutarse para vincular el CGroup correspondiente al subproceso, lo cual es una operación que requiere mucho tiempo;
En segundo lugar, el efecto de control de CPU de CGroup es mejor cuando el número de subprocesos es proporcional a la CPU.
 
Sobre la base de estos problemas, GaussDB propuso el concepto de grupo de subprocesos. Cada grupo de recursos corresponde a un grupo de subprocesos, y los subprocesos del grupo de subprocesos están vinculados al grupo CG correspondiente al grupo de recursos. Al mismo tiempo, GaussDB ajustará la cantidad de subprocesos en cada grupo de subprocesos para que sea coherente con la participación de CPU del CGroup correspondiente. Consulte la figura a continuación para obtener más detalles:
Diapositiva 3.PNG
Cada trabajo iniciado por el usuario se distribuirá a los subprocesos del grupo de subprocesos correspondiente para su ejecución. Dado que el subproceso se ha vinculado al nodo del grupo C correspondiente, el sistema operativo completará la administración y el control de la CPU durante la programación del subproceso.
 
GaussDB proporciona un mecanismo de usuario de dos niveles. El grupo de recursos vinculado al grupo de control de clase se denomina grupo de recursos de grupo, y los usuarios correspondientes son usuarios de grupo. El grupo de recursos vinculado al grupo de control de carga de trabajo se denomina grupo de recursos comerciales. los usuarios correspondientes son usuarios comerciales. Los usuarios de grupo generalmente corresponden a un departamento, mientras que los usuarios de negocio corresponden a diferentes negocios de este departamento. ¿La participación de recursos de cada dimensión de recursos en el grupo de recursos comerciales excederá la participación del grupo de recursos del grupo al que pertenece, logrando así el objetivo de gestión y control de recursos de dos niveles?
 
El control de CPU también proporciona un GUC llamado session_respool para limitar la CPU de una sola sesión para que no exceda el límite de CPU del grupo de recursos correspondiente.

Gestión de la memoria

GaussDB proporciona administración y control de la memoria dinámica y el caché compartido. Al crear un grupo de recursos, puede especificar max_dynamic_memory y max_shared_memory para completar la configuración de umbral de la memoria dinámica y el caché compartido, respectivamente.
 
La administración de memoria dinámica no cambia su mecanismo de asignación de recursos de memoria original. Solo agrega una capa de juicio lógico antes de asignar memoria para tener en cuenta la memoria asignada excesivamente y verifica si el valor de contabilidad alcanza el límite superior de la memoria permitida. control. Cuando la memoria dinámica excede el límite superior, el trabajo no podrá solicitar memoria. Cuando finaliza un trabajo, la memoria solicitada por el trabajo se liberará para garantizar que otros trabajos puedan ejecutarse normalmente. De la misma manera, cuando el caché compartido utilizado por un trabajo excede el límite superior del grupo de recursos y solicita el caché compartido nuevamente, primero debe liberar el caché compartido que ya ha ocupado, como BufferPool. el trabajo se aplica a una página, la página que ya ocupa será eliminada. Las páginas restantes después de la eliminación están disponibles para su uso continuo.
 
Además del control de memoria granular del usuario, GaussDB también proporciona dos parámetros GUC, session_max_dynamic_memory y query_max_mem, para completar el control de la memoria dinámica a nivel de sesión y de declaración. Cuando la memoria dinámica utilizada por una sesión o declaración alcanza el umbral de GUC, el trabajo. no solicita memoria.

control de E/S

Las IO de lectura y escritura del disco de GaussDB se completan mediante un hilo en segundo plano. Este hilo no puede distinguir al propietario de la página. Solo escribe en el disco en orden cronológico y no puede controlar el uso de IO diferente para diferentes usuarios. En base a esto, considere que la función de control y administración de IO utiliza estadísticas de IO lógicas para controlar y limitar las lecturas y escrituras de IO de usuarios o sesiones. Se agrega un recuento de IO lógico entre el subproceso de trabajo y el caché compartido. cada 6000 (se puede pasar io_control_unit GUC (modificado por GUC) se cuenta como un IO. Cuando el número de solicitudes de IO de lectura y escritura generadas en un segundo excede el umbral establecido por el grupo de recursos, la solicitud de IO se agregará a una espera cola del subproceso en segundo plano, y el subproceso en segundo plano responderá a la cola de espera. Estas solicitudes de IO se monitorean y, cuando su tiempo de espera cumple con las condiciones, estas solicitudes de IO se despiertan de la cola de espera.
 
GaussDB admite dos modos de gestión y control de recursos de IO. El modo numérico en línea controla los recursos de IO estableciendo un valor fijo para activar los tiempos de IO. El modo de prioridad significa que cuando el uso actual del disco alcanza más del 95% durante un tiempo prolongado, todos los trabajos. no puede ser Al alcanzar el modo de valor en línea, los usuarios pueden controlar IO a través de este modo para controlar la relación de prioridad del trabajo que originalmente activó IO. La prioridad incluye tres niveles: Alta, Media y Baja.
 

4.PNG

Continuando con el ejemplo anterior, creamos grupos de recursos para el negocio OLTP, el negocio de informes y otros negocios de baja prioridad de la empresa A, y establecemos las ponderaciones de IO en Alta, Media y Baja respectivamente. Luego, la empresa OLTP puede usar el 50% de las solicitudes de IO para leer o escribir datos en BufferPool, y una pequeña cantidad de solicitudes de IO ingresarán a la cola de espera para esperar; la empresa de informes puede usar el 20% de las solicitudes de IO para leer; o escribir datos en BufferPool. Más solicitudes de IO ingresarán a la cola de espera para esperar; otras empresas de baja prioridad pueden usar el 10% de las solicitudes de IO para leer o escribir datos en BufferPool, y más solicitudes de IO ingresarán a la cola de espera. esperar; el hilo de monitoreo en segundo plano atravesará periódicamente la cola de espera de IO y activará solicitudes de IO que cumplan con el tiempo de espera requerido para leer o escribir datos del BufferPool.
 
Además de admitir el control de IO granular del usuario, GaussDB también admite la configuración de los parámetros GUC a nivel de sesión io_limits e io_priority para completar el control de IO de los trabajos permitidos en una sesión específica.

Número de conexiones y gestión de concurrencia.

GaussDB proporciona control del número de conexiones y control de concurrencia según el grupo de recursos. Al crear un grupo de recursos, puede especificar max_connections y max_concurrency para completar la configuración del número de conexiones y la concurrencia, respectivamente. Puede utilizar el siguiente SQL para proporcionar los recursos correspondientes. Los tres negocios de la Empresa A en el ejemplo anterior. El pool completa la gestión y control del número de conexiones y el número de concurrencias:
 
alterar el grupo de recursos respool_tp con (max_connections = -1, max_concurrency = -1);
modificar el grupo de recursos respool_report con (max_connections = 200, max_concurrency = 100);
alterar el grupo de recursos respool_other con (max_connections=100, max_concurrency = 50);
Una vez que el SQL anterior se ejecute correctamente, entrará en vigor en tiempo real. La cantidad de conexiones y concurrencia del negocio OLTP de la empresa A no está limitada. Puede usarlo siempre que el clúster tenga recursos. El número máximo de conexiones para el negocio de informes es 200 y el número máximo de conexiones para otros de baja prioridad. negocios es 100. Cuando estos dos negocios Cuando el número de conexiones establecidas excede este valor, el kernel de GaussDB interceptará automáticamente e informará que el número actual de conexiones es insuficiente y que el enlace falla. El número máximo de concurrencias para el negocio del informe es 100; Y el número máximo de concurrencias para otras empresas de baja prioridad es 50. Cuando estas dos empresas Cuando el número de trabajos iniciados al mismo tiempo excede este valor, los trabajos excedentes ingresarán a la cola de espera y GaussDB no lo activará. continúe ejecutando el trabajo hasta que se completen los trabajos existentes.

Gestión y control del espacio de almacenamiento.

La gestión y el control del espacio de almacenamiento se utilizan para limitar las cuotas de espacio que diferentes usuarios pueden utilizar para evitar que todo el negocio de la base de datos se bloquee debido al uso excesivo del espacio de almacenamiento por parte de un solo usuario. GaussDB administra y controla los recursos de almacenamiento especificando el tamaño del espacio de almacenamiento al crear un usuario.
 
Los recursos de espacio de almacenamiento se dividen en tres tipos: espacio de tabla permanente (Perm Space), espacio de tabla temporal (Temp Space) y espacio en disco inferior del operador (Spill Space).
 
Puede utilizar el siguiente SQL para completar la gestión y el control del espacio en disco de los usuarios correspondientes a los tres negocios de la empresa A en el ejemplo anterior.
 
alterar usuario tp_user ESPACIO PERM '200G' ESPACIO TEMP '20G' ESPACIO DERRAME '20G';
alterar usuario report_user ESPACIO PERM '100G' ESPACIO TEMP '10G' ESPACIO DERRAME '10G';
alterar usuario other_user ESPACIO PERM '100G' ESPACIO TEMP '10G' ESPACIO DERRAME '10G';
 
La administración del espacio de almacenamiento admite la administración del espacio de almacenamiento para usuarios grupales y usuarios comerciales. Cuando el usuario del grupo correspondiente al usuario empresarial tiene restricciones de espacio, el espacio del usuario empresarial también está limitado por el límite de espacio del grupo de usuarios. Después de especificar el tamaño del espacio de almacenamiento, todas las operaciones de escritura realizadas por el usuario en el DN aumentarán el espacio utilizado por el usuario, y las operaciones de eliminación disminuirán el espacio utilizado por el usuario. CN obtendrá periódicamente el espacio utilizado total del DN y calculará el. espacio utilizado por el usuario. Cuando se excede el valor máximo, el trabajo de escritura se cancela (insertar/crear tabla como/copiar), y los trabajos de escritura posteriores informan un error y salen.

Demostración de funciones

Demostración de funciones Aquí simplemente demostraremos el efecto de control de la CPU para todos, porque la CPU tiene el mayor impacto en el negocio.
 
Cree dos grupos de recursos y configure el 20% y el 60% de la CPU respectivamente, y luego use dos usuarios vinculados a los grupos de recursos para comenzar a administrar el negocio. Observe el uso real de la CPU.

1. Cree un grupo de control:

gs_cgroup -c -S clase1 -s 20;
gs_cgroup -c -S clase2 -s 60;

2. Cree un grupo de recursos:

CREAR GRUPO DE RECURSOS xuuer_pool with(control_group = "class1");
CREAR GRUPO DE RECURSOS xyuser1_pool with(control_group = "class2");

3. Cree un grupo de recursos vinculado al usuario:

crear rol usuario1 PISCINA DE RECURSOS 'xuuer_pool';
crear rol usuario2 PISCINA DE RECURSOS 'xyuser1_pool';
4. Observe el estado de la CPU del sistema a través de Top, y la administración y el control detallados de recursos proporciona la función gs_wlm_respool_cpu_info para observar el estado de la CPU en tiempo real de cada grupo de recursos.

Diapositiva 5.PNG

Como se muestra en la figura anterior, se puede ver que la CPU inicial del sistema está inactiva y la vista de monitoreo de CPU del grupo de recursos también muestra que el uso de CPU es 0. Deje que el usuario1 comience a ejecutar servicios. Se puede ver que la CPU del sistema está ocupada por ciertos servicios. Al consultar la vista de monitoreo de CPU del grupo de recursos, se muestra que el usuario1 puede usar el 80% de la CPU. En este momento, deje que el usuario2 también comience a ejecutar el negocio. La observación muestra que la CPU del sistema ha entrado en un estado ocupado. La consulta de la función del sistema de monitoreo de recursos de la CPU del grupo de recursos muestra que el uso de la CPU del usuario1 comienza a disminuir y el uso de la CPU del usuario2 comienza a aumentar. .

Ordene el uso de CPU de los dos usuarios y dibuje el gráfico de curva como se muestra a continuación. Se puede ver que el uso de CPU del usuario1 y el usuario2 eventualmente se equilibrará a un estado de 3:1, que es consistente con el 20% y el 60. configuración en el grupo de control CGroup correspondiente al porcentaje del grupo de recursos, logrando el efecto de control de CPU.

Diapositiva 6.PNG

Resumir

La función de control y gestión detallada de recursos actualmente admite centralización y distribución. La gestión y el control de recursos informáticos distribuidos significa que cada nodo controla de forma independiente los recursos de su propio nodo, mientras que la gestión y el control de los recursos de almacenamiento se gestionan en su conjunto desde la dimensión del clúster.

La gestión y el control detallados de los recursos sirven como base para el aislamiento de recursos de múltiples inquilinos, lo que permite la división y el control precisos de los recursos y resuelve el problema de la falta de servicio del clúster causado por recursos insuficientes en escenarios de alta carga. Esta función es adecuada para escenarios donde el aislamiento de datos no es confidencial, pero se requiere el aislamiento de recursos para diferentes empresas. Si los clientes tienen requisitos tanto para el aislamiento de recursos como para el aislamiento de datos, puede prestar atención a la función de base de datos multiinquilino que compartiremos más adelante.

 

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~

Los estudiantes de secundaria crean su propio lenguaje de programación de código abierto como una ceremonia de mayoría de edad: comentarios agudos de los internautas: confiando en la defensa, Apple lanzó el chip M4 RustDesk Los servicios nacionales fueron suspendidos debido al fraude desenfrenado Yunfeng renunció a Alibaba. En el futuro, planea producir un juego independiente en la plataforma Windows Taobao (taobao.com). Reiniciar el trabajo de optimización de la versión web, destino de los programadores, Visual Studio Code 1.89 lanza Java 17, la versión Java LTS más utilizada, Windows 10 tiene un cuota de mercado del 70%, Windows 11 continúa disminuyendo Open Source Daily | Google apoya a Hongmeng para que se haga cargo; Rabbit R1 de código abierto respalda los teléfonos Android; Haier Electric ha cerrado la plataforma abierta;
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/11105586
Recomendado
Clasificación