Mac-OS-X-Tuning
Seit kurzem habe ich einen Power Macintosh mit Mac OS X in meinem lokalen Netz, welches über einen DSL-Router mit dem Internet verbunden ist. Dabei fällt mir auf, dass der Mac beim Surfen langsamer als mein PC ist. Dabei ist er nicht schlechter ausgestattet. Wie kommt das?
- Andreas Beier
Seit kurzem habe ich einen Power Macintosh mit Mac OS X in meinem lokalen Netz, welches über einen DSL-Router mit dem Internet verbunden ist. Dabei fällt mir auf, dass der Mac beim Surfen langsamer als mein PC ist. Dabei ist er nicht schlechter ausgestattet. Wie kommt das?
Die konservativen Netzwerkeinstellungen von Mac OS X holen bei einer relativ schnellen Netzwerkanbindung nicht das Optimum aus einem Rechner heraus. Die Geschwindigkeit lässt sich spürbar verbessern, indem man etwa die TCP-Puffer vergrößert. Mit sysctl net.inet im Terminal können Sie die aktuellen Einstellungen überprüfen. In der langen Ausgabe tauchen auch die Werte
net.inet.tcp.sendspace: 32768
net.inet.tcp.recvspace: 32768
net.inet.udp.recvspace: 42080
auf. Standardmäßig reserviert das System für die Sende- (net.inet.tcp.sendspace) und Empfangs-TCP-Puffer (net.inet.tcp.recvspace) jeweils nur 32 KByte, der Empfangspuffer für UDP-Transfers (net.inet.udp.recvspace) ist 40 KByte groß.
Ăśber
sudo sysctl -w net.inet.tcp.sendspace=wert
sudo sysctl -w net.inet.tcp.recvspace=wert
sudo sysctl -w net.inet.udp.recvspace=wert
können Sie die Puffergrößen selbst einstellen. Der Wert für tcp.sendspace respektive recvspace sollte ein Vielfaches von 16384 sein, etwa 65536. Der Wert für udp.recvspace sollte 8192 Byte größer als der tcp.recvspace-Wert sein.
Zusätzliche Geschwindigkeit kann man mit
sysctl -w net.inet.tcp.delayed_ack=0
sysctl -w kern.ipc.maxsockbuf=524288
herausholen.
Mac OS X macht diese Änderungen leider bei jedem Neustart rückgängig. Ein AppleScript, welches man in „Startobjekte“ in den „Systemeinstellungen“ einträgt, sorgt beim Anmelden eines Benutzers für ein Setzen der gewünschten Werte:
do shell script "sysctl -w net.inet.tcp.sendspace=65536" with administrator privileges
do shell script "sudo sysctl -w net.inet.tcp.recvspace =65536"
do shell script "sudo sysctl -w net.inet.udb.recvspace =73728"
do shell script "sudo sysctl -w net.inet.tcp.delayed_ack=0"
do shell script "sudo sysctl -w kern.ipc.maxsockbuf =524288"
Um Ihnen die Eingabe zu ersparen, haben wir das fertige Skript über den Soft-Link zum Download bereitgestellt. sysctl erfordert Administratorrechte, deshalb der Zusatz „with administrator privileges“ in der ersten Skriptzeile. In den folgenden Befehlen werden die entsprechenden Rechte durch sudo automatisch gesetzt. (adb)
(adb)