Scheduling et gestion des ressources CPU sous Solaris

download Scheduling et gestion des ressources CPU sous Solaris

If you can't read please download the document

description

Afin de mieux appréhender la gestion des ressources CPU, il est nécessaire de mieux cerner le système et notamment l\'ordonnancement des processus. A ce titre j\'ai eu l\'occasion de faire une petite présentation pour l\'association Guses sur l\'ordonnencement dans Solaris/Opensolaris en m\'appuyant sur des cas pratiques où l\'optimisation des ressources CPU est nécessaire.

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