Zum Inhalt springen

Datei kopieren: Puffergröße


Narf!

Empfohlene Beiträge

Hallo liebe Gemeinde,

da ja alles schnell gehen soll mal eine generelle Frage zum Dateikopieren ob lokal oder LAN oder INet:

Was wäre die optimale Puffergröße zum Lesen bzw. Schreiben?

Zur Zeit arbeite ich mit 4096 Byte pro Read/Write-Schleifendurchlauf bzw. lasse ich mir die Blockgröße des Zieldatenträgers geben, meistens 4k, im INet ca. 2k.

Ist es eigentlich notwendig bzw. sinnvoll sich die Blockgröße des Zieldatenträgers geben zu lassen, um eine Dateifragmentierung zu verhindern bzw. möglicht gering zu halten?

Hier im Forum habe ich gelesen, dass man auch 1% der Dateigröße als Puffergröße nehmen kann. Wäre das eine generelle Lösung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weis nicht genau was du machst und wofuer, aber ich denke mal ich kann folgendes fuer einen Großteil aller Anwendungen sagen:

Du solltest die Puffergroeße groeßer waehlen. 4K Bloecke zu lesen senkt die I/O- Leistung des Datentraegers dramatisch ab. Ab 64K oder 512K wenn moeglich erreichst du meist die hoechste Geschwindigkeit. Das sollte dynamisch gehandhabt werden. Bei kleinen Datenbloecken sollte auch mit kleinen Bloecken gearbeitet werden.

Mit 4K erhoehst du den Overhead zudem dramatisch. Teste es doch einfach mal aus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es geht darum Dateien (möglichst schnell) zu kopieren, sowohl lokal oder im LAN oder über Internet.

Wie ermittelt man die optimale Puffergröße?

Ich würde mit 64k*BufMulti(1) anfangen und wenn der Lese- und Schreibvorgang weniger als eine Sekunde dauert, den BufMulti um 1 erhöhen oder wenn es länger dauert wieder um 1 verringern. Kann man das so machen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiss nicht.

Hab sowas nie gemacht.

Eine Idee waere, erst einmal vor dem Kopieren Infos zu allen Dateieen zu suchen. Wenn du die Dateigroeße ermittelt hast kannst du dann ja schon mal die Puffergroeße festlegen. So lange wie es geht in etwa der Dateigroeße (4K >> 32K >> 64K >> 128K >> 512K oder feiner aufgeloest) und ab 512K machst du das Maximum. Du kannst auch noch gleich mehrere Dateieen einlesen und aus einem Puffer gleichzeitig schreiben. So kannst du je nach System den Overhead reduzieren. Das kannst du ja machen sobald du auf verschiedene Datentraeger kopierst. Ist es ein und der Selbe dann erst lesen und dann schreiben. Beim Verschieben auch letzte Vorgehensweise. Erst wenn die Datei geschrieben wurde die Quelldatei entfernen. Ich denke mal je flexibler du das mit den Datenbloecken loest umso besser kannst du den Kopiervorgang beschleunigen.

So wuerde ich das erstmal versuchsweise angehen. Ich denke mal da gibts noch wesentlich bessere Konzepte etc. Wie gesagt, hab sowas noch nie gemacht.

Bearbeitet von FfFCMAD
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...