Wie man Linux-GUI "nutzbar", wenn viele Datenträger-Aktivität ist passiert
Wenn ich starten Sie das kopieren einer großen Datei Baum von einer position in eine andere oder wenn einige andere Prozess beginnt dabei viele Datenträger-Aktivität, die app im Vordergrund (GUI) verlangsamt Weg nach unten. Zum Beispiel, nehmen Sie eine 2-GB-Datei-Baum mit 100k Dateien in es. Öffnen Sie eine Konsole und machen cp -r bigtree bigtree2. Dann wechseln Sie zu firefox und beginnen mit dem surfen. Firefox ist fast unbrauchbar. Auch wenn ich firefox-schöne Ebene, um wirklich hohe Priorität (-20), es ist immer noch super langsam mit großen Verzögerungen.
Ich erinnere mich, vor einigen Jahren, als ich arbeitete auf einer Solaris-box, das system verhielt sich viel besser, die in ähnlichen Situationen.
Meine HD ist mit DMA, PIO nicht. Es ist SATA. Nicht montiert mit der die atime Flagge.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen ionice-ing oder Nizza-ing der Kopiervorgang. Das Problem wird durch die Tatsache, dass IO bekommt die gleiche Priorität wie die GUI die für einen desktop -, wirkt sich auf wahrgenommene Reaktionsfähigkeit.
Gibt es eine Ubuntu Brainstorming über diese derzeit.
Linux hatte lange Zeit ein problem mit Programmen, die hog alle das system "dirty" cache-Speicher. Was passiert ist, dass der Kopiervorgang ist die Befüllung der write-cache mit der Datei die Daten, die Sie kopieren, und es tut es sehr schnell. Also bei Firefox kommt und muss schreiben, muss es erstmal warten mit schmutzigen Puffer oder eine Festplatte verfügbar queue schreiben-slot. Während der Wartezeit ist es im Wettbewerb mit den Kopiervorgang und der kernel ist pdflush-thread, der verschiebt die Daten von dirty buffer auf die Festplatte schreiben queue.
Firefox hat noch ein weiteres problem in diesem Szenario. Es nutzt SQLite zum speichern von Lesezeichen, Verlauf und andere Dinge. SQLite ist eine ACID-konforme Datenbank, und es verwendet eine Transaktions-system mit Festplatte schreibt auf den Datenträger geleert. Also es wird nicht nur darauf warten müssen, Pufferspeicher, Sie müssen warten, bis die disk queue, die ist voll von kopierten Datei zu löschen, bevor Sie es bestätigen das erfolgreiche schreiben.
Es wurde eine viel von Optimierungen durchgeführt, um die Linux-disk queuing-und buffering-system. Änderungen gibt es in fast jedem kernel-release. Versuchen Sie eine der neueren Versionen. Sie können auch versuchen tweaking die sysctl-Werte. Ich so in der Art wie diese:
Können Sie auch versuchen tweaking die Anzahl der Schlitze in der Platte Warteschlange. Dieser Wert ist in
/sys/block/sda/queue/nr_requests
. Sie müssen Ersatzsda
mit dem, was Ihr Laufwerk wirklich ist. Mehr slots bedeutet mehr Chancen zum Zusammenführen von E /a-Anforderungen und der CFQ IO scheduler können tun, einen besseren job mit Prioritäten. Weniger slots bedeutet in der Regel kürzer warten, um auf die Festplatte geschrieben, die für synchrone IO wie SQLite Transaktionen. Weniger slots bedeutet auch eine kürzere Wartezeit zu Lesen bekommen IO in der disk-queue, wenn ein write-heavy-Prozess vollständig stopft sich die Warteschlange bei write IO.Bist du nicht der erste zu bemerken das problem. Ehemaligen kernel-Entwickler [Con Kolivas] (http://en.wikipedia.org/wiki/Con_Kolivas) gefunden, dass viele Unternehmen bezahlen Verbesserung der linux-server-Leistung auf Kosten der desktop-Leistung. Con hatte eine beeindruckende Satz von patches für die desktop-besser reagieren. Leider gab es eine Art von code-Krieg und schließlich Con ausgestiegen.
Ich würde gerne wissen, wie petition der Linux-kernel-Entwickler für eine bessere desktop-performance. In der Zwischenzeit, wenn Sie bereit sind zu laufen, kernel 2.6.22, können Sie laufen mit der
-ck
patch-set.Stellen Sie sicher, dass DMA aktiviert ist auf alle Laufwerke, die Sie unterstützen. Je nach distribution kann dies nicht der Standard sein. Lesen
man hdparm
, und schauen in Ihre Systemeinit
Mechanismus.