Memoria máxima de SQL Server, archivo de página, paralelismo de grado máximo

15

Tres preguntas esperan que los maestros del universo de DBA puedan responder:


  1. Sé que es una buena práctica establecer la memoria máxima de SQL Server. Entonces, si un servidor con 44 GB de RAM tiene instalado SQL Server, deberíamos configurar la memoria máxima de SQL Server en aproximadamente 37 GB.

Pero, ¿qué debemos establecer si el Servicio de análisis SQL y los Servicios de informes SQL están instalados en el mismo servidor que SQL Server? ¿Entonces es mejor establecer la memoria máxima de SQL Server en 22 GB de RAM para que Analysis pueda tomar los otros 22 GB de RAM?


  1. En un servidor que ejecuta SQL Server con 44 GB de RAM, ¿cuál es la mejor práctica para configurar el tamaño del archivo de página? Leí en Brent Ozar ( http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/ ) lo siguiente:

SQL Server no necesita un archivo de página gigante. si está instalando otras aplicaciones en el servidor (que no recomendamos, SQL Server debería estar aislado). Es posible que necesite un archivo de página más grande. Si SQL Server es el único servicio importante que se ejecuta en la caja, generalmente creamos un archivo de página de 2 GB en la unidad del sistema.

Microsoft dice que deberíamos configurar el sistema de archivos de página administrado a 1.5x la RAM que coincide con el consejo dado por Remus (ver -> http://rusanu.com/2009/11/22/system-pagefile-size-on-machines-with -large-ram / ).

Entonces, en nuestro servidor con 44 GB de RAM, tenemos instalado SQL Server junto al Servicio de análisis SQL y los Servicios de informes SQL. ¿Qué tamaño debemos configurar el archivo de página?


  1. Para SharePoint, el SQL Server que forma parte de la granja de servidores de SharePoint y donde SharePoint almacena sus bases de datos, el grado máximo de paralelismo debe establecerse en 1. Ahora que tenemos un servidor que no es parte de la granja de servidores de SharePoint (llámelo sql2) en este servidor tenemos instalado SQL Server, SQL Analysis and Reporting. SharePoint no almacena sus bases de datos en este servidor, pero tenemos bases de datos / cubos de análisis y creación de informes que SharePoint lee y escribe.

Brent Ozar dice:

Regla general: establezca esto en la cantidad de núcleos físicos en un único socket NUMA (procesador) en su hardware o menos

¿Qué debemos configurar en esta instancia de SQL Server para un grado máximo de paralelismo cuando tiene 4 VCPU?


Espero que no solo me den a mí, sino también a más administradores de SQL un poco más de información sobre las mejores prácticas que la jungla en las redes.

sp_eric_blitz
fuente

Respuestas:

12

Sus 3 preguntas tocan max memory, page filey max dop setting.

Memoria máxima


Si el servidor es SQL Server dedicado solo sin servicios de análisis (dado que SSAS es otra bestia), las mejores prácticas recomendadas por Glenn son un buen punto de partida . Para componentes adicionales, debe consultar el blog de Jonathan sobre cómo configurar la memoria máxima .

He respondido sobre la configuración de memoria máxima y mínima de SQL Server . Esto será útil si tiene muchos paquetes SSIS ejecutándose en su instancia de servidor.

Archivo de página


Normalmente lo aparto de la C:\unidad en la unidad que tiene suficiente espacio en disco. Estoy de acuerdo con la recomendación de Remus y Brent. Debería ser PAGE FILE FOR SQL SERVER = 1.5 * RAM. Un archivo de página será útil cuando se encuentre en una situación en la que tenga que tomar un VOLUMEN DE MEMORIA COMPLETA (normalmente solicitado por Microsoft CSS) para la resolución de problemas.

Lea Cómo determinar el tamaño de archivo de página apropiado para las versiones de 64 bits de Windows KB 889654 a fondo y Buck Woody habla sobre el archivo de página aquí .

Configuración MAX DOP


Para sharepoint se recomienda que maxdop = 1se establezca en toda la instancia. Para un servidor SQL normal, le sugiero que siga: ¿Cuál es una buena forma repetible de calcular MAXDOP en SQL Server? Tengo un guión escrito que lo calculará por ti.

La esencia está debajo ( KB 2806535 también menciona lo mismo):

8 or less processors    ===> 0 to N (where N= no. of processors)
More than 8 processors  ===> 8
NUMA configured         ===> MAXDOP should not exceed no of CPUs assigned to each 
                                 NUMA node with max value capped to 8
Hyper threading Enabled ===> Should not exceed the number of physical processors.

Como nota al margen, le sugiero que lea: actualizaciones recomendadas y opciones de configuración para SQL Server 2012 y SQL Server 2014 con cargas de trabajo de alto rendimiento

Kin Shah
fuente
Una cosa a tener en cuenta es que en la publicación de blog de Buck Woody mencionada anteriormente, Remus comenta "Lo que salva el día es AWE: la memoria reservada a través de AWE no requiere tener una reserva de archivo de página (ya que está bloqueada en la RAM física y, por lo tanto, no puede ser paginado). El uso de AWE es automático en x64 ". Lo que parece verse con AWE, no necesitamos un archivo de página grande.
Jason Carter el
@Kin dijiste "Estoy de acuerdo con la recomendación de Remus y Brent". Pero después de leer la Guía de configuración de Brent (citada por el OP anterior) y el Artículo de Remus, son contradictorios. Entonces, su respuesta con respecto al archivo de la página deja preguntas pendientes.
Magier
1
@Magier Tiendo a ir con la recomendación de MS, ya que he estado en una situación en la que necesitábamos hacer un volcado de memoria completa para diagnosticar el problema; no sabíamos si era Windows o SQL Server. En esa situación, la recomendación de la EM es la mejor. Si no entras en esa situación, el consejo de Brent también es válido. Tiendo a estar en el lado seguro, así que sigo PAGE FILE FOR SQL SERVER = 1.5 * RAM. Eso responde tu pregunta ?
Kin Shah
3

Entonces, en nuestro servidor con 44 GB de RAM, tenemos instalado SQL Server junto al Servicio de análisis SQL y los Servicios de informes SQL. ¿Qué tamaño debemos configurar el archivo de página?

Además de lo que Kin ya mencionó, le sugiero que use Perfmon Counterspara calcular cuál debería ser el tamaño de archivo de su página. También estoy de acuerdo con la recomendación de Remus de que el archivo de página debe ser 1.5 veces la RAM en el sistema . Pero esta recomendación está considerando todos los aspectos y escenarios posibles y la 'recomendación general'. Supongo que estás más interesado en el valor concreto. Asi que aqui esta

Las necesidades de archivo de página de un sistema individual variarán según la función del servidor, la carga, etc. Existen algunos contadores de rendimiento que puede usar para monitorear el uso de memoria privada comprometida en todo el sistema o por archivo de página. No hay forma de determinar qué cantidad de memoria privada comprometida de un proceso es residente y cuánto se pagina a los archivos de paginación.

Memoria: Bytes comprometidos: Número de bytes de memoria virtual que se ha confirmado. Esto no representa necesariamente el uso del archivo de página: representa la cantidad de espacio de archivo de página que se usaría si el proceso se hiciera completamente no residente

Memoria: Límite de confirmación: Número de bytes de memoria virtual que se pueden confirmar sin tener que extender los archivos de paginación.

Archivo de paginación:% de porcentaje de uso del archivo de paginación comprometido

Archivo de paginación:% de uso máximo El porcentaje más alto del archivo de paginación comprometido

Utilice los contadores anteriores para establecer el valor adecuado para el archivo de página. Puede leer este enlace para obtener más información sobre el archivo de página.

¿Entonces es mejor establecer la memoria máxima de SQL Server en 22 GB de RAM para que Analysis pueda tomar los otros 22 GB de RAM?

No, no creo que haya perdido los requisitos del sistema operativo aquí. Primero debe establecer la memoria máxima del servidor óptima para SQl Server. Este hilo SE tiene más detalles sobre cómo configurar el valor correcto de memoria máxima del servidor. Una vez más, respondo en gran medida y siempre en los contadores de perfmon para ver qué sería un valor óptimo. Le sugiero que lea este artículo y obtenga ayuda de los contadores para establecer el valor óptimo para SSAS. Una vez utilicé este blog para establecer el valor de memoria para SSAS. No estoy tan interesado en SSAS, por lo que mis comentarios se limitarán solo a este artículo.

Debe mantener MAXDOP = 1 para las instancias de Sharepoint como su parámetro ampliamente aceptado. Si IIRC la recomendación se hizo ampliamente aceptada después de que se encontraron bloqueos frecuentes cuando el grado máximo de paralelismo se dejó al valor predeterminado

Shanky
fuente
3

Todas las otras respuestas dadas hasta ahora para el tamaño del archivo de página hacen referencia a artículos relativamente desactualizados. Esta publicación del blog de Technet está más actualizada (octubre de 2015) y ofrece una forma más detallada de calcular el tamaño ideal del archivo de página en los sistemas modernos.

Indican claramente que la antigua regla de oro de 1.5 x RAM ya no se aplica.

He pegado el contenido principal de ese artículo a continuación para evitar la pudrición del enlace.

Tenga en cuenta que recomiendan recopilar métricas de su servidor que se ejecutan en su uso máximo durante al menos 1 semana, por lo que en las etapas de planificación e implementación de sus proyectos, es posible que no esté en condiciones de hacerlo, y tendrá que hacer tiempo más adelante en su proyecto para hacerlo


Al dimensionar el archivo de página, debemos tener en cuenta las necesidades de memoria de nuestras aplicaciones y la configuración de volcado por caída.

¿Cómo sabes cuánta memoria necesita tu aplicación? La mejor manera es tomar una línea de base.

Run Performance Monitor (Perfmon)
Go to Data Collector Sets\User Defined
Right click on User Defined and select New
Select Create Manually and next
Check Performance counter
Add the following counters:

        Memory\Committed Bytes - Committed Bytes is the amount of committed virtual memory, in bytes.
        Memory\Committed Limit - Amount of virtual memory that can be committed without having to extend the paging file
        Memory\% Committed Bytes In Use - Ratio of Memory\Committed Bytes to the Memory\Commit Limit 

Nota: asegúrese de recopilar la información durante un período prolongado (al menos una semana) y que el servidor se esté ejecutando en su uso máximo.

La fórmula del tamaño del archivo de página debe ser:

(Valor máximo de bytes comprometidos + 20% de búfer adicional para acomodar cualquier ráfaga de carga de trabajo) -Tamaño RAM

Por ejemplo: si el servidor tiene 24 GB de RAM y el máximo de bytes comprometidos es de 26 GB, el archivo de página recomendado será: (26 * 1.2) -24) = 7.2 GB

