1.5. Scheduling and Schedulers

Linux 2.6.x a trois différentes classes d'établissement de programme (scheduling) :

1.5.1. SCHED_OTHER

Cette classe est utilisée pour des processus normaux w/o RT. La plupart des processus sur un poste bureautique typique sont dans cette classe. Il y a une variété de schedulers disponibles pour cette classe.

Ce qui est commun pour tous ces schedulers est qu'ils n'ont aucun impact sur les processus de la classe SCHED_FIFO ou de la classe SCHED_RR. Aussi longtemps que vos tâches audio seront éxécutées par la classe SCHED_FIFO, le choix du scheduler SCHED_OTHER n'aura aucun effet.

1.5.2. SCHED_FIFO

Cette classe est basée sur la priorité. Tous les processus utilisant SCHED_FIFO sont exécutés avant n'importe quel processus SCHED_OTHER.

Si un thread SCHED_FIFO a une priorité statique plus élevée qu'un autre alors il obtient le cpu en premier. SCHED_FIFO fonctionne sans timeslices. Ceci signifie qu'un processus de SCHED_FIFO commencé, s'éxécutera jusqu'à ce qu'il renonce au cpu volontairement ou à cause d'un processus ayant une priorité plus élevée.

1.5.3. SCHED_RR

Dans SCHED_RR, n'importe quel thread prioritaire élevé qui devient exécutable devient un thread de faible priorité. Essentiellement le scheduler définit des files d'attente, une pour chaque niveau de priorité.

1.5.4. Choisir la classe de scheduler

Pour inspecter et défnir la classe de scheduler de certains processus il faut utiliser l'utilitaire chrt du paquet schedutils.

Quelques applications peuvent, cependant, définir la classe scheduling pour leurs propres threads, notamment jackd. Ils doivent être éxécutés en root ou doivent utiliser des capacités particulières, realtime-lsm par exemple.