Aumento delle attese durante il checkpoint dopo l'aggiornamento a una migliore memorizzazione


9

Quando siamo passati da un array all flash più vecchio a un array all flash più recente (fornitore diverso ma ben consolidato), abbiamo iniziato a vedere un aumento delle attese in SQL Sentry durante i checkpoint.

Versione: SQL Server 2012 Sp4

Sul nostro vecchio deposito le nostre attese erano circa 2k con "picchi" a 2500 durante un checkpoint, con il nuovo deposito i picchi sono in genere 10k con picchi vicino a 50k. La sentinella ci punta maggiormente verso PAGEIOLATCHWatis. Facendo la nostra analisi, sembra essere una combinazione di PAGEIOLATCH and PAGELATCHattese. Usando Perfmon, possiamo generalmente dire che più pagine controlliamo, più attese otteniamo, ma stiamo sciacquando ~ 125 mb solo durante il checkpoint. Il nostro carico di lavoro è principalmente di scritture (principalmente inserimenti / aggiornamenti).

Il fornitore di archiviazione ci ha dimostrato che l'array collegato direttamente Fibre Channel sta rispondendo a meno di 1 ms durante questi eventi del checkpoint. L'HBA conferma anche i numeri dell'array. Inoltre non crediamo che si tratti di un problema di accodamento HBA poiché la profondità della coda non è mai stata superiore a 8. Abbiamo anche provato un nuovo HBA, modificando ZIO, accelerazione di esecuzione e impostazioni della profondità della coda senza alcun risultato. Abbiamo anche aumentato la memoria del server da 500 GB a 1 TB senza modifiche. Durante il processo di checkpoint vediamo 2 - 4 core individuali (di 16) aumentare al 100%, ma la CPU complessiva è di circa il 20%. Anche il BIOS ha prestazioni elevate. È interessante notare, tuttavia, che le CPU sono generalmente in uno stato di sospensione C2 anche se lo abbiamo disabilitato, quindi stiamo ancora cercando il motivo per cui lo stato di sospensione supera C1.

Possiamo vedere che quasi tutte le attese sono sulle pagine di dati con un PFS occasionale di tipo di pagina DCM. Le attese sono nei DB utente, non in tempdb. Vediamo anche che le attese sono su più pagine di dati, con alcuni SPID in attesa sulla stessa pagina. Il design del database ha un paio di hot spot di inserimento, ma lo stesso design era in atto con il vecchio archivio.

Eseguendo un ciclo di questa query 100 volte, siamo stati in grado di rilevare quanti SPID erano in attesa su disco rispetto alla memoria

SELECT
    [owt].[wait_type], count(*) as waitcount
FROM sys.dm_os_waiting_tasks [owt]
WHERE [owt].[wait_type] LIKE 'PAGE%'
group by [owt].[wait_type]
order by 1
GO 100

inserisci qui la descrizione dell'immagine

La cosa "bella" è che possiamo facilmente riprodurre il problema nel nostro ambiente perf che ha lo stesso array di modelli e specifiche del server simili. Gradirei qualsiasi pensiero su dove altro cercare o su come restringere il problema. In questo momento i nostri prossimi test includono: un nuovo server con scheda madre più recente e più CPU; disabilitazione del datakeeper SIOS (anche se questo è stato in atto con la vecchia memoria); diverso marchio HBA.

exec sp_Blitz @outputtype = 'markdown'

Priorità 5: Affidabilità : - Moduli di terze parti pericolosi - Sophos Limited - Protezione da sovraccarico del buffer Sophos - SOPHOS ~ 2.DLL - È stato installato un modulo di terze parti pericoloso sospetto.

Priorità 200: Informativa : - Nodo cluster: si tratta di un nodo in un cluster. - TraceFlag On - Il flag di traccia 1117 è abilitato a livello globale. - Il flag di traccia 1118 è abilitato a livello globale. - Il flag di traccia 3226 è abilitato a livello globale.

Priorità 200: Licenze : - Funzionalità Enterprise Edition in uso * xxxxx - Il database [xxxxxx] utilizza Compression. Se questo database viene ripristinato su un server Standard Edition, il ripristino non riuscirà nelle versioni precedenti a SP1 2016. * xxxxx - Il database [xxxxxx] sta usando il partizionamento. Se questo database viene ripristinato su un server Standard Edition, il ripristino non riuscirà nelle versioni precedenti a SP1 2016.

