Hallo zusammen,
ich untersuche aktuell ein Storage-seitiges Performance-Problem in unserer Organisation.
Das Problem hat nicht direkt etwas mit Powershell zu tun, aber ich möchte hier starten.
Wir haben eine spezielle Software (Hauptanwendung für einen Standort), welche immer wieder Performance Probleme hat.
Jeder Benutzer hat ein Konfigurationsfile (ini) mit ca. 1000 Zeilen. Das Konfigurationsfile liegt zentral am Home-Laufwerk des jew. Users. Die Home-Laufwerke liegen auf der Storage (3rd Party).
Ich habe festgestellt, dass wenn das Konfigurationsfile auf der lokalen Disk des Endgerätes liegt, sich die Performance um ca. 50% verbessert. Eine ähnliche Verbesserung erhalte ich, wenn das Konfigurationsfile auf einem Microsoft Windows File-Share liegt.
Ich habe das auch soweit es mir möglich ist mit WireShark getracet und erhebliche Unterschiede festgestellt.
Die Storage ist schon lange Hauptverdächtig für viele Probleme. Das Storage-Team hat bis jetzt nichts auf die Reihe gebracht und ich möchte eine handfeste Analyse erstellen und dann zum Storage-Team werfen.
Im Moment versuche ich mit Powershell das Szenario zu reproduzieren. Ich schreibe eine Text-Datei mit xxxx-Zeilen via "Out-File" auf diverse Ziele. Das Ergebnis sieht folgendermaßen aus:
Es wurde eine Text-Datei mit den folgenden Eigenschaften geschrieben: Dateigröße: 0,30 MB Zeilenzahl: 13248 Die folgenden Zeiten wurden gemessen ... Write-Time Lokal: 0,8997679 Sekunden (C:\...) Write-Time Storage: 17,9524958 Sekunden (\\Domain.local\...) Write-Time MS_Share: 16,8436178 Sekunden (\\Domain.local\...) Das Schreiben auf die Storage ist im Vergleich um ca. 1895 Prozent langsamer!
Was mich dabei stört ist, dass das Schreiben auf einen Microsoft-Share auch extrem langsam ist.
Die Endgeräte laufen auf Windows 7. (SMB2)
Auf einem Endgerät mit Windows 10 (SMB3) ist die Performance beim Schreiben auf einen Netzwerk-Share nahezu gleich performant wie beim Schreiben auf die lokale Disk.
Die Performance unter Windows 7 verbessert sich auch nicht, wenn ich die Settings der üblichen Verdächtigen ändere. (SMB2 deaktivieren, Offloading deaktivieren, Chimney deaktivieren, IPv6 deaktiveren, ...)
Bevor ich hier weiter mache, wollte ich fragen, ob es aus Programmiertechnischer Sicht eine logische Erklärung gibt, dass das Schreiben einer Textdatei auf eine Netzwerkfreigabe so extrem langsam ist?
Habt Ihr auch via SMB2 beim Schreiben auf einen Netzwerkshare via Out-File ähnlich schlechte Performance?
Via WireShark denke ich erkennen zu können, dass hier Zeilenweise geschrieben wird und nicht alles am Stück.
Vielen Dank im Voraus