en direct du centre d’escalade du support microsoft : comment dépanner des problèmes de...
DESCRIPTION
Vous avez des problèmes de performance disques, , Problème de lenteur au boot/logon de Windows, vous avez des problèmes de consommation CPU anormalement élevés, des fuites mémoire etc.... Nous allons vous montrer comment le « Windows Performance Toolkit » va très vite vous devenir indispensable. Le « Windows Performance Toolkit » et le moteur « Event Tracing for Windows » sont probablement ce qui a transformé le plus Windows ces 6 dernières années.TRANSCRIPT
palais des
congrès
Paris
7, 8 et 9
février 2012
Philippe Dieulafait \ Hervé ChapalainIngénieurs d’EscaladeMicrosoft
En direct du Centre d'Escalade
du Support Microsoft :
Comment dépanner des
problèmes de performance ?
(LAN403)
Fuites mémoire mode User
Fuites mémoire mode Kernel
Performance disque
Performance lors du boot
Agenda
Windows Performance Toolkit (WPT 4.7)
Disponible dans le Windows SDK 7.1
Event Tracing for Windows (ETW)
Voir les nombreux articles dans MSDN
Outils et Technologie
Heap Leak
• Permet de tracer les fuites mémoire des applications mode User utilisant le Heap Manager
Démarrage du tracing
xperf -on Base -start HeapLeak -stackwalkHeapAlloc+HeapRealloc -heap -Pids <PID>
Arrêt du Tracing
xperf -stop HeapLeak -stop -d heap.etl
Pool Leak
• Permet de tracer les fuites mémoire des pools du kernel de Windows
Démarrage du tracing
xperf -on Base+POOL -stackwalkPoolAlloc+PoolAllocSession+PoolFree+PoolFreeSession –minbuffers 1000 -BufferSize 1024 -MaxBuffers 1024 -MaxFile 1024 -FileMode Circular
Arrêt du Tracing
xperf -d pool.etl
Performance disques
Windows Server 2008 R24 x 1.5 TB en RAID 0
iSCSI
Performance disques
IoMon.exeUser
Kernel
ntfs.sys
volsnap.sys
volmgr.sys
partmgr.sys
disk.sys
Stack File System
Stack Volume
Stack Disk
storport.sys
msiscsi.sysPort Driver + miniport
Logical Disk Counters
Physical Disk Counters+ETW DISK_IO
ETW Storport
Performance disques
• Activation des traces
Démarrage du tracing
xperf -on DISK_IO
Arrêt du Tracing
xperf -d diskio.etl
Phase de Boot et
Performance
Pourquoi le processus de démarrage est si
complexe?
Interaction de nombreux composants Inbox et 3rd
partie
Aperçu du processus de
démarrage
BIOSOS
LoaderOS Initialization
BIOSOS
LoaderKernel
InitializationSession
InitializationWinlogon
InitializationExplorer
Initialization‘Post Boot’
Activity
Numerous application & services consuming CPU &disk resources
Initialize the shell, process & run auto run tasks
Launch various services, orchestrate session logon
Initialize sessions, load win32k subsystem, Initialize, graphics, launch SCM
Enumerate devices, initialize & start drivers (PnP)
Read drivers,read parts of registry
( pas à l’échelle)
ReadyBoot Prefetcher
‘Post Boot’Activity
BIOSOS
LoaderKernel
InitializationSession
InitializationWinlogon
InitializationExplorer
Initialization
ReadyBoot prefetcher
In-RAMReadyBoot
Cache
Hard Drive
OS Components
File System
I/O
Volume Manager
Prefetching reads
OS, apps, & services reads
(cache hits)
ApplicationsOS Components
OS Components
ReadyBoot Driver
IO Stack
OS, apps, & services reads(cache misses)
Externe au code de l’OS
Délai induit par la détection d’un CD ou
l’initialisation Boot PXE
Pas reporté directement par Xperf
BIOS « Boot Phase »
BIOS
Démarre quand le BIOS passe le contrôle au
Loader (Winload)
Se termine lorsque le contrôle est passé au
noyau (Kernel)
Problème de performance:
Drivers non signé avec un certificat valide
Durée quelques secondes (dépendra du nombre
de drivers tiers installés)
OS Loader (Pre-Session Init Boot
Phase) BIOS
OS Loader
Xperf vue
Contient le Noyau (kernel de base) et
l’initialisation PnP
‘’Boot PnP Sub-Phase‘’
‘’Foreground System PnP Sub-Phase‘’
Problème de performance:
Drivers initialisation / Énumération des Devices …
Drivers défectueux, algorithmes mal optimisés
Drivers non signé avec un certificat valide
Kernel Init (Pre-Session Init Boot
Phase)BIOS
OS Loader
KernelInitialization
Xperf vue
Activités telles que Autochk et initialisation de la Vidéo
Action concernant les mises à jours ‘’retardé’’
System PnP Sub-Phase ‘’continue‘’ (Backgroud)
Commun à cette phase: le délai de l’initialisation de la Vidéo
Problème de performances supplémentaire si les actions PnP en ‘’Background‘’ prennent du temps
Session Init Boot Phase
BIOSOS
LoaderKernel
InitializationSession
Initialization
Xperf vue
Initialisation du SCM (Services.exe)Initialisation de la plupart des Services
Écran ‘’Bienvenue‘’
Écran de Logon
Initialisation du Desktop
Problème de performance:
Mappage connexion réseau
GPO du Domain
Services qui démarrent (Démarrage se poursuivant dans les phases suivantes)
Une charge I/O et CPU importantes peuvent augmenter la durée de cette phase
Winlogon Init Boot Phase
BIOSOS
LoaderKernel
InitializationSession
InitializationWinlogon
Initialization
Xperf vue
Le temps pour L’Explorer de charger ces
paramètres et les initialiser
Principalement consacré passé à initialiser
l’interface utilisateur
Phase habituellement rapide prenant quelques
secondes
Explorer Init Boot Phase
BIOSOS
LoaderKernel
InitializationSession
InitializationWinlogon
InitializationExplorer
Initialization
Xperf vue
Le ‘’Background processing’’ continue iciServices poursuivant leur démarrage
Activité du Prefetching ( si le Boot ‘’footprint‘’ est large)
Activité Antivirus
Démarrage des applications Raccourcis dans le Tray, indicateur de statuts OEM, IM software, applications de démarrage utilisateur customisées, etc
Typiquement on peut voir 20 à 40(voire plus) processus 3rd partis qui démarrent
Forte consommation des ressources CPU et Disque ce qui peut provoquer un goulet d’étranglement (Bottleneck)
L’impact avec l’utilisateur peut être important avec un sentiment de lenteur générale
Phase considérée terminée lorsque le Système est raisonnablement Idle (accumulation d’un total de 10s d’Idle time CPU et Disque)
Post Boot Phase
BIOSOS
LoaderKernel
InitializationSession
InitializationWinlogon
InitializationExplorer
InitializationPost Boot
Xperf vue
Post Boot PhaseD
isk Utilizatio
nD
isk
Uti
lizat
ion
CP
U U
tilization
CP
U U
tiliz
atio
n
Clean-install Boot Real User Boot
Exemple : Post Boot ressources utilisation
Modifiez le titre de l’annonce
DEMO
Exemplexbootmgr -trace boot -traceflags base+latency+dispatcher+Drivers -stackwalk
profile+cswitch+readythread -notraceflagsinfilename -postbootdelay 90 <Path>
Sur un OS X64 ajouter le paramètre suivant:
HKLM\System\CurrentControlSet\Control\Session Manager\Memory
Management
DisablePagingExecutive
REG_DWORD
Value: 1
Redémarrer l’ordinateur
Une fois la trace terminée pensée à changer la valeur de
DisablePagingExecutive à 0 ou a supprimer cette entrée crée
Créer une trace au démmarage
xperf -help processingAffiche les options pour extraire les données d’un fichier ETL
xperf -i tracename.etl -o summary.xml -a boot
Créer un résumé de la trace dans un fichier XML
XperfView
Demo Boot Phases
Sans Symbols
Symbols or not Symbols?
Avec Symbols
Exemple de problème de signature
DEMO
Windows Performance Analysis Developper Center
http://msdn.microsoft.com/en-us/performance/cc709422
Windows On/Off Transition Performance Analysis
http://msdn.microsoft.com/fr-fr/windows/hardware/gg463386
Windows On/Off Transitions Solutions Guide
http://msdn.microsoft.com/en-us/windows/hardware/gg463230
Liens
Chaque semaine, les
DevCampsALM, Azure, Windows Phone, HTML5, OpenDatahttp://msdn.microsoft.com/fr-fr/devcamp
Téléchargement, ressources
et toolkits : RdV sur MSDNhttp://msdn.microsoft.com/fr-fr/
Les offres à connaître90 jours d’essai gratuit de Windows
Azure
www.windowsazure.fr
Jusqu’à 35% de réduction sur Visual
Studio Pro, avec l’abonnement MSDN
www.visualstudio.fr
Pour aller plus loin
10
février
2012
Live
Meeting
Open Data - Développer des applications riches avec le
protocole Open Data
16
février
2012
Live
Meeting
Azure series - Développer des applications sociales sur
la plateforme Windows Azure
17
février
2012
Live
Meeting
Comprendre le canvas avec Galactic et la librairie
three.js
21
février
2012
Live
Meeting
La production automatisée de code avec CodeFluent
Entities
2 mars
2012
Live
Meeting
Comprendre et mettre en oeuvre le toolkit Azure pour
Windows Phone 7, iOS et Android
6 mars
2012
Live
MeetingNuget et ALM
9 mars
2012
Live
MeetingKinect - Bien gérer la vie de son capteur
13 mars
2012
Live
MeetingSharepoint series - Automatisation des tests
14 mars
2012
Live
Meeting
TFS Health Check - vérifier la bonne santé de votre
plateforme de développement
15 mars
2012
Live
Meeting
Azure series - Développer pour les téléphones, les
tablettes et le cloud avec Visual Studio 2010
16 mars
2012
Live
Meeting
Applications METRO design - Désossage en règle d'un
template METRO javascript
20 mars
2012
Live
Meeting
Retour d'expérience LightSwitch, Optimisation de
l'accès aux données, Intégration Silverlight
23 mars
2012
Live
Meeting
OAuth - la clé de l'utilisation des réseaux sociaux dans
votre application
Prochaines sessions des Dev Camps