6. CFSet partage pondéré
6.1 Définir les participants et les poids
CFS vise l’idéal d’un processeur qui fournirait simultanément une fraction de puissance à chaque tâche prête. Avec N poids égaux, chacune reçoit 1/N. Le CPU réel partage son temps; il ne fait pas simultanément tous les calculs sur le même cœur. Des poids différents produisent des proportions différentes : l’équité pondérée n’est pas une égalité permanente des millisecondes.
Il faut aussi dire entre qui on partage. A possède 48 tâches, B seulement 2, toutes au niveau 120. L’égalité par tâche donne 48/50=96 % à A et 2/50=4 % à B. Le scénario du cours propose 50/50 entre utilisateurs, puis un partage de chaque moitié entre leurs tâches. Cette seconde cible suppose des groupes et poids configurés; elle n’est pas une garantie automatique de toute configuration CFS. Extension de groupes du noyau.
Pour les exercices, p=120+nice. La table associe un entier w à chaque nice. Diminuer nice d’un point augmente approximativement le poids d’un facteur 1,25 : w(p−1)≈1,25×w(p). Utiliser les entiers précalculés pour les résultats exacts, pas de nouvelles puissances arrondies. Ainsi nice 0→1024, nice 1→820, et non 880 comme le suggère une mauvaise reconnaissance orale.
Code (text) · sélectionner pour copier
nice -20..-16 : 88761 71755 56483 46273 36291
nice -15..-11 : 29154 23254 18705 14949 11916
nice -10.. -6 : 9548 7620 6100 4904 3906
nice -5.. -1 : 3121 2501 1991 1586 1277
nice 0.. 4 : 1024 820 655 526 423
nice 5.. 9 : 335 272 215 172 137
nice 10.. 14 : 110 87 70 56 45
nice 15.. 19 : 36 29 23 18 15
6.2 Fractions et tranches : deux exemples du cours
T_period est la période dans laquelle on souhaite idéalement donner un passage à chacun des threads prêts. Avec les poids w_j de tous les participants du calcul :
Code (text) · sélectionner pour copier
S = somme des poids prêts
f_i = w_i / S
T_slice,i = T_period × f_i
La méthode est conversion du niveau en nice si nécessaire→lecture des poids→somme→fraction→multiplication par la période. Priorité et nice ne remplacent pas w dans la fraction. Contrôler somme(f)=1 et somme(T_slice)=T_period. Les barres illustrent une cible de partage répétée, sans imposer l’ordre réel malgré arrivées, blocages ou granularité.
Trois tâches, période 15 ms :
| Tâche | Niveau | Nice | Poids | Part CPU | Tranche |
|---|---|---|---|---|---|
| PA | 120 | 0 | 1024 | 56,202 % | 8,4303 ms |
| PB | 123 | 3 | 526 | 28,869 % | 4,3304 ms |
| PC | 126 | 6 | 272 | 14,929 % | 2,2393 ms |
S=1822; par exemple PA obtient 15 ×1024/1822. Les trois tranches donnent 15 ms. La diapositive affiche 4,34 pour PB, mais ses propres données donnent 4,33 ms à deux décimales; 8,43+4,33+2,24=15,00.
Deux tâches, même période : PA au 120 a 1024, PB au 125(nice 5) a 335. S=1359 : T_A=15×1024/1359=11,3024ms, T_B=15×335/1359=3,6976ms. Leur somme vaut 15 ms, soit 15000000 ns. PB moins servi reste une tâche ordinaire; ce calcul n’en fait pas une classe temps réel.
6.3 Application du laboratoire : niveaux 119/123/127
Les nice sont −1/3/7 et les poids 1277/526/215. S=2018. Les parts sont respectivement 63,2805 %, 26,0654 %, 10,6541 %, soit 63,28/26,07/10,65 aux arrondis du corrigé. Le plus petit indice reçoit ici le plus grand poids et la plus grande part. Une période non donnée n’a pas à être inventée.
Le lab 6 retrouve les poids dans la table puis divise par leur somme; l’ASR déforme les nombres mais le document les établit. Une question étudiante demande si CFS est à l’intra. L’animateur se dit incertain et propose le forum; il ne fournit pas une nouvelle confirmation de périmètre. Le cours 12 a explicitement limité l’intra ordinaire à la partie 1, distinction conservée en §11.1. CFS reste au programme du cours et utile pour comprendre le TP2.
Pour 48 tâches de A et 2 de B : une part par tâche donne 96 % et 4 %. Des groupes de même poids peuvent viser 50 % chacun, puis répartir leur moitié; ce regroupement doit être configuré.
Source : Ajout pédagogique du portail depuis le maître S07 du cours; aucune source brute diffusée. · 6. CFSet