Laut G E D U L D Dealer kann die Geschwindigkeit eines Dateitransfers von einem Mac auf Samba (je nachdem auch andere Shares) erhöht werden, indem folgende Mac OS X Einstellung vorgenommen wird:

sysctl -w net.inet.tcp.delayed_ack=0

Default:
sysctl -w net.inet.tcp.delayed_ack=3

Damit wird dem Betriebssystem resp. dem TCP/IP Stack mitgeteilt, dass die ACK Pakete sofort gesendet werden müssen. Ein TCP/IP Paket beinhaltet Informationen – die Window Size – wieviel Bytes noch gesendet werden können, bis zwingend ein ACK verlangt wird. Ist die Window Size == 0, darf der Sender keine Daten mehr senden. Erst muss der Empfänger ein ACK schicken, in dem wieder ein Wert > 0 für die Window Size steht. Da das Window Size Feld nur aus 16 Bit besteht und dieser Wert (2^16 -> 0 bis 65535) für die heutigen schnellen Leitungen viel zu klein ist, kommt TCP Window Scaling (wird beim TCP Handshake ausgehandelt) zum Einsatz. Damit wird die Window Size mit einem Faktor multipliziert.

Mac OS X Tiger benutzte noch nicht optimale Werte. Ab Leopard sollten diese Werte eigenlich in Ordnung sein.

Vermutlich habe ich nun viel zu viel Verwirrung gestiftet :). Vielleicht schreibe ich mal einen ausführlicheren Artikel warum diese Window Size relevant ist und wie man das messen kann, ob man davon betroffen ist.

« »