Priorità 240: Statistiche di attesa : - Nessuna attesa significativa rilevata - Questo server potrebbe essere inattivo o qualcuno potrebbe aver cancellato le statistiche di attesa di recente.

Priorità 250: Informazioni sul server: - Hardware - Processori logici: 16. Memoria fisica: 512 GB. - Hardware - Configurazione NUMA - Nodo: 0 Stato: ONLINE Scheduler online: 8 Scheduler offline: 0 Processor Group: 0 Nodo di memoria: 0 Memory VAS Riservato GB: 1177 - Nodo: 1 Stato: ONLINE Scheduler online: 8 Scheduler offline: 0 Processore Gruppo: 0 Nodo di memoria: 1 Memory VAS Riservato GB: 0 - Piano di alimentazione - Il server dispone di CPU da 3,50 GHz ed è in modalità di alimentazione ad alte prestazioni - Ultimo riavvio del server - 4 luglio 2018 16:56 - Ultimo riavvio di SQL Server - 5 lug 2018 5:11 - Servizio SQL Server - Versione: 11.0.7462.6. Livello di patch: SP4. Edizione: Enterprise Edition (64 bit). Gruppi di disponibilità abilitati: 1. Stato gestore gruppi di disponibilità: 1 - Server virtuale - Tipo: (HYPERVISOR) - Versione di Windows - Stai utilizzando una versione piuttosto moderna di Windows: Server 2012R2 era, versione 6.3

Priorità 200: Configurazione server non predefinita: - Agent XPs - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - default compressione backup - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - soglie di processo bloccate - Questa opzione sp_configure è stata modificata. Il valore predefinito è 0 ed è stato impostato su 20. - Soglia di costo per parallelismo - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 5 ed è stato impostato su 30. - Database Mail XPs - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - grado massimo di parallelismo - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 8. - max server memory (MB) - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 2147483647 ed è stato impostato su 496640. - min server memory (MB) - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 8196. - Ottimizza per carichi di lavoro ad hoc - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - accesso remoto - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 1 ed è stato impostato su 0. - connessioni di amministrazione remota - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - scan for startup procs - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - mostra opzioni avanzate - Questa opzione sp_configure è stata modificata. Il suo valore predefinito è 0 ed è stato impostato su 1. - xp_cmdshell - Questa opzione sp_configure è stata modificata.


dimenticato di menzionare ... SQL 2012 SP4
Doley,

Puoi eseguire sp_Blitz con @OutputType = 'MARKDOWN'e pubblicare i risultati?
Kin Shah,

Li ho aggiunti al post (quelli che pensavo fossero utili).
Doley,

hai svolto un compito pesante di I / O come ricostruire un indice di grandi dimensioni e confrontato i tempi con la vecchia SAN? È lo stesso tipo di flash della vecchia SAN? Che dire del layout dei volumi e della loro condivisione con altre applicazioni o server?
Alen,

1
E hai lo stesso livello di separazione tra database, log e tempdb sul nuovo array? Checkpoint sbatte i file del database, ma potrebbe essere in conflitto con altri IO su quelle unità.
David Browne - Microsoft,

Risposte:


1

Hmm. Mostra gli spids in attesa durante il checkpoint, ma non per quanto tempo aspettare in media / in aggregato (che, onestamente, sarebbe tutto ciò che mi interessa). Fai un'analisi delle statistiche di attesa differenziale per vedere se la durata è preoccupante. Inoltre, quali sono esattamente le due attese nel tuo grafico? Se stai ricevendo molte attese di concessione di memoria con 1 TB di RAM in gioco, dobbiamo fare una discussione diversa. :-D

La velocità di scrittura di 125 MB durante il checkpoint: è solo la scrittura del checkpoint JUST o ALL? Ad ogni modo sembra basso per l'archiviazione all-flash. Hai confrontato lo spazio di archiviazione per vari schemi di scrittura e, in caso affermativo, quali numeri hai ottenuto?


0

Non siamo sicuri del perché il comportamento del nostro SQL Server sia cambiato (e abbiamo prove che è successo prima del cambio di archiviazione), ma l'abilitazione di checkpoint indiretti per i DB utente ha risolto il problema per noi.

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.