Ich habe gerade dot
ein Programm zum Zeichnen gerichteter Graphen mit einer Eingabedatei ausgeführt, die so groß war, dass sie nicht in angemessener Zeit gerendert werden konnte.
Mein ganzes System fror ein. Ich konnte es kaum auf eine Textkonsole machen mit Ctrl+ Alt+ F1zu töten dot
, aber es dauerte einige Minuten.
Warum erlaubt das System so etwas? Warum gibt es ein unkritisches Programm wie dot
99% des Systems und verwendet die verbleibenden 1%, um ansprechbar zu bleiben?
scheduling
Christoph Wurm
quelle
quelle
Antworten:
Auf diese Weise arbeiten GNU / Linux und andere Multitasking-Systeme, sie teilen den Prozessor unter den laufenden Prozessen,
dot
haben nicht 99%, sondern 100% in 99% der Zeit. Jeder Prozess beherrscht den Prozessor für einen bestimmten Zeitraum.Dies wird von Schedulern erledigt (Linux hat mehrere Scheduler, einige verwenden nur die übliche Strategie, andere versuchen, den Benutzeroberflächen mehr Zeit zu geben und so weiter).
In Ihrem Fall war das Problem - wahrscheinlich -, dass
dot
nicht viel Prozessorzeit, sondern viel Speicher benötigt wurde. Und wenn ein Programm zu viel Speicher benötigt, kommt es zu Thrashing , was genau ein Prozess ist, der das System zum Stillstand bringt, nicht weildot
es viel tut, sondern weil der Kernel Speicherseiten zwischen den Festplatten hin und her verschieben muss (Swap-Partition). und den Systemspeicher.Selbst wenn
dot
nur 99% der CPU-Zeit in Anspruch genommen würden, wäre der Wechsel zu einem Textterminal wahrscheinlich fast unmittelbar. Der Kernel muss jedochdot
Daten aus dem Arbeitsspeicher verschieben, damit die SchlüsselX
wieder angezeigt werdenX
können Wenn Sie nur auf das Textterminal drücken und zum Textterminal wechseln, muss der KernelX
ausdot
dem noch laufenden Speicher heraus und dann auchdot
aus dem Speicher heraus, um die Textterminalprozesse (möglicherweise nurlogin
?) zurück in den Speicher zu verschieben. (Wenn dies chaotisch aussieht, liegt es nicht nur daran, dass das Beispiel chaotisch ist - die Realität ist dies chaotisch.)Ein Beispiel: Wenn Sie sich im Text-Terminal anmelden, können Sie möglicherweise nur die Tasten drücken und die Rücktaste drücken, und dies geschieht in Echtzeit. Wenn Sie jedoch nur ein kleines Tool ausführen
ps
, kommt es zum "Einfrieren" "für eine Weile, weil es Speicher zum Laden freigeben mussps
(und es muss auch in der Festplatten-E / A-Warteschlange warten, die häufig zum Verschieben von Daten in und aus dem Speicher verwendet wird, bis es in der Lage ist,ps
vom Dateisystem anzufordern ) .quelle