1 / 75

Windows Vista /Longhorn Quoi de neuf pour les développeurs ?

Windows Vista /Longhorn Quoi de neuf pour les développeurs ?. Eric Mittelette Eric Vernié. Agenda. Introduction Investissements dans les fondamentaux Performance Robustesse Sécurité Divers. Nous ne pourrons pas tout traiter dans cette session, plus de 7000 nouvelles API !!!

Download Presentation

Windows Vista /Longhorn Quoi de neuf pour les développeurs ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows Vista /LonghornQuoi de neuf pour les développeurs ? Eric Mittelette Eric Vernié

  2. Agenda • Introduction • Investissements dans les fondamentaux • Performance • Robustesse • Sécurité • Divers

  3. Nous ne pourrons pas tout traiter dans cette session, plus de 7000 nouvelles API !!! • Application Recovery and RestartBoot Configuration DataCommon Log File SystemCondition VariablesDebug Help Library 6.6Kernel Transaction Manager (KTM)Multilingual User Interface FunctionsMultimedia Class Scheduler ServiceObject NamespacesOne-Time InitializationPerformance Logs and AlertsRestart ManagerThread Ordering ServiceThread PoolTransactional NTFS (TxF)Wait Chain TraversalWindows ErrorReporting

  4. Operations Infrastructure Contrôle Flexibilité Disponibilité Plate-forme applicative Solutions Flexibles Systèmes connectés Expériences Utilisateurs Investissements dans les fondamentaux Sécurité Robustesse Performance

  5. Performance • Nouveautés du noyau • CPU cycle counting • Timerresolution • Nouveaux objets de synchro • IOCompletion…

  6. Performance • CPU cycle counting et Timerresolution • Condition Variables • One-Time Initialization • Slim Reader-WriterLocks • Nouvelles APIs Thread Pool • Multimedia Class Scheduler Service • Thread Ordering Service

  7. CPU cycle counting et TimerResolution • TimerResolution • Ajustée et plus précise sur Vista • API non documentée • GetProcAdress (« NtQueryTimerResolution ») • Nouvelles API sur le nombre de cycle CPU • QueryThreadCycleTime • QueryProcessCycleTime • QueryIdleProcessorCycleTime

  8. Condition Variables • Nouvelles API de synchronisation sous Vista et Server2008 • Optimum dans les algorithmes de type Producteur-Consommateur • Minimise les passages en mode Kernel (impact perf) • API et structure • CONDITION_VARIABLE • WakeConditionVariable • SleepConditionVariableCS • InitializeConditionVariable

  9. One-time Initialization • S’assure que l’initialisation d’objets se fait une seul fois dans un environnement fortement concurrentiel • Evite d’utiliser sa propre logique de synchronisation • Mode Synchrone InitOnceExecuteOnce() • Mode Asynchrone InitOnceBeginInitialize() • InitOnceComplete()

  10. Slim Reader-WriterLocks • Slim Reader/Writer (SRW) locks • Permet de synchroniser plusieurs « lecteurs » sans verrou exclusif… • http://msdn2.microsoft.com/en-us/library/aa904937.aspx

  11. Slim Reader-WriterLocks • Etude de perf sur Quadri Core: • cf. MSDN Mag Juin07 : • http://msdn.microsoft.com/msdnmag/issues/07/06/concurrency/default.aspx

  12. Thread Pool • Les pools de threads sont disponibles depuis Windows 2000 (QueueUserWorkItem) • Plusieurs pools de threads dans un même processus • Possibilité d’annuler les rappels en attente d’exécution • Garantie du déchargement des DLLs • Séparation des ressources et l’usage des ressources • Gestion fine du nombre de threads par pool • http://msdn.microsoft.com/msdnmag/issues/07/10/ThreadPool/default.aspx?loc=fr • -

  13. Multi-media class Scheduler Service • Nouveau service qui « booste » les priorités des threads des applications multimédia afin de supporter un streaming audio et vidéo sans à-coup • Utilisé Windows Media Player 11 • Les threads se déclarent elles-mêmes comme multimédia : • Type d’activité (AvSetMmThreadCharacteristics) • Importance relative (AvSetMmThreadPriority) • Se référer aux taches définie dans le registre HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Multimedia\SystemProfile\Tasks

  14. Multi-media class Scheduler Service • Les threads sont « boostées » en temps réel pendant 80 % de la clock rate (défaut : 1 ms) • Si elles consomment ce temps, elles voient leur priorité diminuées pour que les autres puissent s’exécuter • 80 % peut être reconfiguré en HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile Boost temps réel Autre travail Boost temps réel Autre travail

  15. Thread Ordering Service • Assure que chaque thread est exécutée au moins une fois dans une période de temps donnée et dans l’ordre souhaité • Ne pas oublier de démarrer le service qui ne l’est pas par défaut !!! • AvRtCreateThreadOrderingGroup • AvRtJoinThreadOrderingGroup • AvRtWaitOnThreadOrderingGroup

  16. IO Priority • De même que les Processus et les Threads ont des priorités, les IO sous Vista et Server2008 ont maintenant une notion de priorité • Cas des applications qui font des IO en BackGround : anti virus, indexation, Fetch… • Même API que Process et Thread mais nouveaux Flags • SetPriorityClass() et SetThreadPriority() • PROCESS_MODE_BACKGROUND_BEGIN …END • THREAD_MODE_BACKGROUND_BEGIN …END • Voiraussi : SetFileInformationByHandle(…)

  17. Reserving Bandwidth for Streaming • Pour les applications basées sur du streaming, il est possible de réserver de la bande passante… • GetFileBandwidthReservation() • SetFileBandwidthReservation() • Par exemple une application qui requière 200 bytes par seconde fera l’appel suivant: • result = SetFileBandwidthReservation( hFile, 1000, 200, FALSE, &transferSize, &outstandingRequests );

  18. Robustesse • Application Recovery and Restart • Windows ErrorReporting • Common Log Files • Kernel Transaction Manager (KTM) • Performance Logs and Alerts • Perflib V2 • Wait Chain Traversal

  19. Application Recovery and Restart • Permet l’exécution de certaines actions lorsque l’application CRASH !! • Si l’application a été enregistrée, le système peut la redémarrer automatiquement • HRESULT WINAPI RegisterApplicationRestart( PCWSTR pwzCommandline, DWORD dwFlags ); • HRESULT WINAPI RegisterApplicationRecoveryCallback( APPLICATION_RECOVERY_CALLBACK pRecoveyCallback, PVOID pvParameter, DWORD dwPingInterval, DWORD dwFlags );

  20. Windows Error Reporting • Permet d’envoyer des rapports d’erreur sur un serveur Microsoft : https://winqual.microsoft.com/default.aspx • Existait déjà avec Windows XP, mais il y a du nouveau • Outil Problem Reports and Solutions • WerCreateReport() permet de créer un rapport pour tous type d’évènements • Les rapports peuvent êtrepersonnalisés (Ajout de fichiers, de dump) • L’interface peut êtrepersonnalisée • Peut-être désactivé par codeou par clé dans le registre • http://msdn2.microsoft.com/en-us/library/bb513638.aspx

  21. Windows Error Reporting • WerAddExcludedApplication(…) • WerReportCreate(…) • WerReportSubmit() • WerReportSetUIOption • WerRegisterMemoryBlock • ….

  22. Common Log Files • Common Log File System (CLFS) • Log haute performance • Multiplexage en binaire • Assure une montée en charge correcte sur un/des serveurs.

  23. Kernel Transaction Manager • Transaction disponible sous forme d’objet Kernel • Fournis des services de transaction à des composants systèmes tel que TxF • Peux communiquer avec DTC pour des transactions distribuées • Transaction NTFS (TxF) • Intègre les transactions dans la gestion des fichiers NTFS • Transaction du Registre (TxR) • Intègre les transactions pour les écriture dans le registre

  24. System.Tx Managed LTM SQL DTC MSMQ Native KtmRm KtmW32 SMB2 KTM Kernel NTFS Registry CLFS Infrastructure WCF

  25. Kernel Transaction Manager • CreateTransaction() • RollbackTransaction(Transaction) • CommitTransaction(Transaction) • TxF • CreateFileTransacted() • CopyFileTransacted() • MoveFileTransacted() • DeleteFileTransacted() • .. • TxR • RegOpenKeyTransacted() • RegCreateKeyTransacted() • ..

  26. Performances Logs & Alerts • Outil Reliability and performance monitor • PLA est un jeu d’API COM qui permet de créer tracer des évènements, des compteurs de performances, des alertes, des appels d’API • IDataCollectorSet • IDataCollectorCollection • IDataCollector, IAlertDataCollector, IPerformanceCounterDataCollector, ….. • -

  27. .h Generate Codes 3 Design .c Build 1 5 New counter provider Counter definition XML CTRPP Counter preprocessor Create a counter definition XML Design Build .rc Counter Definition XML 2 rc.h Instrument provider APIs New provider code Instrument 4 PerfLib V2 :Simplification du modèle de développement 5Etapes

  28. PerfLib V2 : Les outils • CTRPP (CounterPreprocessor) • Pour créer les fichiers sources nécéssaires • Installation du compteur • Lodctr /m:<fichier de def XML> • Désinstallation du compteur • Unlodctr /m:<fichier de def XML>

  29. Consommer des compteurs : New provider code • Démarrer le provider PerfStartProvider() • Set a counterobject information PerfSetCounterSetInfo() • Créer une instance du provider PerfCreateInstance(), PerfDeleteInstance(), PerfQueryInstance() • Mettre à jour les valeurs du compteurPerfSetULongCounterValue(), PerfSetULongLongCounterValue(), PerfSetCounterRefValue() • Arrêter le provider PerfStopProvider()

  30. Wait Chain Traversal • Aide à la détection des DeadLocks • Définition : • Un thread TA attend un verrou 1, tenu par le Thread TB. • Le Thread TB attend un verrou 2, tenu par le thread T1 =Cycle= DeadLock

  31. Wait Chain Traversal • Windows ErrorReporting, Extension de débogueurs, Debugger, Service WDI (Windows Diagnostic Infrastructure) • Basé sur le concept d’un « chainage d’attente » • Retrouve les informations pour des processus externes • Actuellement ne supporte que : • Les mutexes • Les sections critiques • Et l’API SendMessage()

  32. Wait Chain Trasversal • OpenThreadWaitChainSession() • GetThreadWaitChain() • RegisterWaitChainCOMCallback() • CloseThreadWaitChainSession()

  33. User-Mode Driver Framework (UMDF) • Problème : les drivers en mode kernelbogués provoquent des crashes de Windows ou permettent une élévation de privilège • UMDF au sein de Windows Vista supporte la migration de certains drivers USB, bluetooth et IP en mode user • Les bogues dans les drivers ne provoquent plus de crash • Les drivers en mode user peuvent être redémarrés de façon transparente • Périphériques supportés : • Caméras numériques • Baladeurs numériques • Téléphone mobile • Assistants personnels (PDA)

More Related