Narf! Geschrieben 26. August 2011 Geschrieben 26. August 2011 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? Zitieren
FfFCMAD Geschrieben 26. August 2011 Geschrieben 26. August 2011 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. Zitieren
Narf! Geschrieben 1. September 2011 Autor Geschrieben 1. September 2011 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? Zitieren
FfFCMAD Geschrieben 1. September 2011 Geschrieben 1. September 2011 (bearbeitet) 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 1. September 2011 von FfFCMAD Zitieren
Empfohlene Beiträge
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.