Fragen? Antworten! Siehe auch: Alternativlos
SMB unterscheidet sich von HTTP dadurch, dass man große Dateien in vielen Blöcken zieht, d.h. ein Request pro 64k (oder gar nur 16k oder noch weniger), nicht pro Datei. Das Verhalten sieht im strace so aus, dass der Server die Daten rausschreibt, und dann 200 ms warten muss, bis der nächste Request reinkommt. Im Sniffer sieht man, dass der Client immer 200 ms warten muss, bis die Antworten reinkommen. Ich benutze unter Linux den TCP_CORK setsockopt und schalte auch Nagle aus. Nagle ist der übliche Grund für solche Pausen, und wenn ich am Ende der Antwort TCP_CORK auf 0 setze, müssten laut man tcp die Daten auch sofort rausgehen. Tun sie aber nicht.
Interessanterweise ist das Problem nur auf localhost, über Ethernet kriege ich fetten Durchsatz.
Mhhhh. Das ist das Problem, wenn man immer so esoterische Performance-Tweak-APIs benutzt, das funktioniert dann halt manchmal nicht.
Der interessanteste Teil daran ist, dass das bei mir zuhause auf dem Desktop funktioniert, selbe Kernelversion, ebenfalls AMD64.