48

Au cœur de Windows Seven et de Windows Server 2008 R2

  • Upload
    payton

  • View
    37

  • Download
    0

Embed Size (px)

DESCRIPTION

Au cœur de Windows Seven et de Windows Server 2008 R2. RDA401 – Microsoft Techdays 9 février 2011 – 13h-14h. Présentation des speakers. Herv é Chapalain Escalation Engineer Microsoft France [email protected] Julien Crozon Tech lead - PowerPoint PPT Presentation

Citation preview

Page 1: Au cœur de  Windows  Seven et de  Windows Server 2008 R2
Page 2: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

2

Au cœur de WINDOWS SEVEN et de WINDOWS SERVER 2008 R2

RDA401 – Microsoft Techdays9 février 2011 – 13h-14h

Page 3: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

3

Présentation des speakers

Hervé ChapalainEscalation EngineerMicrosoft [email protected]

Julien CrozonTech leadSociété Générale Corporate Investment Bankinghttp://[email protected]

Page 4: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

4

Agenda

Changements architecturaux du noyauTroubleshootingScalabilitéDiminution de la consommation électriqueVirtual Hard Drive (VHD)

Page 5: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

5

Le Kernel

• Windows 7 et Server 2008 R2 utilisent le même kernel• Comme prévu, 2008 R2 Serveur n’existe qu’en 64-bit– Wow64 est une option sur la version Core Serveur

• Le numéro de version est 6.1 pour des raisons de compatibilité– Ne reflète pas le fait que c’est une nouvelle version majeure– Ne reflète pas la quantité de nouveautés– Anticipe le fait que de nombreuses applications ne sont

compatibles que pour Vista au moment de la sortie de win7

Page 6: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

6

Agenda

Changements architecturaux du noyauTroubleshootingScalabilitéDiminution de la consommation électriqueVirtual Hard Drive (VHD)

Page 7: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

7

MinWin

• MinWin est la première étape d’un Windows modulaire• Peut être buildé, booté et testé de manière autonome• Les couches plus hautes peuvent évoluer de manière

indépendante• MinWin est un ensemble de composants requis

pour booter et accéder au réseau• “le NT de Cutler”: Kernel, file system, TCP/IP stack,

device drivers, services• Pas de WMI, graphiques, audio ou shell

• MinWin: 160 binaires, 22MB sur disque, 40MB en mémoire

Page 8: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

8

MinWin

Shell,Graphics,Multimedia,Layered Services,Applets, Etc.

Kernel, HAL,TCP/IP,File Systems,Drivers,Core System Services

MinWin

Page 9: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

9

DLL Refactoring• Pour retirer des dépendances sur les couches

hautes, il a fallu réarchitecturer des DLLs• Les applications en dehors de MinWin utilisent les

anciennes DLLs• Ces DLLs transfèrent les appels vers les APIs

MinWin via des DLLs MinWin• Exemple:

• Kernel32.dll -> Kernelbase.dll• Advapi32.dll -> Kernelbase.dll

Page 10: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

10

API Sets

• Problème : les DLLs contiennent plusieurs ensembles d’APIs différentes• Un ensemble d’APIs est lié à une implémentation

• Les API Sets sont des DLLs virtuelles• L’architecture interne d’une API est séparée de son

implémentation• Elles peuvent être réunies dans un même binaire pour

une meilleure efficacité• Les APIS de MinWin sont les premières à être

implementées selon ce modèle :• Ex. API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL

Page 11: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

11

DLLs Virtuelles vers DLLs logiques• Le “mapping” est stocké dans un schéma qui est embarqué

dans Apisetschema.dll• Le Kernel lit le schéma au boot et le “map” dans tous les

processus pour une meilleure performance• Le loader utilise le schéma pour charger les DLLs qui n’ont pas

de path spécifié• Des images de ces DLLs virtuelles existent sur le système

pour des raisons de compatibilité avec des outils type Depends• Elles ne sont toutefois pas utilsées par le loader

Virtual DLL 1

Virtual DLL 2

ApiSetSchema.dll Logical DLL

Loader

Page 12: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

12

Agenda

Changements architecturaux du noyauTroubleshootingScalabilitéDiminution de la consommation électriqueVirtual Hard Drive (VHD)

Page 13: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

13

Troubleshooting

3 grandes améliorations pour aider au déplombage d’applications

Fault Tolerance Heap (FTH)

