Mesurons le temps d'attente de la file d'attente d'exécution du processus SCHED_FIFO lié au processeur démarré par Démarrer le processus en spécifiant la politique de planification sous Linux.
Je me suis référé à la page suivante pour obtenir le temps d'attente de la file d'attente d'exécution. https://yohei-a.hatenablog.jp/entry/20150806/1438869775
Le résultat de l'obtention de / proc / PID / schedstat du processus FIFO lié au processeur après 1 seconde. La deuxième colonne est le temps d'attente de la file d'attente d'exécution. Unité nanosecondes.
- time spent on the cpu
- time spent waiting on a runqueue
of timeslices run on this cpu
(De https://www.kernel.org/doc/html/latest/scheduler/sched-stats.html)
[ec2-user@ip-172-21-0-185 ~]$ sudo cat /proc/27629/schedstat ; sleep 1; sudo cat /proc/27629/schedstat
1585551572096 83397623426 1669
1586504089039 83449107507 1670
C'est environ 51 millisecondes. Puisque la tranche de temps est 1 dans la 3ème colonne, le changement de contexte ne se produit-il qu'une seule fois? Il semble, juste un processus en temps réel.
Vous trouverez ci-dessous le résultat de l'obtention de / proc / PID / schedstat du processus SCHED_OTHER lié au processeur qui s'exécutait en même temps après 1 seconde.
[ec2-user@ip-172-21-0-185 ~]$ sudo cat /proc/28585/schedstat ; sleep 1; sudo cat /proc/28585/schedstat
28229659566 570788962732 8601
28291651447 571746971282 8620
Environ 958 millisecondes. Vous pouvez voir que le processus SCHED_FIFO était dans la file d'attente d'exécution presque tout le temps qu'il était en cours d'exécution.
Lorsque j'ai tué le processus SCHED_OTHER et mesuré le temps d'attente de la file d'attente d'exécution de SCHED_FIFO sans autre processus gourmand en processeur, le résultat était d'environ 50 millisecondes. (Il n'y a pas de résultat de sortie de commande) Cela signifie que le processus SCHED_OTHER yes était en cours d'exécution uniquement lorsque le processus SCHED_FIFO yes n'utilisait pas la CPU.