2016-06-30 38 views
1

Unsere Anwendung braucht Ewigkeiten, wenn Objekte & Ziel-DLL auf einem Netzwerklaufwerk liegen: Ich habe mich auf die Erstellung der DLL konzentriert, da es 400 Sekunden dauert.zunehmende Schreibgeschwindigkeit durch CIFS beim Kompilieren/Verknüpfen von gcc/ld unter Windows

Auf einem lokalen Laufwerk beträgt die DLL-Erstellung etwa 60 Sekunden. Beide Laufwerke teilen die gleichen Eigenschaften, unser Netzwerk ist sehr schnell.

Ich habe versucht, große Dateien zu kopieren/zu erstellen, die das Netzwerklaufwerk als Ziel verwenden, und gute Ergebnisse erzielt, wenn die Schreibgröße groß genug war. Also habe ich mit ProcessMonitor untersucht, und festgestellt, dass die ld eine Menge von WriteFile Anrufe mit 2 Bytes verwendet, und größte write-at-once-Größe war um 200.

Also ich vermute, dass CIFS reagiert sehr schlecht auf a Reihe von ungepufferten kleinen Schreibvorgänge, während das lokale Laufwerk nicht kümmert.

Ich könnte meinen gcc-Compiler-basierten Anbieter bitten, seine write Aufrufe von einigen gepufferten fwrite zu konvertieren, aber gibt es nicht etwas, das wir auf dem CIFS-Schreib-Cache-Parameter fehlen?

Ich meine: Wenn es einen solchen Cache auf der CIFS-Seite gäbe, würden größere Blöcke geschrieben werden und die Performance wäre nahe an einer Dateikopie/-erstellung. Gibt es eine Möglichkeit, die Cachegröße zu drucken/zu ändern? (Sorry für die Noob CIFS Frage, aber Ich habe Sachen gegoogelt wie „SMB CIFS Fenster schreiben Cache-Größe“ und fand nur Sachen für Linux.

+0

Anwendungsebene Pufferung über 'fwrite()' wahrscheinlich sind, wird nicht Hilfe viel wenn überhaupt - der Client-Kernel puffert normalerweise IO. Dies könnte helfen: https://msdn.microsoft.com/en-us/library/cc558565(v=bts.10).aspx Schauen Sie sich insbesondere 'SizeReqBuffer' an. Weitere Informationen zu SizeReqBuffer finden Sie unter https://blogs.msdn.microsoft.com/openspecification/2009/04/10/smb-maximum-transmit-size-and-performance-tuning/. –

+0

@Andrew Henle: Ich hatte den SizeReqBuffer Registrierungsschlüssel ohne Glück versucht. Muss ich nach der Einstellung neu starten? –

Antwort

1

Wenn möglich, die iSCSI verwenden Sie die beste Leistung , nachdem Sie haben muss wissen, dass die CIFS nicht für die Kompilierung oder andere kleine Dateien ist.

die Lösungen auf lokalen Festplatten oder SAN effiziente

dok