Process Reflection

Radar

Page 14: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

14

Troubleshooting Le Fault Tolerance Heap (FTH)

Rappel : qu’est ce qu’un sous-système de ‘heap’ (‘tas’ en français) ?

Le système d’exploitation n’offre qu’une API d’allocation mémoire : VirtualAlloc. La granularité de son allocation est une page mémoire (généralement 4k pour les small pages, 2Mo pour les large page).Pour éviter de perdre de l’espace, le système offre un sous-système de ‘heap’ qui permet d’allouer de plus petits blocsDifférentes fonctionnalités sont proposées depuis XP : la sérialisation des appels en cas de multithreading, le LFH (Low Fragmentation Heap) pour éviter la fragmentation

Page 15: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

15

Troubleshooting Le Fault Tolerance Heap

Idée principale : les corruptions de heap représentent 15% des crash en mode user, 30% des crash lorsque les applications se terminent. Un heap résistant à ce type de problème améliorerait l’expérience utilisateur

Réalisation :Un nouveau sous-système de heap appliqué dynamiquement par le système d’exploitation permet de réduire les chances d’avoir une faute en cas de dépassement de buffer, de double libération de la mémoire, etc.

Page 16: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

16

Troubleshooting Le Fault Tolerance Heap : designLe système d’exploitation surveille les crash des applications

Si le logiciel crash dans ntuser.dll quatre fois dans l’heure qui suit, le système applique une politique de tolérance de faute

Un système de poids est utilisé afin de choisir la meilleure technique d’évitement de faute

Si le processus crash quand même, le poids est diminuéSi le processus survit, le poids est augmentéSi le poids tombe en dessous de zéro, la politique de tolérance de faute est supprimée

Les axes sur lesquels le FTH peut agirValide toutes les opérations de tasGarde les 4 derniers Mo libérés en mémoire afin de supporter les doubles libérationsGarde des espaces entre les petites allocations pour éviter les problèmes de débordement

Le FTH ne justifie pas de ne plus corriger les bugs !C’est une ‘mitigation’ : un moyen pour que l’expérience utilisateur ne soit pas désagréableLes bugs remontés doivent être traités

Page 17: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

17

DémoLe Fault Tolerance Heap

Troubleshooting

Page 18: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

18

Troubleshooting Process Reflection

Idée principale : en environnement de production, quand un processus a des problèmes de mémoire ou qu’il réagit très lentement, la meilleure solution est souvent de prendre un dump pour l’analyser. Malheureusement, c’est une opération lente qui suspend le processus et qui n’est donc pas praticable sur des services à haute disponibilité (serveur Web, base de données, etc.)

Solution :Créer une copie du processus de la même façon qu’un fork() sous Unix, et créer un dump de cette copie

Page 19: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

19

TroubleshootingProcess Reflection : design

Le système d’exploitation expose une nouvelle fonction via ntdll : RtlCreateProcessReflection

L’API est pour l’instant interne

La mémoire est copiée en mode Copy-On-Write : les deux processus partagent les même pages mémoire jusqu’à ce que le processus originel fasse des modifications

L’outil ‘ProcDump’ de SysInternals permet d’utiliser la fonctionnalité

Page 20: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

20

DémoProcess Reflection

Troubleshooting

Page 21: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

21

Troubleshooting Radar

Radar est un système de détection automatique de fuites mémoire temps réel

Spécialement conçu pour avoir un très faible impact sur les processusRécolte suffisamment d’informations pour pouvoir pointer la source de la fuite mémoireUtilise l’API de Process ReflectionImplémente une heuristique permettant de choisir quels processus sont suspectés de fuites mémoire (dépassement d’un certain ‘working set’ par exemple)

Quand une fuite est détectée, un rapport est envoyé à Microsoft

Les ISV peuvent le demander et ainsi corriger leurs programmes

Page 22: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

22

Agenda

Changements architecturaux du noyauTroubleshootingScalabilitéDiminution de la consommation électriqueVirtual Hard Drive (VHD)

Page 23: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

23

Working Sets> Le Memory Manager a été optimisé pour réduire l’impact des

processus consommant beaucoup de VA> Réutilisation de leurs pages plus agressive> Utilise 3bits plutôt que 2bits pour gérer l'âge d'une page

> Le System cache, paged pool, et le code system utilisent leur propre working set> Chacun est optimisé pour son usage spécifique, ce qui améliore

