Erklärungsversuch:
Alle Dateioperationen werden über 'Buffer' (dt. Pufferspeicher im RAM) abgewickelt. Je kleiner die Datei und je größer das RAM, desto früher wird dem Kopierprogramm eine erfolgreiche Kopie signalisiert (auch wenn die Daten erst im Buffer, aber noch nicht auf der Platte sind).
Je mehr freier RAM, desto weniger werden die Buffer-Handler (Routinen im Linux-Kernel), die ja bei einem Buffer-Overflow aktiv werden müssen, verwendet. So ein Buffer-Handler muss ja eine Bewertung vornehmen, welche Pages (Speicher-Seiten) verworfen bzw. ins Swap-Space ausgelagert werden müssen, weil sie eventuelle noch für eine Dateioperation anstehen.
Damit das Ganze jetzt hübsch kompliziert wird, noch ein paar Schlagwort:
- im Programm wird ein Buffer-Handler für Dateien verwendet (lesen eine Datenblocks)
- im File-System-Management wird ein Buffer-Handler für Dateien, Verzeichnisse, freie Blöcke (Blocknummern) und freien Inodes (Dateistruktur) verwendet (das ist das Teil, was ich ober meinte). Dieser subbelt sich so voll, wie noch gerade eben RAM frei ist
- im RAID-Treiber (und auch bei allen nicht-RAID-Block-Devices) wird ein I/O-Buffer für alle Gerätezugriffe geführt
- und alle vom RAM bis zur Platte verwendeten Kommunikationsprotokolle führen Cache-Memories (Buffer) ... SCSI/SATA und Disk
Es ist allerdings nicht so, dass man mit viel mehr RAM auch sofort die besten Resultate erzielt, denn die Daten im RAM müssen auch zeitgleich verarbeitet werden können und wenn da die Netzwerk- oder Platten-Controller-Ansteuerung (die ja alle im Prozessorchip bei den DSen integriert sind), nicht schnell genug sind, dann warten die meisten Komponenten aufeinander und verbringen Zeit mit Nichtstun.
Itari