Planification dynamic des processus dans Ubuntu

Je voulais modifier le code du kernel Linux qui modifie dynamicment la priorité du processus.

J’ai Ubuntu 10.10 et j’ai téléchargé Linux 2.6.37. Ce que j’ai trouvé, c’est que dans la version 2.6.37, il n’y a aucun concept de modification dynamic de la priorité du processus. [Dans CentOS, il existe une fonction recalc_task_prio () qui modifie dynamicment la priorité du processus].

Je voulais savoir si quelqu’un connaissait une autre version du kernel ubuntu qui prend en charge la fonctionnalité de modification dynamic de la priorité du processus (basée sur la pénalisation de la priorité du processus si la tâche est liée au processeur et consum beaucoup de CPU)?

Je me réfère principalement à ce lien – http://www.ibm.com/developerworks/linux/library/l-scheduler/

Merci d’avance,

Sous Linux v.2.6.23, un nouveau planificateur CFS a été intégré, qui repose moins sur le HZ et plus sur des nanosecondes de temps d’exécution.

Tous les processus sont stockés dans un arbre rouge-noir qui rend O (1) peu coûteux pour trouver la tâche la plus à gauche (et donc la plus méritante) à exécuter. Périodiquement ( task_tick() ), le système vérifie si un autre processus est “plus méritant” et préempte une tâche en cours. (Bien sûr, les tâches peuvent donner ( yield_task() ) par elles-mêmes et les tâches nouvellement exécutables peuvent préempter une tâche en cours d’exécution ( check_preempt_curr() ). O (log (N)) pour trouver son nouvel emplacement dans l’arborescence RB.

Ainsi, les tâches qui attendent sur IO ne sont sockets en compte que très peu de temps et ne sont pas très éloignées dans l’arborescence – ce qui correspond à une augmentation de priorité. Les tâches qui ne dorment pas sur les événements IO utiliseront comparativement plus de temps processeur avant d’être préemptées par une tâche de priorité plus élevée.

Pour plus de détails, assurez-vous de lire la Documentation/scheduler/ documentation et les fichiers d’implémentation kernel/sched* .

Si c’était mon devoir de manipuler les ordonnanceurs (comme c’était le cas autrefois), je chercherais sérieusement à append une nouvelle classe de planification en temps réel comme SCHED_FIFO ou SCHED_RR (selon celle qui était la plus proche de la conception du planificateur) ) et bidouiller les priorités des tâches de cette façon. Cela peut être un peu raide pour qu’un cours d’introduction à l’OS le fasse – un kernel Linux ou un kernel BSD plus ancien peut être plus facile à utiliser.