https://gihyo.jp/admin/clip/01/linux_dt/41187/02
Les principales mises à jour de Linux 5.7 sont: Implémentation de "Thermal Pressure " que le planificateur de tâches ajuste en cas de surchauffe du CPU, afin que les performances ne diminuent pas trop en raison du changement de fréquence par le gouverneur.
Vérifions cela sur une base d'implémentation!
L'emplacement du code source modifié est lié à la planification, donc ici.
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/kernel/sched?h=v5.7.1
En regardant le journal de validation, c'est ici.
sched/pelt: Add support to track thermal pressure
Extrapolating on the existing framework to track rt/dl utilization using pelt signals, add a similar mechanism to track thermal pressure.
Extrapolez à un cadre existant et ajoutez un mécanisme similaire pour suivre l'utilisation rt / dl à l'aide de signaux pert et suivre la pression thermique.
The difference here from rt/dl utilization tracking is that, instead of tracking time spent by a CPU running a RT/DL task through util_avg, the average thermal pressure is tracked through load_avg.
La différence avec le suivi de l'utilisation rt / dl est qu'au lieu de suivre le temps écoulé du processeur exécutant la tâche RT / DL via util_avg, il suit la pression thermique moyenne via load_avg.
This is because thermal pressure signal is weighted time "delta" capacity unlike util_avg which is binary.
En effet, contrairement au binaire util_avg, le signal de pression thermique est la capacité "delta" du temps pondéré.
"delta capacity" here means delta between the actual capacity of a CPU and the decreased capacity a CPU due to a thermal event.
«Capacité delta» signifie ici la différence entre la capacité réelle de la CPU et la capacité de la CPU réduite par l'événement thermique. .
In order to track average thermal pressure, a new sched_avg variable avg_thermal is introduced. Function update_thermal_load_avg can be called to do the periodic bookkeeping (accumulate, decay and average) of the thermal pressure.
En d'autres termes, la pression thermique moyenne est l'introduction d'une nouvelle variable sched_avg, avg_thermal. La fonction update_thermal_load_avg est appelée pour effectuer une comptabilité périodique (cumulative / décroissance / moyennage).
sched/fair: Enable periodic update of average thermal pressure
Introduce support in scheduler periodic tick and other CFS bookkeeping APIs to trigger the process of computing average thermal pressure for a CPU.
Dans le planificateur, les ticks réguliers et d'autres API de comptabilité CFS prennent en charge le déclenchement du calcul de la pression thermique moyenne du processeur.
Also consider avg_thermal.load_avg in others_have_blocked which allows for decay of pelt signals.
Considérez également les autres others_have_blocked avg_thermal.load_avg, entre autres bloqués avec le signal pert.
sched/fair: Update cpu_capacity to reflect thermal pressure
cpu_capacity initially reflects the maximum possible capacity of a CPU. Thermal pressure on a CPU means this maximum possible capacity is unavailable due to thermal events.
cpu_capacity est le reflet initial de la capacité maximale autorisée du CPU. La pression thermique du CPU est la capacité maximale possible désactivée par l'événement thermique.
This patch subtracts the average thermal pressure for a CPU from its maximum possible capacity so that cpu_capacity reflects the remaining maximum capacity.
Ce patch soustrait la pression thermique moyenne du processeur de la capacité maximale possible afin que cpu_capacity reflète la capacité maximale restante.
sched/fair: Enable tuning of decay period
Thermal pressure follows pelt signals which means the decay period for thermal pressure is the default pelt decay period.
La pression thermique suit le signal pert. En d'autres termes, la période de décroissance de la pression thermique est la période de décroissance par défaut.
Depending on SoC characteristics and thermal activity, it might be beneficial to decay thermal pressure slower, but still in-tune with the pelt signals.
En fonction des caractéristiques du SoC et de l'activité relative, il est avantageux de ralentir la pression thermique, mais cela est cohérent avec le signal pert.
One way to achieve this is to provide a command line parameter to set a decay shift parameter to an integer between 0 and 10.
Pour ce faire, vous pouvez spécifier les paramètres de ligne de commande et définir le paramètre de décalage de décroissance sur un entier compris entre 0 et 10.
Recommended Posts