Wenn ich Dateien auf und von USB-Geräten (Kamera, Festplatte, Speicherkarte) kopiere, wird mein System sehr langsam. Wenn ich beispielsweise ein Fenster schließen möchte, bewege ich die Maus, aber es dauert mindestens 2 Sekunden, bis sich der Mauszeiger bewegt. Wenn ich endlich den Cursor über das x bewege und darauf klicke, passiert 10+ Sekunden lang nichts. Ich habe dies mit deaktivierten Desktop-Effekten versucht, aber das Problem besteht weiterhin.
Software: Linux Mint 9 KDE Hardware:
- Asus SLI Motherboard
- NVidia 6600 GPU
- 2 GB RAM
- 2 GB Swap
- AMD Athlox X2 @ 3800+
Für mich sollte diese Hardware keine Probleme beim Ausführen dieser Software haben und erst, wenn ich Dateien über USB kopiere. Wo soll ich anfangen, dies herauszufinden? Ich denke, der Grafiktreiber könnte Teil des Problems sein, aber ich weiß es nicht genau.
quelle
Antworten:
Es scheint ein Problem mit riesigen Seiten in der Linux-Speicherverwaltung zu geben . Es kommt selten vor, klingt aber so, als hätten Sie es beobachtet.
Ursache
Dies ist meine stark vereinfachte Darstellung dessen, was laut Artikel passiert.
Wenn Sie Pech haben, bleibt ein Prozess in dem Moment hängen, in dem er einen Speicherzugriff ausgibt. Wenn transparente große Seiten aktiviert sind, kann ein Speicherzugriff eine synchrone Komprimierung (Defragmentierung des Hauptspeichers) auslösen, was bedeutet, dass der Speicherzugriff nicht vor der Komprimierung beendet wird. Das an sich ist keine schlechte Sache. Wenn jedoch gleichzeitig ein Rückschreiben (z. B. gepufferter Daten auf USB) stattfindet, wird die Komprimierung wahrscheinlich zum Stillstand kommen und darauf warten, dass das Zurückschreiben abgeschlossen ist.
Daher kann jeder Prozess darauf warten, dass ein langsames Gerät das Schreiben gepufferter Daten beendet.
Heilen
Ein Upgrade des Hauptspeichers wie beim OP kann das Problem verzögern. Aber für diejenigen, die dies nicht für eine Option halten, gibt es zwei offensichtliche Problemumgehungen. In beiden Fällen wird der Kernel neu kompiliert:
quelle
Dies klingt ähnlich wie meine Frage hier (wo eine Antwort mich auf diese Frage hinwies):
/programming/10105203/how-can-i-limit-the-cache-used-by-copying-so-there-is-still-memory-available-for
Aber die Theorie ist völlig anders und die Lösung, die ich verwendet habe, hat nichts mit Ihrer zu tun, funktioniert aber perfekt.
Ich habe rsync verwendet, also musste ich nur die Option --drop-cache verwenden. (was die Kopie als Nebeneffekt etwas langsamer macht)
quelle
Der einzige Trick, den ich gefunden habe, der wirklich funktioniert: Gnome, Nautilus kopiert Dateien auf USB-Stopps bei 100% oder in der Nähe
Wenn Sie einige Power-User-Tricks ausprobieren möchten, können Sie die Größe des von Linux verwendeten Puffers reduzieren, indem Sie / proc / sys / vm / dirty_bytes auf etwa 15728640 (15 MB) setzen. Dies bedeutet, dass die Anwendung nicht mehr als 15 MB vor ihrem tatsächlichen Fortschritt erhalten kann.
Ein Nebeneffekt ist, dass Ihr Computer mit dieser Einstellung möglicherweise einen geringeren Durchsatz beim Schreiben von Daten hat. Insgesamt finde ich es jedoch hilfreich zu sehen, dass ein Programm lange läuft, während es viele Daten schreibt, im Gegensatz zu der Verwirrung, a zu haben Das Programm scheint mit seiner Arbeit fertig zu sein, aber das System bleibt stark zurück, da der Kernel die eigentliche Arbeit erledigt. Wenn Sie dirty_bytes auf einen relativ kleinen Wert einstellen, kann dies auch dazu beitragen, dass Ihr System nicht mehr reagiert, wenn Sie nur noch wenig freien Speicher haben und ein Programm ausführen, das plötzlich viele Daten schreibt.
Aber nicht zu klein einstellen! Ich verwende 15 MB als grobe Schätzung, dass der Kernel den Puffer in 1/4 Sekunde oder weniger auf eine normale Festplatte leeren kann. Es hält mein System davon ab, sich "träge" zu fühlen.
quelle