De nombreuses politiques et algorithmes de planification de disque ont été développés au fil des années, chacun avec ses propres forces et faiblesses. Le meilleur choix dépend fortement de la charge de travail spécifique et de la configuration système requise. Voici quelques-uns des plus courants :
Non préemptif (les demandes sont traitées dans l'ordre dans lequel elles arrivent) :
* Premier arrivé, premier servi (FCFS) : Approche la plus simple ; les demandes sont traitées dans l’ordre de leur arrivée. Très simple à mettre en œuvre mais peut entraîner un temps de recherche important et une dégradation des performances, en particulier avec des requêtes très dispersées. Il a tendance à créer de longs convois de demandes.
* Temps de recherche le plus court en premier (SSTF) : Sélectionne la requête qui minimise le temps de recherche à partir de la position actuelle de la tête. Améliore généralement les performances par rapport au FCFS, mais peut conduire à une privation de requêtes éloignées de la position actuelle de la tête (l'"effet d'ascenseur").
Préemptif (les requêtes peuvent être interrompues et réorganisées) :
* SCAN (algorithme d'ascenseur) : La tête de disque se déplace dans une direction, répondant aux demandes en cours de route. Une fois arrivé à la fin, il inverse la direction et continue de répondre aux demandes dans la direction opposée. Plus juste que SSTF car il évite la famine.
* C-SCAN (SCAN circulaire) : Semblable à SCAN, mais lorsque la tête atteint la fin, elle revient au début sans répondre aux demandes lors du voyage de retour. Cela permet une répartition plus uniforme du service et moins de variations dans les temps de réponse que SCAN.
* REGARDEZ et C-REGARDEZ : Ce sont des variantes de SCAN et C-SCAN, respectivement. La différence est qu'au lieu de se déplacer jusqu'à la fin du disque, ils vont uniquement jusqu'à la requête la plus éloignée dans la direction actuelle. Cela réduit les mouvements inutiles de la tête.
* FSCAN : Une variante qui combine FCFS et SCAN. Il traite les demandes dans l'ordre FCFS au sein de chaque cycle SCAN.
* Planification de files d'attente à plusieurs niveaux : Hiérarchise les requêtes en fonction de leur type (par exemple, requêtes système par rapport aux requêtes utilisateur). Différents algorithmes de planification peuvent être utilisés pour chaque file d'attente.
* Algorithmes de pondération : Attribuez des pondérations aux demandes en fonction de leur importance ou de leur priorité. Les demandes les plus pondérées sont privilégiées.
Autres algorithmes et considérations :
* Planification des délais : Priorise les demandes en fonction de leurs délais. Les demandes critiques sont traitées en premier pour éviter de manquer les délais.
* Algorithmes adaptatifs : Ajustez dynamiquement leur stratégie de planification en fonction du comportement observé du système et des caractéristiques de la charge de travail.
* File d'attente totalement équitable (CFQ) : Un planificateur de noyau Linux visant à fournir une allocation équitable de bande passante entre les processus. Il ne s'agit pas strictement d'un algorithme de planification de disque, mais il affecte considérablement les performances d'E/S du disque.
* Anticipation : Certains algorithmes avancés tentent de prédire les demandes futures sur la base de modèles passés et d'optimiser le mouvement de la tête en conséquence.
En pratique, les systèmes d'exploitation modernes utilisent souvent une combinaison de ces algorithmes et d'autres techniques sophistiquées pour optimiser les performances d'E/S des disques. Les algorithmes spécifiques utilisés ne sont pas toujours publiquement documentés ou faciles à déterminer. Le meilleur algorithme dépend de nombreux facteurs, notamment les caractéristiques du disque, le modèle d'E/S et les objectifs de performances.
|