Upload
hilaire-mercier
View
105
Download
3
Embed Size (px)
Citation preview
IntroductionIntroduction
Architectures des serveursArchitectures des serveurs
Windows et NUMAWindows et NUMA
SQL Server 2005 et NUMASQL Server 2005 et NUMA
Consolidation et performanceConsolidation et performance
Stockage et performanceStockage et performance
WIE – équipe d’architectes seniors qui WIE – équipe d’architectes seniors qui travaille avec Microsoft depuis plus de 10 travaille avec Microsoft depuis plus de 10 ans:ans:
Optimisation du noyau pour les architectures Optimisation du noyau pour les architectures ItaniumItaniumOptimisation de la génération du code pour Optimisation de la génération du code pour les compilateurs Itaniumles compilateurs ItaniumEtude des futures architecturesEtude des futures architecturesAccès aux codes sources de WindowsAccès aux codes sources de Windows
WIE - équipe responsable de la WIE - équipe responsable de la Performance et Benchmark sur le campus Performance et Benchmark sur le campus MicrosoftMicrosoft
En charge de la publication des benchmarks En charge de la publication des benchmarks Windows / SQLWindows / SQLParticipation au travail d’amélioration des Participation au travail d’amélioration des capacités de “Scale-Up” de Windowscapacités de “Scale-Up” de WindowsAccès aux codes source de Microsoft SQL en Accès aux codes source de Microsoft SQL en vue d’améliorer la scalabilité de SQL sur les vue d’améliorer la scalabilité de SQL sur les serveurs hauts de gammeserveurs hauts de gamme
Pour les configurations “High-End” le Pour les configurations “High-End” le serveur et le stockage ne peuvent plus serveur et le stockage ne peuvent plus être considérés comme des boites être considérés comme des boites noiresnoires
Serveurs:Serveurs:Symmetric Multi ProcessingSymmetric Multi Processing
Non Uniform Memory AccessNon Uniform Memory Access
Architecture (Bus I/O, FSB, …)Architecture (Bus I/O, FSB, …)
Stockage:Stockage:ContrôleursContrôleurs
CacheCache
Nombre de disquesNombre de disques
VirtualisationVirtualisation
Symmetric Multi ProcessorSymmetric Multi Processor
Non Uniform Memory AccessNon Uniform Memory AccessMemoire interleaveMemoire interleave
Memoire localeMemoire locale
CPUCPU
CPU
CPU
MemoryMemo
ryMemory
Controller
CPUCPU
CPU
CPU
Memory
CPUCPU
CPU
CPU
CPUCPU
CPU
CPU
Memory
Memory
Memory
Memory
Memory
CPU
Memory
CPU
Memory
Memory
CPU
NODE
CELL
CROSS BAR
HYPER TRANSPORT
CPU/MEM
CPU
Memory
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Complexe de Superdome
Partition 1
XB
ar
XB
ar
XB
ar
XB
ar
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
Cell (4P/Mem/IO)
CPU
CPU
CPU
CPU
MemoryMemor
yCell / Memory
Controller
Cell
ToXBar
Accès à la mémoire locale: de meilleurs temps de latence quand le processor accède à la mémoire de la cellule.
Accès à la mémoire distante: Les temps de latence sont supérieurs quand un processeur accède à la mémoire disponible dans une cellule différente.
Noeud ou cellule
Stockage
Partition
Chassis I/O
Complexe
CrossBar
La table ACPI SRAT définit les attributs NUMA La table ACPI SRAT définit les attributs NUMA du serveur.du serveur.
Relation {Processeur:Noeud} membershipRelation {Processeur:Noeud} membershipRelation {Mémoire:Noeud} membershipRelation {Mémoire:Noeud} membershipNote: pas d’affinité pour les E/S {I/O:Node} Note: pas d’affinité pour les E/S {I/O:Node}
NT user mode NUMA APIsNT user mode NUMA APIsGetNumaHighestNodeNumberGetNumaHighestNodeNumberGetNumaProcessorNode pour un processeur GetNumaProcessorNode pour un processeur donnédonnéGetNumaNodeProcessorMask pour un nœud GetNumaNodeProcessorMask pour un nœud donnédonnéGetNumaAvailableMemory pour un nœud donnéGetNumaAvailableMemory pour un nœud donné
Mem Available per Cell
2500
2600
2700
2800
2900
3000
3100
3200
3300
3400
3500
1 2 3 4 5 6
t
MB Cell 0
Cell 1
for (i=0; i<1000000000000;i++){
malloc(10000000);}
Cell 0
Cell 1
GetNumaAvailableMemory
Windows 2003 (32 et 64bit) est Windows 2003 (32 et 64bit) est “NUMA aware”“NUMA aware”
NUMA APINUMA API
SQL Server 2005 and NUMASQL Server 2005 and NUMADétection du mode NUMA dans l’ErrorlogDétection du mode NUMA dans l’ErrorlogUn “buffer cache” par nœud (cellule)Un “buffer cache” par nœud (cellule)Une thread Lazywriter par nœud (cellule)Une thread Lazywriter par nœud (cellule)Affinité Client/nœud : un client peut être associé à un nœud Affinité Client/nœud : un client peut être associé à un nœud (cellule)(cellule)Affinité des threads à un nœudAffinité des threads à un nœud
Répartition de la charge sur les processeurs du nœudRépartition de la charge sur les processeurs du nœud
SuperLatches: validé automatiquement sur les SuperLatches: validé automatiquement sur les serveurs à plus de 32 processeursserveurs à plus de 32 processeurs
SQL recopie une page sur tous les nœuds NUMA (après y SQL recopie une page sur tous les nœuds NUMA (après y avoir accède un certain nombre de fois)avoir accède un certain nombre de fois)
Cell (4P/Mem/IO)
Superdome ComplexPartition 1
XB
ar
Partition
Un serveur d’application peut être associé à un groupe Un serveur d’application peut être associé à un groupe de processeurs en fonction du port TCP/IP utilisé.de processeurs en fonction du port TCP/IP utilisé.
Serveurs d’applicationServeurs d’application
Serveur de base de donnéesServeur de base de données
IP 1/port IP 2/port IP 3/port
NoeudNoeud
Stockage
PartitionPartition
SQLSQL
ERRORLOGERRORLOG2005-08-16 12:10:02.86 Server Server is listening on [ 'any' <ipv4> 2002]2005-08-16 12:10:02.86 Server Server is listening on [ 'any' <ipv4> 2002]2005-08-16 12:10:02.86 Server Server is listening on [ 'any' <ipv4> 2001]2005-08-16 12:10:02.86 Server Server is listening on [ 'any' <ipv4> 2001]2005-08-16 12:10:02.86 Server Server is listening on [ 'any' <ipv4> 2000]2005-08-16 12:10:02.86 Server Server is listening on [ 'any' <ipv4> 2000]
Port
Masque
PartitionPartition
Cellule
Moteur SQL Server 2005
SQL Listeners
Noeud logique
Checkpoint
Reporting
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration]NodeConfiguration]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node0]NodeConfiguration\Node0]
"CpuMask"=hex:03"CpuMask"=hex:03[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\
NodeConfiguration\Node1]NodeConfiguration\Node1]"CpuMask"=hex:0c"CpuMask"=hex:0c[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\
NodeConfiguration\Node2]NodeConfiguration\Node2]"CpuMask"=hex:30"CpuMask"=hex:30
Pour chaque “Soft node”, SQL crée un Pour chaque “Soft node”, SQL crée un ”I/O completion port” pour gérer les E/S ”I/O completion port” pour gérer les E/S réseauxréseaux
Disponible également sur serveur SMPDisponible également sur serveur SMP
Les “Soft Nodes” sont définies au Les “Soft Nodes” sont définies au niveau du serveur (pas de l’instance)niveau du serveur (pas de l’instance)
Un “Soft Node” ne peut pas être défini Un “Soft Node” ne peut pas être défini sur plusieurs “Hard Nodes”sur plusieurs “Hard Nodes”
Un « Soft Node » considère locale la Un « Soft Node » considère locale la mémoire disponible dans le « Hard mémoire disponible dans le « Hard Node »Node »
Affinité de processeur (CPU Affinity)Affinité de processeur (CPU Affinity)Moyen de contrôler le nombre de processeurs Moyen de contrôler le nombre de processeurs (thread) assigné à SQL Server(thread) assigné à SQL Server
SQL Server 2005 supporte l’ajout et la suppression SQL Server 2005 supporte l’ajout et la suppression de processeur en lignede processeur en ligne
Utiliser des processeurs Utiliser des processeurs Appartenant au même nœud pour éviter l’accès à Appartenant au même nœud pour éviter l’accès à la mémoire distantela mémoire distante
Appartenant au même « chip » (processeur à Appartenant au même « chip » (processeur à plusieurs cœurs)plusieurs cœurs)
Limiter la mémoire (max memory) à la Limiter la mémoire (max memory) à la mémoire disponible dans les nœuds choisismémoire disponible dans les nœuds choisis
Attention Attention àà l’ l’éénumeration des threadsnumeration des threads
SQL Server Buffer Node counters SQL Server Buffer Node counters Database pages Database pages Number of pages in Number of pages in
the buffer pool on this node with the buffer pool on this node with database content.database content.
Foreign pages Foreign pages Number of pages that Number of pages that come from a different NUMA node.come from a different NUMA node.
Free pages Free pages Total number of free Total number of free pages on this node.pages on this node.
Page life expectancy Page life expectancy Number of Number of seconds a page will stay in the buffer seconds a page will stay in the buffer pool on this node without references.pool on this node without references.
Stolen pages Stolen pages Number of pages used Number of pages used for miscellaneous server purposes for miscellaneous server purposes (stolen from the buffer pool) on this (stolen from the buffer pool) on this node.node.
Target pages Target pages Ideal number of pages Ideal number of pages in the buffer pool on this node.in the buffer pool on this node.
Total pages Total pages Total number of Total number of committed pages in the buffer pool on committed pages in the buffer pool on this node.this node.
Seulement disponible avec le
HardNUMA
70000
71000
72000
73000
74000
75000
76000
77000
78000
79000
80000
Run 1 Run 2 Run 3 Run 4 Run 5
ms
Node 0
Node 1
Node 2
Node 3
Environnement de testEnvironnement de testConfiguration du serveurConfiguration du serveur
4 Cellules (Nœuds) – 32 cœur – HT on (64 threads)4 Cellules (Nœuds) – 32 cœur – HT on (64 threads)
128 Gb (32 Gb par nœud)128 Gb (32 Gb par nœud)
Base de données de testsBase de données de tests
Le chargement de la table est forcé dans la Le chargement de la table est forcé dans la mémoire de la cellule 0.mémoire de la cellule 0.
Requête: « select (count(*)) from table » Requête: « select (count(*)) from table »
Manufacturing Instance
Marketing Instance
Payroll Instance
•Manufacturing DB•Marketing DB•Payroll DB
Windows 2003 Server (64P)
EnterpriseStorage &Backup
Scenario 3:Consolidation de serveursPlusieurs instances de l’OS, plusieurs instances de SQL - Même modèle que le scenario 1 avec option de repartionnement des ressources.
Scenario 2:Consolidation d’instance SQLUne instance de l’OS, plusieurs instances de SQL- Plus de souplesse et de contrôle des ressources CPUs et mémoires. Operations de maintenance effectuées par instance
Scenario 1:Consolidation de bases de donneesUne instance de l’OS, une instance de SQL, plusieurs bases de donnees- Utilisation maximale des ressources
SQL 2005 ServerWindows 2003 Server (64P)
Payroll Server
MarketingServer
Manufacturing Server
Windows 2003 Server (24P)
Windows (8P)
Windows 2003 Server (32P)
IsolationUtilisation
Ajout de mémoire à chaudAjout de mémoire à chaud
La modification des paramètres mémoire La modification des paramètres mémoire ne nécessite plus un redémarrage de ne nécessite plus un redémarrage de l’instancel’instance
Ajout et suppression de processeurs Ajout et suppression de processeurs (CPU Affinity) à la volée(CPU Affinity) à la volée
Support du Multi-instances: jusqu’a 50 Support du Multi-instances: jusqu’a 50 (24 avec MSCS)(24 avec MSCS)
Windows System Resource Manager Windows System Resource Manager (Microsoft)(Microsoft)
Pay Per Use (HP Integrity)Pay Per Use (HP Integrity)
Limiter le nombre d’instancesLimiter le nombre d’instances
Une instance par profil de chargeUne instance par profil de chargeOLTP – OLAPOLTP – OLAP
« Max degree of parallelism »« Max degree of parallelism »
Windows System Resource ManagerWindows System Resource Manager
Affinité de CPU (Attention aux licences)Affinité de CPU (Attention aux licences)
« Lock pages in memory » pour éviter le page « Lock pages in memory » pour éviter le page outout
Configurer “Max Memory” pour laisser Configurer “Max Memory” pour laisser suffisamment de mémoire pour Windows (1 suffisamment de mémoire pour Windows (1 to 4 GB)to 4 GB)
Un composant essentielUn composant essentiel
Une histoire de compromis :Une histoire de compromis :Performance, Redondance et CoutPerformance, Redondance et Cout
PerformancePerformance
Haute Haute disponibilitédisponibilité CoutCout
Profile des I/OsProfile des I/OsAléatoire ou séquentielAléatoire ou séquentiel
Taux d’accès simultanés Taux d’accès simultanés Surtout pour le transactionnelSurtout pour le transactionnel
DébitDébitTransaction LogTransaction Log
Backup & RestoreBackup & Restore
Microsoft SQL Server™ database – Accès Microsoft SQL Server™ database – Accès aléatoire en lecture écriture 8KBaléatoire en lecture écriture 8KB
Aléatoire pour les data files (8KB par I/O)Aléatoire pour les data files (8KB par I/O)
Séquentiel pour les Transaction Logs (taille des Séquentiel pour les Transaction Logs (taille des I/Os variable)I/Os variable)
Un charge I/O se caractérise:Un charge I/O se caractérise:Ratio Lecture/EcritureRatio Lecture/Ecriture
Ratio Accès séquentiel/Accès aléatoireRatio Accès séquentiel/Accès aléatoire
La taille des block transférésLa taille des block transférés
Il y a quelques grandes familles de Il y a quelques grandes familles de profils de chargeprofils de charge
On connait les capacités de notre On connait les capacités de notre stockage (ou on les mesure!!!)stockage (ou on les mesure!!!)
Dimensionner avec une approche Dimensionner avec une approche performance et non capacitéperformance et non capacitéDB I/O pattern, Log replay, TempDB, Snapshot, DB I/O pattern, Log replay, TempDB, Snapshot,
BackupBackup
Isoler les « Database files » et les Isoler les « Database files » et les « Transaction Log »« Transaction Log »
Eviter les profiles d’ accès aléatoires et Eviter les profiles d’ accès aléatoires et séquentiels sur le même group d’axesséquentiels sur le même group d’axes
Utiliser plusieurs « SQL data files » et striper Utiliser plusieurs « SQL data files » et striper avec les « file groups »avec les « file groups »
Paramétrage des drivers HBA (la valeur par Paramétrage des drivers HBA (la valeur par default du « Queue Length » est trop basse)default du « Queue Length » est trop basse)
Attention si l’unité de stockage est partagéAttention si l’unité de stockage est partagé
Eviter le RAID 5Eviter le RAID 5
TotalIOPS = 1/[1 –( TotalIOPS = 1/[1 –( RaidPenatly-1/RaidPenalty*PercentRead) RaidPenatly-1/RaidPenalty*PercentRead) ] * ] * (NumberOfDisks / RAIDPenalty) * (NumberOfDisks / RAIDPenalty) * DriveMaxIOPSDriveMaxIOPS
Exemple: “Disk Group” de 116 disques 15K Exemple: “Disk Group” de 116 disques 15K (VRAID-1) 50-50 Read/Write:(VRAID-1) 50-50 Read/Write:
Total IOPS = 1/[1 – ¼ ] * (116 / 2) * 170 IOPsTotal IOPS = 1/[1 – ¼ ] * (116 / 2) * 170 IOPs
Total IOPS =13,147 pour le « disk group « Total IOPS =13,147 pour le « disk group « Ou une moyenne de Ou une moyenne de 113113 IOPS par disque. IOPS par disque.
Attention 170 <> 113 ;-)Attention 170 <> 113 ;-)
RAID 1: RaidPenalty=2RAID 1: RaidPenalty=2
Disk Group
Enterprise Virtual Array
vdisk2
Vdisk 1 (Vraid 1)
Vdisk 2 (Vraid 5)
vdisk1
SANSAN
• Les disques physiques sont organisés dans des pools “Disk Groups”
• Les “Virtual Disks” sont caractérisés par:
• Un « Disk Group »
• Une taille (GB)
• Un niveau de RAID
• Un “Virtual Disk” (Vdisk) est présenté à un serveur en tant que LUN
30
Symptômes possible:
• Le nombre insuffisant d’axes limite le nombre d’I/O• Plus d’espace disponible
VRAID 0 ++
Solution:… ajouter des disquesVRAID 0VRAID 0
VRAID 1VRAID 1
VRAID 5VRAID 5
VRAID 0VRAID 0
VRAID 1VRAID 1
VRAID 5VRAID 5
Free space ( virtual space = 4 Disk)Free space ( virtual space = 4 Disk)
Utiliser des configurations simplesUtiliser des configurations simples
Avoir une bonne connaissance de la Avoir une bonne connaissance de la chargecharge
SizingSizingUtiliser les outils fournis par les vendeursUtiliser les outils fournis par les vendeurs
Qualifier, tester et validerQualifier, tester et validerSQLIOSQLIO
SQLIOSimSQLIOSim
La couche de gestion du stockage a connaissance La couche de gestion du stockage a connaissance de l’architecture NUMAde l’architecture NUMA
Affinité d’interruption.Affinité d’interruption. Les pilotes des HBA Les pilotes des HBA pourront spécifier les CPUs à utiliser pour la gestion pourront spécifier les CPUs à utiliser pour la gestion des interruptions.. des interruptions..
Amélioration des APIs NUMA notamment pour Amélioration des APIs NUMA notamment pour l’allocation de mémoire dans un nœud spécifié -l’allocation de mémoire dans un nœud spécifié -VirtualAllocExNuma -VirtualAllocExNuma -
I/O chassis
Node
Node
SQL Server 2005 est prêt pour les SQL Server 2005 est prêt pour les solutions d’entreprisesolutions d’entreprise
SQL Server 2005 est le moteur de base SQL Server 2005 est le moteur de base de données le plus performant sur de données le plus performant sur serveurs HP (TPC-C)serveurs HP (TPC-C)
HP est très impliqué dans le tuning et HP est très impliqué dans le tuning et l’optimisation de SQL Server 2005 sur l’optimisation de SQL Server 2005 sur les serveurs “high end”les serveurs “high end”
Avoir une bonne connaissance du Avoir une bonne connaissance du hardware est recommandée pour le hardware est recommandée pour le tuning avancétuning avancé
© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.