l’utilisation globale de la mémoire> Réduit l’impact des copies de fichiers sur le code système

System Cache, Paged Pool, System Code P1 P2 …

System Cache P1 P2 …Paged Pool System Code

Vista, Server 2008

Windows 7, Server 2008 R2

Page 24: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

24

Suppression du “PFN Lock”

> Windows trace l’état des pages en mémoire physique> En cours d’utilisation (dans un working set)> Pas assignées à un working set (dans une des listes

suivantes: free, zero, modified, standby…)> Avant, les changements de ces états etaient

synchronisés par le “global PFN (Physical Frame Number) lock”

> Aujourd’hui, le PFN lock n’existe plus> Les pages sont synchronisées individuellement> Améliore la performance des applications nécessitant

beaucoup de mémoire

Page 25: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

25

Suppression d’autres “Locks” importants

> Cache Manager Virtual Address Control Block (VACB) lock> Pas complètement supprimé, mais n’est plus utilisé pour de

nombreuses tâches courantes> Améliore la performance des applications utilisant le file

caching de manière intensive> Object Manager Type lock

> Améliore la performance des tâches nécessitant la modification d’objets kernel (synchronization, files, registry)

Page 26: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

26

Suppression du Dispatcher Lock• Les locks serialisent l’accès aux structures de

données• Evitent que plusieurs threads modifient simultanément les

mêmes données• Introduit de la latence car les threads doivent attendre leur

tour pour continuer• Le Dispatcher lock est utilisé proportionnellement à

l’activité• Le lock protège tous les changements d’états des threads

(wait, unwait, etc.) • Ce lock n’existe plus sous Windows 7

• Chaque thread est protégé par son propre lock• De nombreuses opérations sont lock-free

Page 27: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

39

Agenda

Changements architecturaux du noyauTroubleshootingScalabilitéDiminution de la consommation électriqueVirtual Hard Drive (VHD)

Page 28: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

40

Comment réduire la consommation ?

4 améliorations pour diminuer la consommation électrique

Core Parking

Unified Background Process Manager (UBPM)

Timer coalescing

PerfConfig.exe

Page 29: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

41

Comment réduire la consommation ?

MotivationsLa consommation électrique des serveurs devient de plus en plus problématiqueAutonomie de l’embarqué

0 10 20 30 40 50 60 70 80 90 100 -

5.00 10.00 15.00 20.00 25.00 30.00 35.00 40.00

System Power vs. CPU Utilization(Idle)

CPU Utilization (%)

Tota

l Sys

tem

Pow

er

(Wat

ts)

Page 30: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

42

Comment réduire la consommation ?

Comment consommer peu ?

Maximiser le temps d’idle / d’extinction des CPUEteindre les processeurs non nécessairesEviter le plus possible de les réveiller

Minimiser le nombre de processus démarrésMutualiser les servicesDéfinir des événements qui démarrent des services, plutôt que démarrer des services qui attendent des événements

Page 31: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

43

Comment réduire la consommation ? Le Core Parking

Idée principale : éteindre les core non utilisés

Réalisation :Le système d’exploitation peut maintenant décider d’endormir indépendamment chaque core (to ‘park’ a core)Changement de principe du scheduler : celui-ci essaye de garder suffisamment de core éveillés pour absorber la charge demandée, et éteint les autresLe système connait la topographie physique (sockets et CPU) et logique (hyperthreading, SMT) et adapte son comportementLe comportement est différent entre Windows Seven et Windows Server 2008 R2

Page 32: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

44

Comment réduire la consommation ? Core Parking : design

Un évènement est levé toutes les 50 msIl contrôle la charge des CPU et décide de l’état de chaque core physique pour les prochaines 50 ms

Quel est l’algorithme de décision ?Cycle en hystérésis : augmente le nombre de CPU éveillés au delà d’un certain seuil d’utilisation, le diminue en deçà d’un autre seuilIl y a un minimum de core qui ne peuvent être endormisSur les systèmes NUMA, au moins un core par nœud doit rester éveillé (pour recevoir les notifications NUMA)

Le scheduler est notifié de la nouvelle politique de parking

Les threads ne sont pas envoyés sur les core endormis (à moins qu’il existe une affinité)

Page 33: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

45

DémoCore Parking

Comment réduire la consommation ?

Page 34: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

46

Comment réduire la consommation ? Unifier la gestion des tâches de fond (UBPM)

