Wie kann ich den durch das Kopieren verwendeten Cache einschränken, damit noch Speicher für andere Caches verfügbar ist?

Grundsituation:

Ich kopiere einige NTFS-Festplatten in openSuSE. Jeder ist 2 TB. Wenn ich das tue, läuft das System langsam.

Meine Vermutungen:

Ich glaube, es liegt wahrscheinlich am Caching. Linux beschließt, nützlichen Cache (z. B. kde4 bloat, Virtual Machine-Festplatten, LibreOffice-Binärdateien, Thunderbird-Binärdateien usw.) zu verwerfen und stattdessen den gesamten verfügbaren Speicher (insgesamt 24 GB) mit Daten von den Kopierfestplatten zu füllen, die nur einmal gelesen werden. dann geschrieben und nie wieder benutzt. Jedes Mal, wenn ich diese Apps (oder kde4) verwende, muss die Festplatte erneut gelesen werden, und das erneute Lesen des Aufblähens von der Festplatte lässt die Dinge einfrieren.

Aufgrund der Tatsache, dass der Cache weg ist und diese überfüllten Anwendungen viel Cache benötigen, wird das System schrecklich langsam.

Da es sich um USB handelt, stellen die Festplatte und der Festplattencontroller nicht den Engpass dar, sodass die Verwendung von ionice nicht zu einer Beschleunigung führt.

Ich glaube, es ist der Cache und nicht nur das Motherboard, das zu langsam läuft, denn wenn ich den Kopiervorgang stoppe, läuft es noch eine Weile unruhig, bis alles wiederhergestellt ist. Und wenn ich das Kopieren erneut starte, dauert es eine Minute, bis es wieder abgehackt ist. Aber ich kann es auch auf ungefähr 40 MB / s begrenzen und es läuft wieder schneller (nicht weil die richtigen Dinge zwischengespeichert wurden, sondern weil die Motherboard-Busse viel zusätzliche Bandbreite für die Systemfestplatten haben). Ich kann einen Leistungsverlust in Kauf nehmen, wenn die E / A-Kapazität meines Motherboards vollständig verbraucht ist (was zu 100% ausgenutzt ist, was bedeutet, dass keine Energie verschwendet wird, was mich glücklich macht), aber ich kann nicht akzeptieren, dass dieser Caching-Mechanismus bei dieser speziellen Verwendung so schrecklich funktioniert Fall.

<code># free
             total       used       free     shared    buffers     cached
Mem:      24731556   24531876     199680          0    8834056   12998916
-/+ buffers/cache:    2698904   22032652
Swap:      4194300      24764    4169536
</code>

Ich habe das auch unter Ubuntu ausprobiert, wodurch das gesamte System hängen bleibt. ;)

Und um das zu verdeutlichen, frage ich nicht, wie man Speicher für das "System" freigibt, sondern für "Cache". Ich weiß, dass der Cache-Speicher bei Bedarf automatisch an das System zurückgegeben wird, aber mein Problem ist, dass er nicht für das Zwischenspeichern bestimmter Dinge reserviert ist.

Frage:

Gibt es eine Möglichkeit, diese Kopiervorgänge anzuweisen, die Speichernutzung zu begrenzen, damit einige wichtige Dinge im Cache bleiben, und daher sind etwaige Verlangsamungen auf die normale Datenträgernutzung zurückzuführen und führen nicht zum erneuten Lesen derselben häufig verwendeten Dateien? Gibt es beispielsweise eine Einstellung für den maximalen Arbeitsspeicher pro Prozess / Benutzer / Dateisystem, der als Cache / Puffer verwendet werden darf?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage