2. Edition 2012 – 10 et 11 décembre
Sponsors Platinum
SQL SERVER : INFRASTRUCTURE
11 décembre 2012
3. Edition 2012 – 10 et 11 décembre
SOMMAIRE
David Barbarin
~10 ans expérience SQL Server
Insentia SA
Blog : http://blog.developpez.com/mikedavem/
Twitter : @mikedavem
Conseil et formation
oArchitecture système et Bases de Données
oHaute disponibilité
oPerformance et optimisation
oSécurité
4. Edition 2012 – 10 et 11 décembre
SOMMAIRE
Processeurs
Mémoire
Stockage
Réseau
5. Edition 2012 – 10 et 11 décembre
Sponsors Platinum
PROCESSEURS
6. Edition 2012 – 10 et 11 décembre
CACHES PROCESSEURS
A quoi servent les caches ?
Registres (< 64 bits)
L1 cache : le plus petit mais le plus rapide des caches
L2 cache … L3 cache : peuvent accueillir plus de données mais leurs accès
est beaucoup plus lent
7. Edition 2012 – 10 et 11 décembre
CACHES PROCESSEURS
Plus on s’éloigne des registres CPU plus la latence d’accès augmente
L1 cache = 1 billionième de seconde (1000 milliards)
Disques = 1 millième de seconde (cas le plus défavorable)
Les performances d’un serveur de bases données sont étroitement liées
aux tailles de cache des processeurs
2ns 4ns 6ns 50ns us / ms
Registre L1 cache L2 cache L3 cache RAM Disques
32KB 256KB 12MB 64GB TB
8. Edition 2012 – 10 et 11 décembre
VITESSE, CŒURS ET HYPERTHREADING
Loi de Moore : la vitesse des processeurs double tous les 18 / 24 mois
La course à la vitesse d’horloge est terminée Place à la fragmentation des
puces (multi-cœurs) ou utilisation l’hyper-threading (fragmentation logique)
Les processeurs multi-cœurs ou hyper-threadés vs processeurs mono-cœurs
Sockets physique, cœurs physique et cœurs logique importante Devenu
important en terme de licence avec SQL Server 2012
Quid : Un processeur avec n cœurs ou plusieurs processeurs physiques
avec SQL Server ?
9. Edition 2012 – 10 et 11 décembre
VITESSE D’HORLOGE
Date
2002 Premier processeur hyperthreadé (Intel
Foster MP-based Xeon)
2005 Premier processeur dual core (AMD x64)
Meilleure performance que
l’hyperthreading
2006 Premier Core2 (quadcore) par Intel
…
Aujourd’hui AMD opteron 6xxx 16 cœurs
Intel Xeon E7 , Nehalem-EX 10 cœurs
hyperthreadés 20 cœurs
Demain Intel Xeon Phi Coprocesseurs
10. Edition 2012 – 10 et 11 décembre
TECHNOLOGIES TURBO BOOST / CORE
Appelé également « dynamic overclocking»
Technologie embarquée dans certaines versions d'Intel (Nehalem, Sandy-
Bridge et Ivy-Bridge) et AMD (Phenom II X6)
Permet aux processeurs d’augmenter dynamiquement leurs fréquences
d’horloges au-delà de la fréquence nominale
Contrôle possible depuis le système d’exploitation via ACPI. Activation dans
le bios également.
Vitesse limitée par la puissance du processeurs, ses limites thermiques (TDP),
le nombre de cœurs et les fréquences max
12. Edition 2012 – 10 et 11 décembre
Sponsors Platinum
MÉMOIRE
13. Edition 2012 – 10 et 11 décembre
TYPES DE MEMOIRE
Mémoires DDR2 vs DDR3
Mémoires ECC et bénéfices pour les serveurs de bases de données
CAS (Column Address Strube) ou latence
Exemple : DDR3 2000MHz CAS 10, DDR3 1600 MHz CAS 8 et DDR3 1333
MHz CAS 6 ont exactement les mêmes performances.
Calcul = 10 * 1 / (2000000000/2) = 8 * 1 / (1600000000/2) = 6 * 1/
(1333000000/2) = 0.000000010 soit 10ns
Architectures multicanaux
Quid : Une seule DIMM de grosse capacité ou plusieurs DIMM ?
14. Edition 2012 – 10 et 11 décembre
ARCHITECTURES 32 BITS ET 64 BITS
Architecture 32 bits
Chaque processus utilisateur a accès à 2Go d’espace d’adressage virtuel
(2 Go étant réservé aux processus systèmes)
Possibilité d’étendre l’espace d’adressage en utilisant les switch 3GB,
USERVA ou PAE (+ AWE) dans le boot.ini
Pour SQL Server l’ensemble des caches + buffer pool doivent
cohabiter dans un espace de 2Go.
L’option –g permet de réserver et de garantir une certaine quantité de
mémoire au démarrage de l’instance pour les pages qui ne concernent
pas le buffer pool (> 256 MB par défaut)
15. Edition 2012 – 10 et 11 décembre
ARCHITECTURES 32 BITS ET 64 BITS
Architecture 64 bits
Chaque processus utilisateur a accès un espace d’adressage virtuel
beaucoup plus grand (> To)
Architecture plus évolutive
Plus d’espace alloué aux différents caches SQL Server
Pollution des caches possible en fonction du type d’activité
CPI plus important en 64 bits
16. Edition 2012 – 10 et 11 décembre
NUMA ARCHITECTURE
Architecture classique (SMP)
Mémoire
principale
Cache Cache Cache
Processeur Processeur Processeur
I/O
Bus système
17. Edition 2012 – 10 et 11 décembre
NUMA ARCHITECTURE
Non Uniform Memory Access plus évolutive lorsque le nombre de
processeurs devient important
Processeur Processeur Processeur Processeur
Mémoire
principale
Mémoire
principale
Node Node
Bus système Bus système
I/O I/O
ccNUMA ccNUMA
19. Edition 2012 – 10 et 11 décembre
Sponsors Platinum
STOCKAGE
20. Edition 2012 – 10 et 11 décembre
DISQUES MECANIQUES
Facteurs affectant les performances des disques mécaniques
Temps de recherche (Seek time)
(IOPS) RANDOM
Latence de rotation (Rotational Latency)
(Débit Mo/s) SEQUENTIAL
Interfaces et bandes passante (Mo/s)
SATA, SAS, SCSI
21. Edition 2012 – 10 et 11 décembre
DISQUES SSD / CARTES IO FUSION
Suppression des latences du à la mécanique des têtes
Support de la commande TRIM
Interfaces (SAS, SATA)
Over provisionning, Wear leveling, garbage collection …
et les Cartes IO / Fusion ?
tolérance aux pannes, durée de vie ?
Le coût est encore un frein !
Quels éléments de bases de données à héberger sur ce type de
stockage ? Tout dépend !! (architecture, budget …)
22. Edition 2012 – 10 et 11 décembre
COMPARATIF DISQUES
Disque Interface IOPS
7200 rpm SATA 75-100 IOPS
10000 rpm SATA 125-50 IOPS
10000 rpm SAS 140 IOPS
15000 rpm SAS 175-210 IOPS
Intel X25-M G2 (MLC) SATA 3.3Go/s 8600 IOPS
OCZ Vertex 4 SATA 8Go/s 120000 IOPS
Fusion-io ioDrive PCIe 140000 Read IOPS,
135000 Write IOPS
OCZ 2x SuperScale Z-Drive
R4 PCI-Express SSD
PCIe 1200000 IOPS
23. Edition 2012 – 10 et 11 décembre
RAID
Tolérance de panne beaucoup plus élevé
Augmentation des performances par combinaisons de disques Grappe
Choix du type de grappe important en fonction
de l’utilisation, du nombre disques, de contrôleurs etc.
RAID 1, RAID5, RAID6, RAID 10
Paramétrage du contrôleur RAID
25. Edition 2012 – 10 et 11 décembre
DAS, SAN ET NAS
DAS ( Direct Attache Storage)
Concerne uniquement un serveur
En général un ou plusieurs contrôleurs RAID
Un nombre de disques limité
Une quantité de cache limitée
Une protection limitée
26. Edition 2012 – 10 et 11 décembre
SAN ( Stockage Area Network)
Indépendant
Extensible (disques, cache, contrôleurs …)
Bonne isolation des données
FC vs iSCSI
Connectique plus complexe
(HBA, Fabriques, Contrôleurs, disques)
Architecture coûteuse
Virtualisation du stockage
Virtualisation des niveaux de RAID
Virtualisation des baies de stockage
DAS, SAN ET NAS
28. Edition 2012 – 10 et 11 décembre
DAS, SAN ET NAS
NAS
Architecture moins coûteuse que les SAN
Performance plus faible
Utilisation du trace flag 1807
Reconsidération des NAS
avec SQL Server 2012 et Windows 2012 et
SMB 3.0 + pool de stockage
30. Edition 2012 – 10 et 11 décembre
Sponsors Platinum
RESEAU
31. Edition 2012 – 10 et 11 décembre
CARTES RÉSEAUX
Cartes Ethernet gigabits
Configuration manuelle vs auto détection (vitesse, full duplex …)
NIC teaming (tolérance de pannes, performances) avec Windows Server
2012 possibilité de gérer le teaming depuis le système d’exploitation
Ajout de cartes réseaux pour séparer les types de trafic (application,
maintenance …)
Utilisation des jumbo frames
Consolidation et virtualisation
33. Edition 2012 – 10 et 11 décembre
EN RESUME
Processeurs (vitesses, caches, architectures multicoeurs, multithreads)
Mémoire (vitesse d’horloge, latences, architectures NUMA)
Stockage (DAS, SAN, NAS, disques mécaniques, à mémoire flash)
Réseau (paramétrage, NIC Teaming, cartes dédiées)
34. Edition 2012 – 10 et 11 décembre
Merci à nos Sponsors
Rencontrez les dans l’espace partenaires
Sponsors Platinum
Sponsors Gold
Sponsors Silver
35. Edition 2012 – 10 et 11 décembre
Continuez l’expérience online
Rejoignez la Communauté
Notas do Editor
Instruction : opération élémentaire qu’un processeur doit effectuer
Les caches permettent de stocker des informations qui doivent être traités par le processeur (données + instructions) et réduisent les délais de transfert entre la mémoire vive et les processeurs
Pour les disques :
Latence d’accès millisecondes pour les disques mécaniques / micro secondes pour les disques SSD
Par expérience le choix des processeurs se fait uniquement à l’achat d’un serveur et n’évolue pas ou peu au cours du temps
Problème : plus la vitesse augmente plus la consommation d’énergie et la dissipation de chaleur sont importante refroidissement par eau (onéreux) ou ventilateurs (nuisance sonore)
> Multi cœur et hyperthreading permettent d’avoir une puissance de calcul équivalente voir meilleure avec une consommation d’énergie et une dissipation de chaleur moindre
Quid:
-------
SQL Server pattern d’utilisateur multithreads pour traiter les différentes tâches
Les invalidations de cache se font depuis la mémoire principale
Processeur n cœur : Intel partage du cache L2 et modification dans cache L1
AMD partage dans cache L3
Invalidation des caches beaucoup plus rapide dans le cas des architectures multi-cœurs et multi-threads
Intel Xeon Phi Coprocesseurs pour les applications massivement parallèle (> 100 thread)
DDR2 : Tension 1.8V – 800 Mhz
DDR3 : Tension 1.5V – 1333MHz 2000 MHz (requis par les processeurs actuels)
Slots différents entre les 2
ECC = Error Correction Code Memory
Ce type de mémoire peut détecter et réparer la corruption d’octets en mémoire sans avoir à redémarrer le système
CAS (Column Address Strube) ou latence (en nanosecondes pour les mémoires asynchrones et cycle d’horloges pour les mémoires synchrones) définit le temps d’accès à une colonne. Information à prendre en compte lors du choix de la RAM.
VAS = Virtual Address Space
Espace mémoire virtuelle utilisable par un processus. Un
Mécanisme de mapping va translater l’adresse virtuelle en adresse physique
Une adresse physique peut concerner la mémoire volatile (RAM) ou non volatile (disque)
3GB = réserver 3GB de mémoire pour les processus utilisateurs
USERVA permet d’allouer manuellement la quantité de mémoire adressable aux processus utilisateurs
Plus d’espace alloué aux caches autre que le buffer pool (cache des procédures, mémoire de travail (GROUP BY, SORT, reconstruction d’index), connexions, locks, threads, CLR etc … Polution du cache
CPI = Cost Per Instruction
(une même donnée occupe plus d’espace) La plage de travail SQL Server en 64 bits prendra plus de place dans les caches L2, L3 qui seront utilisés moins efficacement
SMP :
Une mémoire principale partagée par l’ensemble des processeurs
Les caches processeurs permettent une meilleure gestion d’accès à la mémoire (algorithme qui permet d’éviter le cache missing)
Nouvelles applications et systèmes d’exploitation devant plus gourmands, les caches processeurs ne suffisent plus devient le bottleneck dans une telle architecture. Les latences d’accès à la mémoire augmentent (malgré l’accroissement des caches L3)
SMP prévue pour des architectures jusqu’à 8 processeurs passage à NUMA au-delà
NUMA :
Node : Bloc de mémoire, processeur(s), IO physiquement sur le même bus de mémoire
ccNUMA : Gestion de la cohérence des caches
Mémoire locale et mémoire distante :
Mémoire locale même nœud que le processeur
Mémoire distante mémoire physique réside sur un nœud différent accès à la mémoire beaucoup plus lente (distance ou NUMA ratio qui doit être le plus petit possible)
Soft numa pour SQL Server :
Permet de grouper un ensemble de processeurs en nœud
Bénéfique pour augmenter le nombre de threads de traitement des I/O et Lazywriter.
Seules les schedulers et SNI (SQL Server Network Interfaces) sont soft-num aware.
Seek time :
Le temps de recherche de la tête pour trouver une donnée. Ce temps affecte le nombre d’entrées / sorties par seconde pouvant être traités (IOPS) RANDOM
Rotational Latency :
Le temps nécessaire à la rotation des disques pour que la donnée soit lue. Ce temps affecte la quantité de données que peut lire le disque par seconde (Débit Mo/s) SEQUENTIAL
Interfaces et bandes passants :
SATA 3 6GB/s
SAS (Serial Attached SCSI) mode de transmission en série vs scsci parallèle
SAS 3GB/s, 6GB/s, 12GB/s
SAS gère mieux le fullduplex que SATA (deux commandes en même temps)
SSD : Solid State Drive
Plus de mécanique suppression des latences de rotation et temps de recherche.
La recherche de données se fait par recherche dans les cellules des mémoires flash
Très bonne performance entre lecture aléatoire / séquentielle mais performance tombe lorsqu’il s’agit d’écriture
En général les performances sont annoncés pour des blocs de 4K avec cache activé
Support de la commande SATA : TRIM (Permet au système d’exploitation de notifier le disque SSD qu’un bloc n’est plus utilisé. Les écritures ultérieures peuvent être optimisées sans avoir à effectuer un effacement préalable (disponible à partir de Windows 7 et Windows Server 2008 R2)
Over provisionning (permet de pouvoir réserver un espace supplémentaire pour le garbage collector)
Wear leveling (permet de répartir équitablement l’écriture des pages dans les blocs)
Garbage collection (pemet en tâche de fond d’effacer les pages de données non utilisées)
Fusion IO :
Même concept que les disques SSD. Les cartes Fusion IO se branchent sur des slots PCIe. (6GB/s)
TRIM:
Les disques SSD ne savent pas quels objets du système d’exploitation sont effacés.
L’écriture des données dans les mémoires flash se font par page. Les pages sont regroupés par bloc de 512Ko.
L’écriture se fait par page mais l’effacement des données se fait par bloc
Avant de pouvoir réécrire sur un bloc déjà utilisé, un effacement de celui-ci est nécessaire SSD performant au début de son cycle de vie et les performances tombent par la suite
TRIM est une commande qui ne peut pas être mis en attente (NCQ). Les opérations TRIM peuvent se faire par batch pour optimiser les opérations de suppression,
Evite le phénomène d’écriture amplifiée avec des charges de travail OLTP (petites écritures aléatoires) qui nécessitent l’écriture de quelques pages mais l’effacement par bloc
TRIM n’est efficace que s’il existe suffisamment d’espace libre sur disque
Contrôleur raid : taille des chunks, cache en lecture / écriture …
RAID :
Raid permet de pouvoir augmenter la tolérance aux pannes et d’augmenter les performances IO du stockage (IOPS, débit)
RAID1 :
Minimum 2 disques plus si contrôleur le supporte mais n’apporte pas vraiment de performance supplémentaire
Pas de gestion de parité
Données dupliqués
50% espace disque en moins
RAID 5+1 :
Minimum 3 disques
Gestion de parité
1/3 de l’espace perdu pour le stockage de parité
- Variante RAID 6+2
RAID 10
Minimum 4 disques
Disques mirrorés et ensuite strippés
50% espace disque en moins
Un serveur avec un ou plusieurs contrôleurs raid
Plusieurs bases de disques 2 pouces ½ au lieu de 3 pouces ½ Serveurs Blades 2 à 5 baies / Serveurs à racks peuvent en avoir beaucoup plus (dépend de leur hauteur)
Protection : Zoning
Fibre Channel vs SCSI
FC = 2.4. 8 et 16GB/s
Concepts annexes
Automatique tiering, déduplication des données
Cartes HBA :
FC vs iSCSI (qui se démocratise)
Plusieurs cartes HBA redondance, performance
Fabriques :
Redondant également et pas connecté sur le même sous-réseau
SAN : fonctionne au niveau bloc de données
NAS : fonctionne au niveau système de fichiers
L'inconvénient de cette configuration est que toutes les e/s de fichier est traité par le biais de la pile réseau et est soumis aux limitations de la bande passante du réseau lui-même. Cela peut engendrer des performances et des problèmes de fiabilité de données, en particulier dans les programmes qui requièrent des niveaux extrêmement élevés de fichier e/s, telles que SQL Server
Jumbo frames :
MTU de 1500 MTU de 9000
Beaucoup mois de traitement CPU pour couper et réassembler les paquets réseaux
Nécessite à ce que l’ensemble des composants réseaux supportent ce type de paramétrage