High performance jss 2012
-
Upload
christophe-laporte -
Category
Technology
-
view
529 -
download
3
description
Transcript of High performance jss 2012
Edition 2012 – 10 et 11 décembre
Rejoignez la Communauté
Edition 2012 – 10 et 11 décembre
Sponsors Platinum
HAUTE PERFORMANCE
SQL Server
Edition 2012 – 10 et 11 décembre
Merci à nos SponsorsRencontrez les dans l’espace partenaires
Sponsors Platinum
Sponsors Gold
Sponsors Silver
Edition 2012 – 10 et 11 décembre
PRÉSENTATION
Christophe LAPORTE ~14 ans d’expérience sur SQL Server Architecture système et Bases de
Données Haute disponibilité Montée en charge Virtualisation Optimisation
Conseil ITo Blog :
http://conseilit.wordpress.com/o Twitter : @ConseilIT
Frédéric Pichaut Depuis la V1 !!! Senior Escalation Engineer
MicrosoftSupport Microsoft
Edition 2012 – 10 et 11 décembre
AGENDA
• La performance ?• Matériel• Processeur• Mémoire• Disque
• Architecture Fast Track• Fonctionnalités SQL Server• Large Pages• Lock Escalation• Page Latch• Minimal logging
• Facteur 100 !!!• Q& R
Edition 2012 – 10 et 11 décembre
QU’EST-CE QU’UN SYSTÈME ÉQUILIBRÉ?
• Un système où toutes les ressources peuvent donner leur maximum sans qu’aucun composant ne soit un goulot d’étranglement pour un autre
Le problème des évolutions:• Bandwidth/Throughput des CPU augmentent d’un facteur 1.5 annuellement• Latency executing instructions on CPU augmentent que d’un facteur 1.17 annuellement• Bandwidth/Throughput de la RAM augmentent d’un facteur 1.27 annuellement• Latency de transfert des données de la mémoire vers le processeur augmente d’un
facteur 1.07 annuellement• Bandwidth/Throughput des stockages augmentent d’un facteur 1.28 annuellement• Latency des lectures sur disque augmente que d’un facteur 1.11 annuellement
Le problème n’est plus réellement sur les CPU, mais plus sur les composants nourrissant les CPU en données.
Edition 2012 – 10 et 11 décembre
DÉFINITION DE LA PERFORMANCE
Ici, lorsque nous parlons de Performance, nous parlons d’amélioration des débits des éléments utilisant le hardware en parallèle
Nous ne parlons pas de Performance sur le plan de l’amélioration de l’exécution d’une tache monolithique( ex: exécution d’un requête)
Lire cet article sur un retour d’expérience client: http://blogs.msdn.com/b/saponsqlserver/archive/2010/01/24/performance-what-do-we-mean-in-regards-to-sap-workload.aspx
Edition 2012 – 10 et 11 décembre
SCALE UP TERMINOLOGY
64+ Logical Processor SystemGroup
(up to 64 logical processors)
NUMA NodeSocket
CoreLogical
Processor/CPU Thread
Edition 2012 – 10 et 11 décembre
MANY CORE PROCESSORS• Les hardwares classiques sur x64 sont largement assez performant pour les
besoins de beaucoup d’application et vont continuer a augmenter
• Les dernières générations de processeur:o Intel Xeon E5 26xx: 1 socket=8 cores=16 threadso Intel Xeon E7 87xx: 1 socket=10 cores=20 threadso AMD Opteron 617x: 1 socket=16cores=16threadso 2-socket serveur à 32 CPU threadso 4-socket serveur à 64 (AMD)/80 CPU threadso 8-socket serveur à 160 CPU threads (Intel only)
L’Intel Ivybridge-EX, attendu pour l’année prochaine, devrait exposer 30 CPU threads par socketLes architectures grandissent avec de plus en plus de thread par processeurs mais la performance d’un thread unique ne s’est pas amélioré.La performance d’un thread est souvent vitale pour l’exécution des requêtes simple.D’autres composants de SQL sont liés à la performance des thread unique: Ecriture dans les Log Buffers, Lockhash, etc
Edition 2012 – 10 et 11 décembre
MANY CORE PROCESSORS – SQL 2012Quelques informations intéressantes sur l’AMD Operon Processors, SQL Server 2012 et Windows• Le mode de licence de SQL Server 2012 par core. L’ AMD Opteron est un 16-core processors • Un patch de Win7/2008R2 et Windows 8 (sans patch) laisse l’Opteron exposer 8-core
Hyper-threaded. (http://support.microsoft.com/kb/2645594 )• Le patch ne change pas le mode de licence de l’Opteron (16-core processeur), mais permet
d’utiliser SQL Server 2012 STD (limité a 16 cores) sur un 2-socket Opteron avec tous les cores/CPU
Attention, il y a 2 versions de SQL Server 2012 Enterprise Edition• Normalement la version EE en licence Per-Core n’est pas limitée ou seulement par les
capacités de Windows • Il existe une seconde version de SQL EE qui est en licence Server + CAL. Elle est limitée a
20 sockets/40cores!!
Problème: • La description de la version limité est la même que dans le passé (‘Enterprise Edition (64-
Bit)’).• La description de La version “illimité” est: ‘Enterprise Edition: Core-based Licensing (64-
bit)’ • http://blogs.msdn.com/b/saponsqlserver/archive/2012/06/15/sql-server-2012-enterprise-edit
ions.aspx
Edition 2012 – 10 et 11 décembre
MANY CORE PROCESSORS - HYPERTHREADING• Expérience:• L’implémentation actuelle de l’Intel Simultaneous HT
semble donner environ 20 à 30% d’amélioration pour la plupart des applications SQL
• N’améliore pas les batch simple n’utilisant pas le parallélisme
• Le gain n’est visible que sur des batch s’exécutant en parallèle
• La performance intrinsèque qu’un CPU chute.
Edition 2012 – 10 et 11 décembre
Server Platform – NUMANon-Uniform-Memory-Access
Quel est le problème posé par cette architecture à SQL Serveur?• Le temps d’accès à la mémoire varie en fonction de l’endroit accédé (local ou remote)• SQL doit distribuer les allocations mémoires sur les différents node NUMA• Les accès ‘remote’/’foreign’ sont 2 à 5 fois plus long que les accès ‘local’• Spécialement sur des chipsets >4 sockets Un accès peut prendre 2 steps
Conclusion• SQL se doit de détecter l’architecture NUMA• Les constructeurs décrivent la configuration NUMA dans la HAL via l’interface SRAT• SQL Server récupère le configuration via des API Win32 APIs se configure en fonction• Windows et SQL Server se sont adaptés depuis les 10 dernières années pour bénéficier de cette
architecture• Chaque releases des deux produits apportent des améliorations sur ce point – et le travail
continu!!!
P1
Cache1
MemA DiskA
Node Interconnect
Cache(s)
P2
Cache2
P3
Cache3
P4
Cache4
Node A
P5
Cache1
MemB DiskB
P6
Cache2
P7
Cache3
P8
Cache4
Node B
Edition 2012 – 10 et 11 décembre
SQL SERVER PLATFORM – NUMA
• Les DMV liées à l’ architecture NUMA à partir de SQL Server 2008• sys.dm_os_memory_nodes
o Expose les allocations pour les différents nodes NUMA (doit être à peu près la même). Une ligne par node NUMA
• sys.dm_os_nodeso Expose les nodes NUMA, l’affinité CPU, le nombre de SQL schedulers par node
• DMV intéressantes sur les CPU et la mémoire:• sys.dm_os_sys_info • sys.dm_os_memory
• Attention sys.dm_os_sys_info ne fait pas de différence entre Core et CPU logique Hyperthreadé
• Vous pouvez aussi obtenir la configuration NUMA avec coreinfo.exe:o http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx
Edition 2012 – 10 et 11 décembre
SERVER PLATFORM – GROUPES DE PROCESSEURS
Windows 2008 R2 et SQL Server 2008 R2 supportent:• Jusqu’a 256 Processeurs logiques• Jusqu’a 2TB
Windows Server 2012 et SQL Server 2012 supportent:• Jusqu’a 640 Processeurs logiques• Jusqu’a 4TB
Nous supportons uniquement ce que nous avons testé( Nous n’avons pas encore eu des hardwares > 640 Processeurs logiques)
• Nous recommandons l’utilisation du Service Pack1 de SQL Server 2012 si > 256 CPU
• Il inclue des fixes de performance pour travailler avec > 256 CPUs
Edition 2012 – 10 et 11 décembre
SERVER PLATFORM – GROUPES DE PROCESSEURS
Segmented specification – “groups” of logical processors• >64 LP supported by dividing them into groups of 64 LPs
o Allows backward compatibility with 64-bit affinityo Permits better locality during scheduling than a
“flat” specification
• NUMA Nodes cannot cross different processor groups• Threads cannot migrate to other processor groups unless told so by user code• New Win32 APIs use KGROUPAFFINITY
o Applications have full LP range using new APIs
Edition 2012 – 10 et 11 décembre
SERVER PLATFORM – GROUPES DE PROCESSEURS
SQL Server 2008 (et avant)• SQL Server 2008 sur un serveur avec >64 LP, le process SQL est positionné dans un groupe• SQL Server 2008 ne voit que les processeurs de ce groupe
SQL Server 2008 R2 et SQL Server 2012:• Support total des groupes de processeurs• Le démarrage se fait dans un groupes de processeurs, mais peut assigner des threads dans un
autre groupe• Nouvelle syntaxe pour L’affinity mask:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=0 TO 15, 31 TO 47, 64 to 71;
• Attention, si les groupes de processeurs ne sont pas au maximum de 64LP il y a gap (trou) dans la liste des processeurs.
• Vérifier la colonne cpu_id de sys.dm_os_schedulers et en suite assigner les ID listé correctement
http://blogs.msdn.com/b/saponsqlserver/archive/2011/04/20/changes-in-affinity-settings-of-sql-server-2008-r2-to-support-gt-64-logical-processors.aspx
Edition 2012 – 10 et 11 décembre
SERVER PLATFORM – GROUPES DE PROCESSEURS
Problème avec la nouvelle génération de processeur Intel et les Groupes de Processeurs :• Ile ne fait pas une bonne répartition en groupe de 64 CPUs• Exemple:
o Un 4-socket server avec Intel Xeon E7 à 80 logical processors Démarre avec:
– Un groupe de 60– Un groupe de 20
o Un HP DL980 avec Intel Xeon E7 à 160 logical processors. Démarre avec :
– Deux groupes de 60– Un groupe de 40
Problème: Windows assigne les processes qui ne sont pas « group aware » aléatoirement au différents groupes SQL Server 2008 or SQL Server 2005• Solution: Hotfix http://support.microsoft.com/kb/2510206 Windows 2008
R2 OS --> Crée des groupes equilibré• Intégré à Windows Server 2012
Edition 2012 – 10 et 11 décembre
SERVER PLATFORM – GROUPES DE PROCESSEURS
Pas de changement pour l’affinity I/O mask. Peut uniquement être assigné dans le 1er groups – Ne pas y toucherChangements dans l’errorlog – ID du Groupes de Processeurs:Node configuration: node 0: CPU mask: 0x00000000000fffff:1 Active CPU mask: 0x00000000000fffff:1. Node configuration: node 1: CPU mask: 0x00000000000fffff:0 Active CPU mask: 0x00000000000fffff:0. Node configuration: node 2: CPU mask: 0x000000fffff00000:1 Active CPU mask: 0x000000fffff00000:1. Node configuration: node 3: CPU mask: 0x0fffff0000000000:1 Active CPU mask: 0x0fffff0000000000:1.
Apres l’application du http://support.microsoft.com/kb/2510206 :Node configuration: node 0: CPU mask: 0x000000fffff00000:0 Active CPU mask: 0x000000fffff00000:0. Node configuration: node 1: CPU mask: 0x00000000000fffff:0 Active CPU mask: 0x00000000000fffff:0. Node configuration: node 2: CPU mask: 0x000000fffff00000:1 Active CPU mask: 0x000000fffff00000:1. Node configuration: node 3: CPU mask: 0x0fffff0000000000:1 Active CPU mask: 0x0fffff0000000000:1.
• Pour mesurer l’utilisation CPU utiliser:• Les compteurs ‘Processor Information’ plutôt que ‘Processor’• Regarder aussi le compteur ‘% of maximum frequency’ sous ‘Processor
Performance’
Edition 2012 – 10 et 11 décembre
MÉMOIRE
La Mémoire pour systèmes classique est peu chère
Aucune raison pour ne pas équiper ces serveurs avec suffisamment de mémoire.
• Une configuration de 6-8GB par core processeur est bonne
Eventuellement plus pour des applications OLAP où les données doivent rester en mémoire• SQL Server 2012 ColumnStore• Les ColumnStore travaillent en segments de 4-16MB• Un segment minimum par colonne• Les I/Os pour charger un segment sont plus long• Donc besoin de garder les segments aussi longtemps que possible dans le cache
Edition 2012 – 10 et 11 décembre
MÉMOIRE – COMBIEN?
Que regarder:• SQL Buffer Pool Cache Hit Ratio (ideal 99%)
• Temps d’attente important sur PAGEIOLATCH_xx
• Maximum workspace memory, Memory grants pending (indiquent un pression mémoire)
• Taux important de “spill-outs” dans tempdb
• Lazy writes/sec continuellement actif
Sur une configuration AlwaysOn vérifier aussi pour chaque base membre d’un Availability Group:
• SQL Server:Databases Log Pool Cache Misses/sec
• SQL Server:Databases Log Pool Disk Reads/sec
• SQL Server:Databases Log Pool Requests/sec
• SQL Server:Memory Manager Log Pool Memory (KB)
Edition 2012 – 10 et 11 décembre
SQL SERVER ET LES DISQUES Les types d’I/O disque de SQL Server
Operation Random / Sequential
Read / Write Size Range
OLTP – Log Sequential Write Very small and up to 64K
OLTP – Data (Index Seeks) Random Read 8K
OLTP - Lazy Writer Random Write Any multiple of 8K up to 128K
OLTP - Checkpoint Random Write Any multiple of 8K up to 128K
Read Ahead (DSS, Index/Table Scans) Sequential Read Any multiple of 8KB up to 256K
Bulk Insert Sequential Write Any multiple of 8K up to 128K
BACKUP / Restore Sequential Read/Write Multiple of 64K (up to 4MB)
DBCC – CHECKDB Sequential Read 8K – 64K
ALTER INDEX REBUILD - (Read Phase)
Sequential Read (see Read Ahead)
ALTER INDEX REBUILD - (Write Phase)
Sequential Write Any multiple of 8K up to 128K
En 10 ans, la capacité des disques a été multipliée par 100En 10 ans, le temps d’accès aux disques a seulement été divisé par 10 Déterminer le # de disques nécessaires n’est pas une question de volume mais de performances
Edition 2012 – 10 et 11 décembre
DISQUES ROTATIFSRegardons les cas des lectures ‘random’ (8K pages):• Un disque standard 2.5’’ 15K RPM a de bonnes performances (I/O < 10ms)
jusqu’à 150 – 200 lectures ‘random’/s• Donc si j’ai besoin pour mon application de ~ 15K de lecture ‘random’ de
pages (index seek) par seconde :o Mes disques me fournissant ~1.2MB/sec (150*8k)o Il va falloir prévoir 100 disques pour tenir la charge uniquement pour les fichiers de données
Regardons les cas des lectures séquentielles (64K= 1 extent):• Le cas le pire est lorsque 1 extent sur disque appartient à un objet SQL et
le suivant appartient à un autre objet (cas fréquent) surtout en cas de fragmentation de table.
• On comprend donc que le nombre de lectures reste sensiblement le même que dans le cas ‘random’ (~150 read/s)
• En réorganisant les tables un disque lit ~10MB/sec• Pour lire 3TB il faut:
o 31 jours en lecture random et 140 IO/S de 8KBo 8.3h en lecture séquentielle
Edition 2012 – 10 et 11 décembre
DISQUES SSDCaractéristiques des disques SSD et autres medias no rotatifs:
• Vitesse de lecture souvent 20-40 fois plus rapide que les disques rotatifs avec une faible latence• Pour les SLCs la latence d’écriture est proche des SAN traditionnels avec cache• Des tests avec diffèrent workloads ont prouvé que de passer de disques classiques à des SSD
peut réduire le nombre de disque nécessaire par 10 avec le même voir meilleur latence.• Il sont très efficace pour une utilisation intensive de tempdb.• Les SSD réduisent la consommation électrique.
Violin: http://www.violin-memory.com/• Complete Storage arrays built on Flash• Connecté par Fiber Channel (Windows Failover Clustering possible)• Ou connecté par PCI-X (pas de WFC possible)
Fusion I/O: http://www.fusionio.com/• PCI-X based local Flash drive• désavantages: en général local, ne peut être partagé, pas de WFC possible
Note: ces périphériques peuvent avoir des comportements très diffèrent que des SSDs intégrés dans un SAN –Le plus proche de la mémoire le SDD est, le plus performant il est• Souvent pas possible d’utiliser en HA/DR
Edition 2012 – 10 et 11 décembre
SQL SERVER ET LES SAN/NAS
• Quelques règles de bases• Un large cache améliore l’efficacité de chaque disque• Des opérations qui ne profitent pas tant du cache car les pages sont lues
une fois et pas réutilisées:o Backup online, CHECKDB, Création d’indexes
• La réplication hardware peut avoir un impacte sur les performances d’écriture dans le Log de transaction• Penser aux solutions SRDF/S (Symmetrix Remote Data Facility) – soit un
“3rd party Volume Manager”
• Read et Writes Caches• Ne pas utiliser de Write cache sans batterie backup
• Utiliser le Write cache pour les logs
Edition 2012 – 10 et 11 décembre
SQL SERVER ET LES CONFIGURATIONS DISQUE
• RAID Level: 0, 1, 5, 10, 0+1• RAID 10 – recommandé pour datas et logs
• RAID 5 – uniquement sur des petits systèmes
• RAID 0+1 – pour les logs et Tempdb
• RAID 0 – pas recommandé
• Attention à la répartition sur les disques• Eviter la cohabitation des datas et logs
• Eviter la cohabitation avec certaine applications (Exchange)
• TOUJOURS aligner les file-systems sur une frontière de 64KB (diskpart.exe /ALIGN)
Edition 2012 – 10 et 11 décembre
QUELLE PERFORMANCE ATTENDRE
• Host Bus Adapter (HBA) • 1-Gigabit ~80-85MB/sec -- 2-Gigabit ~160-170MB/sec
• Plus de contrôleur = plus de performances
• Configuré le “multipathing”
• Quel niveau de performance attendre:• Data Files
o < 10 msec Idéalo 10 –20 msec Acceptableo > 20 msec Pb à résoudre, bottlenecks probables
• Log Fileso < 5 msec Idéalo 5 –10 msec Acceptableo 10 –15 msec Investigation nécessaireo 15 –20 msec Evolution compromiseo > 20 msec Pb à résoudre, bottlenecks probables
Edition 2012 – 10 et 11 décembre
ARCHITECTURE FASTTRACK
• Aide à la configuration de chaque composant
• Document Microsoft repris par les constructeurs avec des références matérielles
• Exemple• Dual Xeon processors, 6 cores /
processeur :MCR 3,168 MB/sec
• 4 x 8Gbps HBAs : 3,123 MB/sec• 48 15k disques (Raid 5) :
3,146 MB/sec
Edition 2012 – 10 et 11 décembre
ARCHITECTURE FASTTRACKo Plutôt orienté DataWareHouseo Optimiser tous les composants de la chaine IO Disqueo Documents constructeurs très détaillés …
Edition 2012 – 10 et 11 décembre
LARGE PAGES
• Taille des pages = 4Kb (x64)• 2Mb avec Large Pages
• Activation possible si• SQL Server Enterprise Edition • >=8Gb RAM • Privilège “Lock Pages in Memory”
• Trace Flag 834• Allocation de la mémoire du Buffer Pool via le LargePageAllocator• Réservation de la mémoire au démarrage de SQL Server• Peut empêcher le démarrage du service …• Peut ralentir le démarrage
• Démo• Si le temps le permet !!!!
Edition 2012 – 10 et 11 décembre
LARGE PAGE
Edition 2012 – 10 et 11 décembre
LOCK ESCALATION
• Partitionnement de table• Améliore la concurrence d’accès• Réduit la contention niveau page• Scénario Sliding Window• Reconstruction d’index granulaire
• Démo• Si le temps le permet !!!!
Ligne
Page
Partition
Table
Edition 2012 – 10 et 11 décembre
LOCK ESCALATION
Edition 2012 – 10 et 11 décembre
PAGE LATCH
• Solution : N B-Trees• Demo
Edition 2012 – 10 et 11 décembre
PAGE LATCH - DEMO
Edition 2012 – 10 et 11 décembre
PAGE LATCH – PFS PAGE (DB_ID().1.1)
Edition 2012 – 10 et 11 décembre
MINIMAL LOGGING
Table Indexes Rows in table Hints Without TF 610 With TF 610 Concurrent possible
Heap Any TABLOCK Minimal Minimal Yes
Heap Any None Full Full Yes
Heap + Index Any TABLOCK Full Depends (3) No
Cluster Empty TABLOCK, ORDER (1) Minimal Minimal No
Cluster Empty None Full Minimal Yes (2)
Cluster Any None Full Minimal Yes (2)
Cluster Any TABLOCK Full Minimal No
Cluster + Index Any None Full Depends (3) Yes (2)
Cluster + Index Any TABLOCK Full Depends (3) No
• Le journal de transaction trace• Les allocations d’extensions• Les modifications de metadata
• Démoo Si la session suivante n’a pas commencé !
Edition 2012 – 10 et 11 décembre
MINIMAL LOGGING - DEMO
Edition 2012 – 10 et 11 décembre
AUJOURD’HUI …
• Autres fonctionnalités disponibles• Encoding –
convert to integers
• Row ordering• Compression
XVELOCITY COLUMNSTORE INDEX
• Full Text• 15K partitions• Compression
Requêtes plus rapides
• 20 pools -> 64• CPU Hard cap• Affinité NUMA
Resource Governor
• Répartition de charge
• Offload de backups
AAG Routing list
• 640 logicel procs
• RAM 4TB• Page Allocator
Mémoire é CPU
Edition 2012 – 10 et 11 décembre
ET DEMAIN ????
Photomontage !!! Le logo n’a rien d’officiel.
Edition 2012 – 10 et 11 décembre
PROJET HEKATON
• Dévoilé lors du PASS Summit 2012• ΗΕΚΑΤΟΝ, • du Grèc ἑκατόν, hekatón, 100• Disponible dans SQL Server vNext
• Bases de données « En mémoire »• xVelocity columnstore index
o Analyse de donnéeso Basé colonne
• Hekatóno Applications fortement transactionnelleso Basé ligne
Edition 2012 – 10 et 11 décembre
PROJET HEKATON
• Principes architecturaux• Optimisé pour des accès en mémoire• ACID • Fréquence de CPU stagne
o Etre plus efficaceo Compilation + agressive et en code natif
• Elimination des locks & latches• Encapsulé dans SQL Server
Edition 2012 – 10 et 11 décembre
MIGRATION VERS HEKATON
• Stockage
• Compilation native
• Démo• (On ferme les portes de la salle, il faut vraiment voir cette démo)
Edition 2012 – 10 et 11 décembre
DÉMO HEKATON
Edition 2012 – 10 et 11 décembre
CONCLUSION
Bravo pour avoir résisté à cette session !
SQL Server est prêt à supporter vos scénarii Mission Critical, autant d’un point de vue disponibilité que performance …
Edition 2012 – 10 et 11 décembre
QUESTIONS / RÉPONSES
Merci à tous pour votre présence et n’hésitez pas à venir poursuivre le débat sur les stands et profiter de démos supplémentaires.
Whitepapers et autres documents disponibles sur SkyDrive :http://sdrv.ms/V7zSO2
Edition 2012 – 10 et 11 décembre
Merci à nos SponsorsRencontrez les dans l’espace partenaires
Sponsors Platinum
Sponsors Gold
Sponsors Silver