Idée principale : beaucoup de services ne sont utiles que dans un contexte bien précis, et ne devraient être démarrés que quand c’est nécessaire

Réalisation :Création de l’infrastructure UBPM (Unified Background Process Manager) servant à démarrer des services selon leurs abonnements à des événements

Page 35: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

47

Comment réduire la consommation ? UBPM : design

Le processus de gestion des services (‘services.exe’) gère les réactions des services aux événements

Les événements sont implémentés en ETW (Event Tracing for Windows)

Chaque service peut s’abonner à un ou plusieurs événements pour déclencher son démarrage ou son arrêt

Exemple : le service de gestion de NetBios (‘lmhosts’) démarre avec la première IP disponible, et s’arrête quand la dernière IP devient indisponibleExemple : le service de gestion des périphériques BlueTooth (‘bthserv’) démarre au premier périphérique BlueTooth connecté

Page 36: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

48

DémoService asservi à un événement custom

Comment réduire la consommation ?

Page 37: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

49

Comment réduire la consommation ? Rassembler les événements des timer (Timer Coalescing)

Idée principale : beaucoup d’applicatifs utilisent des timer pour être appellés régulièrement, mais n’ont pas de contrainte forte sur le temps écoulé entre chaque appelRéalisation :

Nouvelle API de ‘Timer Coalescing’ : on peut créer un timer en précisant la tolérance du logiciel vis-à-vis de l’exactitude de la période

Timer tick15.6 ms

Periodic Timer Events

Page 38: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

50

Comment réduire la consommation ?Timer coalescing : design

Nouvelle fonction dans l’API Windows : ‘SetWaitableTimerEx’

Contient un argument en plus, ‘TolerableDelay’, permettant d’indiquer qu’un driver ou un logiciel tolère une incertitude sur la période du timer

Les principaux services systèmes de Windows 7 / Windows Server 2008 R2 utilisent ce type de timer

C’est le choix du développeur de l’utiliser ou nonL’ancienne API fonctionne exactement comme avant pour éviter les effets de bord

Page 39: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

51

DémoObserver le regroupement des timer dans un Windows 7

Comment réduire la consommation ?

Page 40: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

52

Comment réduire la consommation ? Utiliser l’outil Powercfg.exe

Démo

Page 41: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

53

Comment réduire la consommation ? Analyse des résultats obtenus : distribution du temps passé en idle

Windows* Vista SP1Windows* 7 Build AWindows* 7 Build BMove right better

Page 42: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

54

Agenda

Changements architecturaux du noyauTroubleshootingScalabilitéDiminution de la consommation électriqueVirtual Hard Drive (VHD)

Page 43: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

55

Les disques durs virtuels (VHD)

Les VHD sont des composants à part entière du système d’exploitation

Support natif dans l’OS

Démonstration

Performances

Page 44: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

56

Les disques durs virtuels (VHD) Un support natif dans le système d’exploitation

La gestion des VHD est disponible directement dans la console de management des disques

Ainsi que via une API Win32 public disponible dans VirtDisk.dll : CreateVirtualDisk, GetVirtualDiskInformation, etc.

Les fonctionnalités standards sont :Création, attachement d’un fichier à un volume, détachement, etc…Augmentation de la taille d’un disque, compactage, réunion de deux disques en un seul, etc.Gestion de VHD imbriqués (deux niveaux maximum)Boot sur un VHD (et donc ordonnancement des arrêts des disques)

Page 45: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

57

DémoCréer un VHD

Les disques durs virtuels (VHD)

Page 46: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

58

64K Sequential R

ead

64K Sequential W

rite

4K Random Read

4K Random Writ

e1.00

10.00

100.00

1000.00

Physical Drive vs. Fixed VHD vs. Dynamic VHD vs. Passthru (VM Mode)

Physical Drive in HostFixed VHD in Win7Dynamic VHD in Win7Passthru in Win7

Thro

ugpu

t(M

Bps)

(Log Scaled by 10)

Les disques durs virtuels (VHD) : Performances

Page 47: Au cœur de  Windows  Seven et de  Windows Server 2008 R2

59

MSDN et TechNet : l’essentiel des ressources techniques à portée de clic

http://technet.com http://msdn.com

Portail administration et infrastructure pour informaticiens

Portail de ressources technique pour développeurs

Page 48: Au cœur de  Windows  Seven et de  Windows Server 2008 R2