Tagged Command Queuing

Une définition du Jargon Français.
Aller à : Navigation, rechercher

Dr enus.png locution nominale, masculin.  [disque]. Mode d'amélioration des performances d'une mémoire de masse consistant à la laisser réordonner les requêtes afin de réduire les actions nécessaires (telles que, dans le cas d'un disque dur, des déplacements de têtes), tout en ménageant au système d'exploitation un droit de préemption (pour les commandes urgentes).

Abrégé TCQ.

Certaines mémoires de masse n'acceptent pas les requêtes en permanence. De toutes façons les lui passer une à une en exigeant exécution immédiate de chacune interdit de les grouper par zones concernées, ce qui ralentit.

Dans le cas d'un disque dur si les programmes en cours d'exécution réclament, par exemple, tout d'abord une lecture du bloc (ou du secteur, peu importe ici) situé sur le cylindre numéro 30, une autre d'un bloc du cylindre 11 puis du 16 il sera vraisemblablement rentable de les présenter au disque dans l'ordre 11, 16, 30 (ou peut-être « 30, 16, 11 », si les têtes se trouvent plus près du bloc 30) afin d'éviter de leur infliger des aller-retours. Cela réduit la latence et l'usure mécanique. Ce genre d'algorithme est de type ascenseur (sens 2).

Donc tout bon système d'exploitation réordonne les requêtes (issues des programmes) en instance afin d'optimiser tout cela. Ce classement est d'ordinaire assuré par les routines d'un ensemble appelé I/O scheduler, intégré au système d'exploitation ou (surtout dans le cas du RAID matériel) au contrôleur disque.

Le TCQ est intégré au disque et complète ou remplace cela en prenant en compte l'état interne de ce dernier, donc en fonction d'informations relatives à une activité de très bas niveau inaccessible aux éléments extérieurs, par exemple la position physique réelle des têtes et, relativement à elles, des secteurs. Il réordonne donc les requêtes afin que les têtes puissent accéder à toutes les données en un temps minimal, dont en un nombre minimal de rotations complètes des plateaux. C'est assuré par une logique embarquée sur la mémoire de masse et respecte, de surcroît, le contenu d'une balise associée à chaque requête qui exprime sa priorité relative (ce qui doit être lu ou écrit d'urgence l'est avant le reste).

C'est particulièrement rentable si l'accès aléatoire règne (le cas-type est celui d'un serveur d'OLTP).

Durant longtemps seul le SCSI-2 (et de rares disques ATA tardifs) permettait cela, c'est pourquoi le Tagged Command Queuing était préféré sur les serveurs. Puis NCQ, quasi équivalent, arriva.