¿Qué pasa con el segundo factor: el tamaño que necesitamos para registrar la información cuando el sistema falla?

El tamaño del volcado de memoria está determinado por su tipo:

Complete Memory Dump  RAM Size + 257 MB
Kernel Memory Dump  The amount of kernel-mode memory in use (on 32-bit maximum is 2 GB, on 64-bit the maximum can go up until 8 TB)
Small Memory Dump  64KB  512 KB

En la mayoría de los casos, el volcado de memoria del kernel es lo suficientemente bueno para el análisis de causa raíz, ya que el volcado de memoria completo solo se requiere en casos específicos, por ejemplo, si desea ver lo que sucedió en el modo de usuario.

Según mi experiencia, el tamaño para el volcado de memoria del núcleo suele ser el siguiente:

On System with up to 256GB RAM =  8-12 GB size for Kernel Memory dump
On System with up to 1.5TB RAM = 8-32 GB size for Kernel Memory dump

Sin embargo, estos números NO son una recomendación oficial de Microsoft, y pueden ser diferentes en sus servidores, así que siempre pruebe antes de presentar la solicitud.

Miguel
fuente
2

Respondiendo ya que soy una de las personas que estás citando, je.

1. ¿A qué debo configurar la memoria máxima cuando también ejecuto Analysis Services?

