Memoria massima di SQL Server, file di paging, parallelismo massimo grado


15

Tre domande sperano che i padroni DBA dell'universo possano rispondere:


  1. So che è consigliabile impostare la memoria massima di SQL Server. Quindi, se un server con 44 GB di RAM ha installato SQL Server, dovremmo impostare la memoria massima di SQL Server su circa 37 GB.

Ma cosa dovremmo impostare se SQL Analysis Service e SQL Reporting Services sono installati sullo stesso server di SQL Server? È quindi meglio impostare la memoria massima di SQL Server su RAM da 22 GB in modo che Analysis possa prendere l'altra RAM da 22 GB?


  1. Su un server che esegue SQL Server con 44 GB di RAM qual è la procedura migliore per impostare le dimensioni del file di paging? Ho letto su Brent Ozar ( http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/ ) quanto segue:

SQL Server non necessita di un file di paging gigante. se stai installando altre applicazioni sul server (che non è consigliabile, SQL Server dovrebbe essere isolato). potrebbe essere necessario un file di paging più grande. Se SQL Server è l'unico servizio principale in esecuzione sulla scatola, in genere creiamo un file di pagine di dimensioni di 2 GB sull'unità di sistema.

Microsoft afferma che dovremmo impostare il file system di pagina gestito a 1,5 volte la RAM che corrisponde ai consigli forniti da Remus (vedi -> http://rusanu.com/2009/11/22/system-pagefile-size-on-machines-with -large-ram / ).

Quindi sul nostro server con 44 GB di RAM abbiamo installato SQL Server accanto a SQL Analysis Service e SQL Reporting Services. Quali dimensioni dovremmo impostare il file di paging?


  1. Per SharePoint, il server SQL che fa parte della farm di SharePoint e in cui SharePoint archivia i suoi database, il grado massimo di parallelismo dovrebbe essere impostato su 1. Ora che su questo abbiamo un server che non fa parte della farm di SharePoint (chiamalo sql2) server abbiamo installato SQL Server, SQL Analysis and Reporting. SharePoint non archivia i suoi database su questo server, ma abbiamo creato database / cubi di report e analisi che SharePoint legge e scrive.

Brent Ozar dice:

Regola empirica: impostalo sul numero di core fisici in un singolo socket NUMA (processore) sul tuo hardware o meno

Cosa dovremmo configurare su questa istanza di SQL Server per il massimo grado di parallelismo quando ha 4 VCPU?


Spero che voi ragazzi non diate solo a me, ma più amministratori sql un po 'più di conoscenza delle migliori pratiche rispetto alla giungla sugli interwebs.

Risposte:


12

Le tue 3 domande toccano max memory, page filee max dop setting.

MEMORIA MASSIMA


Se il server è dedicato a SQL Server solo senza i servizi di analisi (poiché SSAS è un'altra bestia), le migliori pratiche consigliate da Glenn sono un buon punto di partenza . Per ulteriori componenti, consultare il blog di Jonathan su come configurare la memoria massima .

Ho risposto alla configurazione della memoria massima e minima di SQL Server . Questo sarà utile se hai molti pacchetti SSIS in esecuzione sull'istanza del tuo server.

File di testo


Normalmente lo distacco C:\dall'unità sull'unità che ha spazio su disco sufficiente. Sono d'accordo con la raccomandazione di Remus e Brent. Dovrebbe essere PAGE FILE FOR SQL SERVER = 1.5 * RAM. Un file di paging sarà utile quando ti trovi in ​​una situazione in cui devi prendere un DUMP MEMORIA COMPLETA (normalmente richiesto da Microsoft CSS) per la risoluzione dei problemi.

Leggi Come determinare a fondo le dimensioni appropriate del file di paging per le versioni a 64 bit di Windows KB 889654 e Buck Woody parla qui del file di paging .

Impostazione DOP DOP


Per sharepoint si consiglia di maxdop = 1impostare l'istanza a livello. Per un normale server sql, ti suggerirei di seguire: qual è un buon metodo ripetibile per calcolare MAXDOP su SQL Server? Ho una sceneggiatura scritta che la calcolerà per te.

L'essenziale è sotto ( KB 2806535 menziona anche la stessa cosa):

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.

Come nota a margine, ti suggerisco di leggere: aggiornamenti consigliati e opzioni di configurazione per SQL Server 2012 e SQL Server 2014 con carichi di lavoro ad alte prestazioni


Una cosa da notare è che sul post del blog di Buck Woody menzionato sopra, Remus commenta "Ciò che salva il giorno è AWE: la memoria riservata tramite AWE non è richiesta per la prenotazione di un file di paging (poiché è bloccata nella RAM fisica e quindi non può essere cercapersone). L'uso di AWE è automatico su x64. " Che sembra visto con AWE, non abbiamo bisogno di un file di paging di grandi dimensioni.
Jason Carter,

@Kin hai detto "Sono d'accordo con la raccomandazione di Remus e Brent". Ma dopo aver esaminato la Guida all'installazione di Brent (citata dal PO sopra) e l'articolo di Remus, sono contraddittori. Quindi per me la tua risposta riguardo al file della pagina lascia domande in sospeso.
Magier,

1
@Magier Tendo ad andare con le raccomandazioni di MS poiché mi sono trovato in una situazione in cui dovevamo fare un dump della memoria completa per diagnosticare il problema - non sapevamo se fosse Windows o SQL Server. In tale situazione, la raccomandazione MS è la migliore. Se non ti trovi in ​​quella situazione, anche il consiglio di Brent è valido. Tendo ad essere al sicuro, quindi vado avanti PAGE FILE FOR SQL SERVER = 1.5 * RAM. Questo risponde alla tua domanda ?
Kin Shah,

3

Quindi sul nostro server con 44 GB di RAM abbiamo installato SQL Server accanto a SQL Analysis Service e SQL Reporting Services. Quali dimensioni dovremmo impostare il file di paging?

Bene aggiungendo a ciò che Kin ha già menzionato, ti suggerisco di usare Perfmon Countersper calcolare quale dovrebbe essere la dimensione del tuo file di paging. Concordo anche con Remus che la raccomandazione del file di paging dovrebbe essere 1,5 volte la RAM sul sistema . Ma questa raccomandazione sta prendendo in considerazione tutti i possibili aspetti e scenari e la "raccomandazione generale". Immagino che tu sia più interessato al valore concreto. Quindi eccolo qui

Le esigenze del file di paging di un singolo sistema variano in base al ruolo del server, al caricamento, ecc. Esistono alcuni contatori delle prestazioni che è possibile utilizzare per monitorare l'utilizzo della memoria impegnata privata su base di sistema o per file di pagina. Non esiste alcun modo per determinare la quantità di memoria privata impegnata di un processo è residente e la quantità di paging dei file di paging.

Memoria: Byte impegnati: numero di byte di memoria virtuale che è stata impegnata. Ciò non rappresenta necessariamente l'utilizzo del file di paging - rappresenta la quantità di spazio per il file di paging che verrebbe utilizzato se il processo non fosse completamente residente

Memoria: limite di commit : numero di byte di memoria virtuale che è possibile eseguire il commit senza dover estendere i file di paging.

File di paging:% percentuale di utilizzo del file di paging eseguito

File di paging:% utilizzo picco La percentuale più alta del file di paging eseguito

Utilizzare i contatori sopra indicati per impostare il valore corretto per il file di paging. Puoi leggere questo link per ottenere maggiori informazioni sul file di paging.

È quindi meglio impostare la memoria massima di SQL Server su RAM da 22 GB in modo che Analysis possa prendere l'altra RAM da 22 GB?

No, non credo, quindi hai perso i requisiti del sistema operativo qui. Devi prima impostare la memoria massima ottimale del server per SQl Server. Questo thread SE contiene ulteriori dettagli sull'impostazione del valore massimo di memoria del server corretto. Ancora una volta rispondo pesantemente e sempre sui contatori di perfoni per vedere che il whay sarebbe un valore ottimale. Ti consiglio di leggere questo articolo e di chiedere aiuto ai contatori per impostare il valore ottimale per SSAS. Una volta ho usato questo blog per impostare il valore della memoria per SSAS. Non mi piace molto SSAS, quindi i miei commenti saranno limitati solo a questo articolo.

È necessario mantenere MAXDOP = 1 per le istanze di Sharepoint come parametro ampiamente accettato. Se IIRC la raccomandazione è stata ampiamente accettata dopo che si sono verificati frequenti deadlock quando il massimo grado di parallelismo è stato lasciato al valore predefinito


3

Tutte le altre risposte fornite finora per il riferimento sulla dimensione del file di paging relativamente articoli non aggiornati. Questo post sul blog Technet è più aggiornato (ottobre 2015) e offre un modo più dettagliato per calcolare la dimensione ideale del file di paging sui sistemi moderni.

Dichiarano chiaramente che la vecchia regola empirica di 1,5 x RAM non si applica più.

Ho incollato il contenuto principale dell'articolo in basso per evitare il marciume dei link.

Tieni presente che consigliano di raccogliere le metriche dal tuo server in esecuzione al massimo utilizzo per almeno 1 settimana, quindi nelle fasi di pianificazione e implementazione dei tuoi progetti potresti non essere in grado di farlo e dovrai dedicare più tempo al tuo progetto fare così.


Nel dimensionare il file di paging dobbiamo considerare le esigenze di memoria delle nostre applicazioni e le impostazioni di dump dell'arresto anomalo.

Come fai a sapere di quanta memoria ha bisogno la tua applicazione? Il modo migliore è prendere una linea di 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: assicurarsi di raccogliere le informazioni per un lungo periodo (almeno una settimana) e che il server sia in esecuzione al massimo utilizzo.

La formula delle dimensioni del file di paging dovrebbe essere:

(Valore massimo di byte impegnati + buffer aggiuntivo del 20% per adattarsi a qualsiasi raffica di carico di lavoro) -RAM size

Ad esempio: se il server ha 24 GB di RAM e il numero massimo di byte impegnati è 26 GB, il file di pagina consigliato sarà: (26 * 1.2) -24) = 7.2 GB

Che dire del secondo fattore: la dimensione di cui abbiamo bisogno per registrare le informazioni in caso di crash del sistema?

La dimensione del dump della memoria è determinata dal 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

Nella maggior parte dei casi il Dump della memoria del kernel è abbastanza buono per l'analisi della causa principale, poiché il Dump della memoria completo è richiesto solo in casi specifici, ad esempio si desidera vedere cosa è successo nella modalità utente.

Dalla mia esperienza, la dimensione del Dump della memoria del kernel è di solito la seguente:

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

Tuttavia, questi numeri NON sono una raccomandazione ufficiale di Microsoft e potrebbero essere diversi sui tuoi server, quindi verifica sempre prima di applicare.


2

Rispondendo da quando sono una delle persone che stai citando, eh.

1. A cosa devo impostare la memoria massima quando eseguo anche Analysis Services?

Non troverai indicazioni là fuori perché SSAS è proprio come qualsiasi altra app che viene installata sul tuo SQL Server: semplicemente non sappiamo quanta memoria utilizzerai. Tratta SSAS / SSIS / SSRS come applicazioni di terze parti: sono semplicemente incluse come "libere" nella casella di SQL Server. Hanno esigenze di CPU, memoria e archiviazione totalmente diverse.

2. A cosa devo impostare la dimensione del file di paging?

I miei consigli sono che Windows possa fare un mini-dump. Se si verifica un problema in cui è necessario chiamare il supporto Microsoft, è possibile iniziare con il mini-dump. Se il problema si ripresenta e non riescono a capirlo dal mini-dump (o altre fonti di informazioni, come il registro degli errori), potrebbero chiederti di andare a 1,5x RAM.

I consigli di RAM 1,5x di Microsoft consentono a Windows di eseguire un dump di memoria COMPLETO in caso di arresto anomalo del sistema.

In questi giorni, con server con 64-128-256 GB di RAM, in genere non è consigliabile mettere in pausa Windows per scrivere l'intero contenuto della memoria durante un arresto anomalo. Preferiresti avere SQL Server di backup e in esecuzione, e gestire i contenuti del mini-dump anziché il pieno. Salva i dump completi per dopo: di solito puoi passare tutta la tua carriera senza dover caricare un file di dump da 64 + GB su Microsoft. (Buona fortuna per quello.)

3. Cosa devo impostare su MAXDOP per SharePoint?

Quello che chiami i "miei" consigli sono di Microsoft KB 2806535 . Inizia da lì in generale, ma quando un'applicazione specifica ti dice qualcosa di diverso, allora sanno qualcosa sulla loro applicazione che è diversa da SQL Server in generale - seguilo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.