J'essaie de compter le nombre total de ticks de l'horloge pour chaque processus (seulement quand il est en cours d'exécution). J'ai inséré le code suivant dans schedule()
(fichier sched.h):Comptage des ticks de l'horloge sous Linux 2.4.14
...
switch_tasks:
prefetch(next);
clear_tsk_need_resched(prev);
if (likely(prev != next)) {
rq->nr_switches++;
rq->curr = next;
/* My code start here*/
if (next->start_count==1)
next->start_run=jiffies;
if (prev->start_count==1)
{
prev->total_running += (jiffies-prev->start_run);
printk("total running = %lu, jif-start = %lu\n", \
prev->total_running, jiffies-prev->start_run);
}
...
J'ai ajouté le printk
parce que j'ai obtenu des résultats étranges. Voici la sortie:
fonctionnement total = 1522, JIF-start = 1
fonctionnement total = 1522, JIF-start = 0
fonctionnement total = 1523, JIF-start = 1
totale en cours d'exécution = 1, jif-start = 1
fonctionnement total = 0, jif-start = 0
fonctionnement total = 0, jif-start = 0
fonctionnement total = 0, jif-start = 0
fonctionnement total = 0, jif-start = 0
Cela n'a aucun sens pour moi. Quelque chose ne va pas avec mon code?
Je n'ai pas la source 2.4.14 à portée de main, mais ne relance-t-on pas tous les processus de la file d'attente d'exécution? –
non, seulement certains d'entre eux (environ 10) – ThP