Registriert seit: 16. Aug 2007
Ort: Hamburg
19 Beiträge
Delphi 12 Athens
|
AW: Probleme bei CreateFile mit FILE_FLAG_WRITE_THROUGH
Gestern, 13:53
@himitsu
"schneller" war vielleicht falsch ausgedrückt. Die Support-Leute haben ab und zu Fälle aufzuklären, bei denen irgendein Buchungsvorgang beim Kunden ein Problem hatte. Meist waren dann viele User gleichzeitig im System und die Szenarien können sehr komplex sein. Der Schreibzugriff per WRITE-THROUGH war tatsächlich ein Versuchsballon; ich hätte allerdings keine Probleme damit erwartet. NO-BUFFERING wollte ich aus den von Dir beschriebenen Gründen nicht verwenden.
Typische Installationen unserer Anwender sind entweder über RDS auf Windows-Server oder per Windows-Client/Server oder auch gemischt. Die Server sind inzwischen meist so ausgeführt, dass virtuelle Server auf einer physikalischen Maschine laufen. Und vermutlich hat da jeder Server sein eigenes Filecaching und der Client nochmal. Damit kann und will ich aber auch gar nichts zu tun haben und unsere Vorgabe ist nur, dass es sich um Windows-Server handeln muss. Es gibt natürlich auch User, die ein NAS verwenden, aber dafür geben wir keine Funktions-Garantie.
Den ERROR_CANT_WAIT-Fehler, den ich bei Verwendung von FILE_FLAG_WRITE_THROUGH bekomme, tritt in einer Windows zu Windows-Umgebung auf und bei mir nur bei einem Stresstest. Schon bei einer Wiederholung des Schreivorgangs nach diesem Fehler kommt der Fehler nicht mehr. Dokumentiert ist das leider nirgends, zumindest hab ich nichts gefunden. Ich habe übrigens auch überprüft, dass der Schreibvorgang bei diesem tatsächlich nicht durchgeführt wurde.
Wo übrigens das Ändern an der Bufferung tatsächlich hilfreich ist, ist beim sequentiellen Verarbeiten großer Dateien mit FILE_FLAG_SEQUENTIAL_SCAN. Und soweit ich feststellen konnte, bringt es zumindest keinen Nachteil bei kleinen Dateien.
|