No encontrará orientación porque SSAS es como cualquier otra aplicación que se instala en su SQL Server: simplemente no sabemos cuánta memoria va a usar. Trate a SSAS / SSIS / SSRS como aplicaciones de terceros: simplemente se incluyen como "gratuitas" en el cuadro de SQL Server. Tienen necesidades de CPU, memoria y almacenamiento totalmente diferentes.

2. ¿A qué debo configurar el tamaño del archivo de página?

Mis recomendaciones son para que Windows pueda hacer un mini-dump. Si se encuentra con un problema en el que necesita llamar al soporte de Microsoft, puede comenzar con el minivolcado. Si el problema persiste y no pueden resolverlo a partir del minivolcado (u otras fuentes de información, como el registro de errores), entonces pueden pedirle que vaya al tamaño de RAM 1.5x.

Las recomendaciones de RAM 1.5x de Microsoft son para que Windows pueda hacer un volcado COMPLETO de memoria cuando su sistema falla.

En estos días, con servidores que tienen 64-128-256GB de RAM, generalmente no es una buena idea hacer que Windows haga una pausa para escribir todo el contenido de la memoria durante un bloqueo. Prefiere que el servidor SQL vuelva a funcionar y se ocupe del contenido del minivolcado en lugar del contenido completo. Guarde los volcados completos para más adelante: por lo general, puede seguir toda su carrera sin necesidad de cargar un archivo de volcado de más de 64 GB en Microsoft. (Buena suerte en eso)

3. ¿En qué configuro MAXDOP para SharePoint?

Lo que llamas "mis" recomendaciones son de Microsoft KB 2806535 . Comience allí en general, pero cuando una aplicación específica le dice algo diferente, entonces saben algo sobre su aplicación que es diferente de SQL Server en general, siga eso.

Brent Ozar
fuente