Je viens d'exécuter dot
(un programme pour dessiner des graphiques dirigés) avec un fichier d'entrée qui était si gros qu'il ne pouvait pas être rendu dans un délai raisonnable.
Tout mon système s'est figé. Je pouvais à peine atteindre une console texte avec Ctrl+ Alt+ F1pour tuer dot
, mais cela a pris plusieurs minutes.
Pourquoi le système permet-il quelque chose comme ça? Pourquoi donne-t-il un programme non critique tel que dot
99% du système et utilise-t-il les 1% restants pour rester réactif?
scheduling
Christoph Wurm
la source
la source
Réponses:
C'est ainsi que GNU / Linux et d'autres systèmes multitâches fonctionnent, ils partagent le processeur entre les processus en cours d'exécution,
dot
n'auront pas 99%, mais 100% pendant 99% du temps. Chaque processus domine le processeur pendant une certaine période de temps.Ceci est géré par les planificateurs (Linux a plusieurs planificateurs, certains utilisent simplement la stratégie habituelle, certains essaient de donner plus de temps aux interfaces utilisateur, etc.).
Maintenant, dans votre cas, le problème était - probablement - qui
dot
ne prenait pas beaucoup de temps processeur, mais beaucoup de mémoire. Et quand un programme utilise trop de mémoire, il y a thrashing , qui est exactement un processus qui fait figer le système, non pas parce qu'il endot
fait beaucoup, mais parce que le noyau doit déplacer les pages mémoire entre le disque (partition de swap) et la mémoire système.Même si cela
dot
ne prenait que 99% du temps CPU, il est probable que le passage à un terminal texte soit presque immédiat, ce qui se passe est que le noyau doit déplacer desdot
éléments hors de la mémoire afin qu'il puisse les remettreX
en mémoire afin deX
pouvoir voir les clés vous venez de frapper et de vous déplacer vers le terminal texte, puis le noyau doitX
sortir de la mémoire pourdot
laquelle il est toujours en cours d'exécution, puisdot
sortir pour déplacer les processus du terminal texte (peut-être justelogin
?) en mémoire. (Si ce semble désordonnée, ce n'est pas seulement parce que l'exemple est en désordre - la réalité est ce . Désordre)Un exemple est que si vous vous connectez au terminal texte, vous pourrez peut-être simplement appuyer sur des touches, appuyer sur la touche de retour arrière, et cela se fera avec plaisir en temps réel, mais si vous faites quelque chose d'aussi simple que d'exécuter un petit outil comme
ps
, il "gèlera" "pendant un certain temps car il doit libérer de la mémoire pour se chargerps
(et il doit également attendre dans la file d'attente d'E / S disque, qui est largement utilisée pour déplacer des données vers et depuis la mémoire, jusqu'à ce qu'il soit en mesure de demanderps
au système de fichiers) .la source