Vielen Dank auch an @SolderGirl für den Link zu PPERA. Ich hatte zwar schon früher mal da ´reingeschaut, aber erst jetzt ist mir aufgefallen, daß PPERA einen Zusammenhang der Clusterung mit der TransferRate sieht. Hat er Recht?
Die Clustergröße, oder allgemeiner gesagt die Blockgröße eines Transfers hat beträchtlichen Einfluss. Das ist mir schon aufgefallen als ich einen kurzen Test geschrieben habe um die Geschwindigkeit meiner RAM-Disk im Pofo zu messen.
Ich denke das hängt vor allem mit den internen Strukturen zusammen wie das Betriebssystem das jeweilige Dateisystem implementiert hat.
Naive, ungeprüfte Erklärung:
1. Jeder Lese-/Schreibzyklus hat etwas "Verschnitt". Daher geht die effektive Datenrate bei sehr kleinen Blockgrößen zurück.
2. Die Implementierung des Dateisystems sieht irgendwelche Puffer für Datenstrukturen vor. Der RAM-Cache des Systems ist in einer bestimmten Art organisiert. Daraus ergibt sich eine maximale Größe. Wird diese überschritten, dann werden die Zugriffe ebenfalls ineffizient und die Datenrate bricht ein.
Ergo: Man muß experimentieren und die ideale Blockgröße selbst herausfinden.
Das gleiche Phänomen habe ich erlebt als ich mal in meinem Rechner ein RAID-1 Array aus Festplatten eingebaut hatte. Je nach Stripe-Size (Blockgröße der Schachtelung) war die Datenrate fast doppelt so hoch wie bei einer einzelnen Platte, oder auch niedriger als bei einer einzelnen. Hat mich eine ganze Weile gekostet das Array jedes mal mit einer anderen Stripe-Size neu zu erstellen, neu zu formatieren, Geschwindigkeit zu testen und wieder neu formatieren (repeat until done...)
Ich denke das es auch beim Atari irgendwo eine optimale Clustergröße gibt. Darunter spart man Speicherplatz wegen "Verschnitt", verliert aber Geschwindigkeit. Darüber wird es einfach nurnoch ineffizient, wenn das OS einen Cluster nichtmehr "am Stück" verarbeiten kann.
Und neben der Datenrate gibt es ja noch die Latenz. Also die Zeit von der Anfrage des Betriebssystems an den Treiber einen Sektor von der Platte zu lesen, bis diese Daten wirklich verfügbar sind. Diese wird natürlich mit zunehmender Blockgröße ebenfalls größer.
Also:
1. Bei einem Laufwerk das viele kleine Dateien enthalten soll und diese schnell angesprochen werden sollen, ist eine kleinere Blockgröße sinnvoll, auch wenn dadurch die Netto-Datenrate zurückgeht. Beispiele dafür wäre ein Laufwerk mit Sourcen auf dem man kompilieren will.
2. Bei einem Laufwerk mit größeren Dateien, die eher einzeln angesprochen werden, kann die Blockgröße deutlich größer sein. Der "Verschnitt" durch die FAT fällt bei großen Dateien (>100kB) nicht mehr so stark ins Gewicht, dafür wird hier beim kopieren die Netto-Datenrate interessant.
Als Beispiel aus der Atari-Welt fallen mir hier Disketten-Images ein, oder auch Spiele die ihre Daten nicht in unzähligen Dateien verteilt haben.