Ich möchte wissen, warum Systeme beim Schreiben von Massendaten auf die Festplatte langsam werden.
Ich denke, damit das System langsam wird, sollte es ein Problem mit der CPU geben. Das Schreiben ist jedoch nur an die E / A gebunden.
Treten beim Schreiben von Daten Hardware-Interrupts auf? Wenn ja, kann es an den Interrupts liegen, dass die CPU immer den Kontext wechselt.
performance
io
kuafu
quelle
quelle
free
.$PATH
Einstellungen an, wenn Sie die Befehlsvervollständigung verwenden oder viele Rechtschreibfehler machen. Das Durchsuchen vieler Verzeichnisse, insbesondere solcher mit vielen Verzeichniseinträgen, kann einige Zeit in Anspruch nehmen, was sich bei knappen Ressourcen bemerkbar macht.Antworten:
Der Hauptgrund dafür ist das Übliche: E / A ist viel langsamer als CPU / RAM. Selbst wenn die Prozesse, die E / A-Vorgänge ausführen, DMA verwenden (wodurch die CPU entlastet wird), müssen sie wahrscheinlich irgendwann auf den Abschluss ihrer Anforderungen warten.
Im üblichsten Fall einer Festplatte fügen Sie einfach mehrere Anwendungen hinzu, die versuchen, auf Dateien zuzugreifen, die über das Laufwerk verteilt sind, und Sie können sich einen Kaffee (Tee, was auch immer) zubereiten. Mit SSDs wird die Situation besser, aber auch mit einer SSD, deren Durchsatz auf SATA in Hunderten von MB / s gemessen wird (im Vergleich zu zehn MB / s einer Spin-Plate-Festplatte) und deren Suchzeiten wirklich vernachlässigbar sind (im Vergleich zu Millisekunden für) eine Spin-Platte) - kann zu einem Engpass werden.
Das Problem, wie ich es verstehe, liegt nicht nur in den Datenübertragungen selbst, sondern auch im notwendigen Overhead - E / A wird vom Kernel gesteuert, aber nur selten ohne Benutzerbereich. Daher kann es viele Kontextwechsel geben, nur wenn die Anwendungen auf E / A warten und prüfen, ob etwas passiert (hängt natürlich von der Implementierung ab). Im Fall von Datenträgerübertragungen können durchaus mehrere Kernel-Threads um Ressourcen konkurrieren oder beschäftigt sein (was manchmal eine geeignete Strategie ist). Denken Sie daran, dass zum Kopieren von Daten von einer Partition auf eine andere ein modernes Dateisystem erforderlich ist, um: herauszufinden, wo sich die Quelldaten befinden, sie zu lesen, Speicherplatz im Zieldateisystem zuzuweisen, Metadaten zu schreiben, Daten zu schreiben und bis zum Ende zu wiederholen.
Und wenn Ihr System irgendwann mit dem Austausch beginnt (was normalerweise eine höhere Priorität als normale E / A hat), ist die Katastrophe abgeschlossen.
EDIT : Nach einem Gespräch mit einigen Linux-Kernel-Entwicklern wurde die Situation etwas klarer. Das Hauptproblem ist der E / A-Planer, der nicht genau weiß, welche E / A priorisiert werden sollen. Daher teilen alle Benutzereingaben und folgenden grafischen Ausgaben die Warteschlange mit der Festplatten- / Netzwerkaktivität. Infolgedessen kann es auch vorkommen, dass zwischengespeicherte Prozessdaten aus dem Seitencache (z. B. geladene Bibliotheken) weggeworfen werden, wenn festgestellt wird, dass der Seitencache auf anderen E / A effektiver verwendet werden kann. Das bedeutet natürlich, dass der Code, sobald er erneut ausgeführt werden muss, erneut abgerufen werden muss - von der Festplatte, die möglicherweise bereits stark ausgelastet ist.
Was den Linux-Kernel betrifft, wurden viele dieser Probleme kürzlich behoben (das Problem ist bekannt). Sagen wir also, 4.4.x oder 4.5.x sollten sich besser verhalten als früher, und Probleme sollten gemeldet werden (im Allgemeinen) Die Kernel-Leute sind glücklich, wenn jemand durch Fehlerberichterstattung und -tests helfen möchte.
quelle
awesome
scheint ein bisschen besser arbeiten alskwin
in diesem Sinne).xsession-errors
/ anzumeldenXorg.ₙ.log
? Wird die Protokollierung nicht einfach gepuffert, ohne die WM-Arbeit zu unterbrechen? Noch etwas? UPD: Ich habe mir gerade die/proc/AwesomePID/fd
- die einzige Datei angesehen, die meine WM geöffnet hat, istxsession-errors
. Alles andere ist nicht wirklich ein Datei - Steckdosen,/dev/null
,/proc/stat
...Ich habe die Erfahrung gemacht, dass E / A-Aktivitäten allein ein System nicht verlangsamen. Dieser Effekt tritt auf, wenn auch andere Aufgaben E / A benötigen. Die Situation wird wirklich schlimm, wenn das System ausgetauscht wird (und dazu gezwungen wird) und Sie dann eine hohe E / A-Last verursachen.
Sie können die Auswirkung schwerer E / A-Aufgaben durch beeinflussen
ionice
. Wenn Sie ihnenidle
Priorität einräumen, kann sich die Latenz für andere Aufgaben zwar erhöhen, jedoch nicht über das Minimum hinaus. Die E / A-Aufgabe wird sofort unterbrochen, wenn eine andere (nicht inaktive) Aufgabe E / A ausführen muss. Wenn Sie einen Scheduler verwenden, der diese Einstellungen unterstützt.Siehe Auswählen eines Linux-E / A-Schedulers
quelle