Scheduling et gestion des ressources CPU sous Solaris
description
Transcript of Scheduling et gestion des ressources CPU sous Solaris
- 1.
-
- Association GUSES
- 2. http://www.guses.org
-
- 3. PHILIPPE Bruno
4. 19/05/2010 Scheduling : cas pratique 5.
- Notions de base
6. Dispatcher 7. Classes d'ordonancement 8. Outils d'analyses et de configuration 9. Cas pratique : applications cadences 10. Cas pratique : mutualisation 11. Conclusion Plan de la prsentation 12. Notions de base
- Fonction principale du systme
-
-
- Partie complexe du systme
- 13. Evolution constante avec le hardware
-
- Objectifs antagonistes
-
-
- Temps de rponse rapide (assurer)
- 14. Bon dbit pour les travaux d'arrire plan (fournir)
-
- 15. Processus de base et de haute priorits (jongler)
- Systme temps partag
-
-
- Division du temps en tranche (quantum)
- 16. Ordonnancement en fonction des ticks d'horloge
-
17. Notions de base
- Classification des processus
-
-
- Priorit pour chaque processus
- 18. Algorithmes complexes mis en oeuvre (slection, ordonnancement, etc...)
-
- Consommation des processus
-
-
- Consommation CPU
- 19. Consommation d'entre / sortie
-
- Catgories de processus
-
-
- Processus interractifs
- 20. Processus de commandes
-
- 21. Processus temps rel
22. Notions de base
- Premption des processus
-
-
- Processus de priorit suprieur
- 23. Expiration de son quantum
-
- 24. Interruption matrielle
- Dure du quantum
-
-
- Paramtre critique pour les performances du systmes
- 25. Compromis entre un temps court et long
-
- Premption des processus
-
-
- Processus de priorit suprieur
- 26. Expiration de son quantum de temps
-
27. Notions de base(tats des threads) 28. Dispatcher
- Fonctions principales
-
-
- Management de la queue (insertion et suppression des threads)
- 29. Slection des threads
-
- 30. Slection des cpu/core
31. Gestion des contextes switches
- Fonctions secondres
-
-
- Initialisation et ordonnancement des classes
- 32. Gestion des premptions
-
- 33. Gestion des commandes d'administration (li l'ordonnancement)
34. Dispatcher
- Gestion de deux types d'objects
-
-
- Objects de type threads
- 35. Objects de type processors
-
- Flexibilit du programme
-
-
- Gestion de plusieurs classes d'ordonnancement
- 36. Modification des priorits d'un thread dynamiquement
-
- Diverses influences
-
-
- Architecture matrielle (SMP, CMP, CMT, MPO)
- 37. Management des ressources (processor bind, processor sets, pool, zones)
-
38. Dispatcher
- Facteurs pour la slection des threads
-
-
- Niveau de priorit du thread
- 39. Lgroup maison
-
- 40. Binding du thread ou pas (processor set ou pbind)
41. Balancement dynamique par le code du dispatcher
- Synchronisation d'un thread
-
-
- Cohrence ncessaire
- 42. Ressource non disponible (placement dans une queue spcifique)
-
- Interruptions
-
-
- Mcanisme pour les devices et les fonctions spcifiques du noyau
- 43. Priorit les plus haute
-
44. Dispatcher(fonctionnement) 45. Dispatcher(priorits) 46. Classes d'ordonancement
- Timeshare (TS)
-
-
- Classe par dfaut
- 47. Priorits ajustes en fonction de la consommation CPU
-
- Interactive (IA)
-
-
- Identique la classe TS (driv)
- 48. Optimisation pour les tches excutes dans des fentres actives
-
- Fixed Prioriy (FX)
-
-
- Classe disponible sous Opensolaris et Solaris 10
- 49. Priorit fixe lors de l'excution du thread
-
- 50. Valeur 60 permet d'utiliser la classe SYS
51. Classes d'ordonancement
- Real Time (RT)
-
-
- Niveau de priortit le plus important (sauf interruptions)
- 52. Varience de temps minimale entre deux excutions
-
- 53. Utilisation en nombre viter
- System (SYS)
-
-
- Uniquement pour les threads du systmes
- 54. Affectation d'une priorit selon l'importance des travaux
-
- Fair Share (FSS)
-
-
- Classe disponible sous Opensolaris et Solaris 10
- 55. Gestion particulire des processeurs (part)
-
56. Classes TS 57. Classes FSS
- Fonctionnement
-
-
- Partage des ressources CPU en part
- 58. Importance relative d'une charge par rapport une autre
-
- 59. Valeur de la part non importante (quantit relative)
60. Intrt des parts uniquements en cas de contention 61. Intgration aux projects et aux zones
- Remarques
-
-
- Utilisation des autres classes dconseille
- 62. Possibilit de combiner la classe FSS et les processors set
-
- 63. Possibilit de combiner la classe FSS et les zones
64. Classes FSS(exemples) 65. Outils d'analyses
- Outils d'analyse courants
-
-
- Utlisation des cpu/core (psrinfo, vmstat, uptime, sar, mpstat)
- 66. Analyse des process (prstat, truss, pstack)
-
- 67. Analyse des projects (prstat, projects, prctl, rctladm)
68. Classes d'ordonnancement (dispadmin, ps, priocntl)
- Outils d'analyse connaitre
-
-
- Statistiques/Types des cpu/core (kstat, mdb, cpustack, cputrack, corestat)
- 69. Analyse des locks (mdb, lockstat)
-
- 70. Statistiques des interruptions (intrstat, corestat, cpustack, cputrack)
71. Statistiques des lgroups (mdb, kstat, lgrpinfo) 72. Outils d'analyses(dtrace)
- Comprhension des vnements
-
-
- Dispatcher : vnements, monitoring des queues, utilisation des cores
- 73. Threads : priorit, changement, premption
-
- 74. Lgroups : ordonnancement, utilisation
75. etc...
- Scripts Dtrace en pagaille
-
-
- Scripts disponibles sur le systme (/usr/demo/dtrace)
- 76. Scripts disponibles dans le DtraceToolkits
-
- 77. Scripts disponibles sur opensolaris
78. Outils de configuration
- Priorit des threads(nice, priocntl)
79. Gestion des interruptions(psrset, psradm) 80. Gestion des cpu/core(psradm) 81. Allocation de cpu un thread(pbind) 82. Gestion des groupes de cpu/core(psrset) 83. Configuration des projects(newtask, projadd, projmod, projdel) 84. Ressources pools(pooladm, poolcfg) 85. Gestion des zones(zonecfg) 86. Cas pratique(application cadence)
- Objectifs
-
-
- Temps d'excution toujours garantie
- 87. Influence minimale du systme
-
- Mise en oeuvre
-
-
- Processus binder sur un core (pbind et/ou psrset)
- 88. Interruptions matrielles supprimer sur ce(s) core(s)
-
- 89. Modification de la classe du processus (classe FX)
90. Optimisation de la rsolution d'horloge (tuning hires_xxx) 91. Modification de l'algorithme du dispatcher (tuning rechoose_interval) 92. Modification du quantum (attention aux consquences) 93. Cas pratique(application cadence)
- Remarques
-
-
- Influence forte du hardware
- 94. Classe RT dconseille si l'application n'est pas code pour
-
- 95. Mutualisation possible dans certains cas (voir mme conseille)
- Exemples d'applications
-
-
- Applications flux bancaires : Tibco, RMDS
- 96. Applications flux type streaming
-
97. Cas pratique(mutualisation sans zone)
- Objectifs
-
-
- Gestion de diffrents types d'applications
- 98. Temps CPU suffisant (ou fixe) pour chaque application
-
- Mise en oeuvre
-
-
- Configuration des ressources pools
- 99. Configuration des projects (un project par application)
-
- 100. Configuration de la classe FSS si pas de contraintes CPU
- Remarques
-
-
- Allocation du pool par dfaut
- 101. Identification stricte des applications
-
102. Cas pratique(mutualisation sans zone) 103. Cas pratique(mutualisation avec zones)
- Objectifs
-
-
- Gestion de diffrents types d'applications dans des zones
- 104. Temps CPU fixe pour chaque zone
-
- Mise en oeuvre
-
-
- Configuration des ressources pools
- 105. Configuration d'un pool par zone
-
- 106. Politique d'ordonnancement diffrent par zone si besoin
- Remarques
-
-
- Allocation du pool par dfaut la globale
- 107. Mutualisation limite (forte contrainte)
-
108. Cas pratique(mutualisation avec zones) 109. Cas pratique(mutualisation avec zones) 110. Cas pratique(mutualisation avec zones)
- Objectifs
-
-
- Gestion de diffrents types d'applications dans des zones
- 111. Temps CPU suffisant pour chaque zone
-
- Mise en oeuvre
-
-
- Configuration de la classe d'ordonnacement FSS
- 112. Configuration des ressources type cpu.shares pour chaque zone
-
- Remarques
-
-
- Allocation de cpu.shares la globale
- 113. Optimisation de la consolidation
-
- 114. Fluctuation des temps de traitements applicatifs
115. Cas pratique(mutualisation avec zones) 116. Conclusion
- Bon sens
-
-
- Minimiser les classes d'ordonnancement
- 117. Mutualisation suivant le type d'application (mme workload)
-
- 118. Identification des besoins
- Choix et configuration correct du hardware
-
-
- Slection de la bonne architecture matrielle
- 119. Utilisation maximum des lgroups
-
- Optimisation des applications la source
-
-
- Optimisation du code suivant le hardware
- 120. Favorisation du codage multithread
-
- 121. Utilisation d'outils d'audit de code (Oracle Sun Studio)
122. Questions ? 123.
- Book : Solaris Internals
124. Book : Solaris Performance and Tools 125. Book : Solaris Application Programming 126. Docs : 820-2318 & 816-5137 127. Web :http://www.solarisinternals.com 128. Web :http://hub.opensolaris.org 129. Web :http://www.sun.com/bigadmin/home/index.jsp 130. Web :http://www.sun.com/blueprints/browsedate.html