Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm uploading a large file.

The problem is: uploading speed jumps to 134 KiB/s (≈100% of my bandwidth) and then immediately back to 67 Kib/s (≈50% of my bW): every 3 seconds it tries to increase & falls back. My uplink is 1 Mibit/s, but I can't use it.

My connection is stable & working, the server is okay: same thing happens while uploading to other hosts, but not with downloading. Skype up-traffic is also stable: maybe, because it does not use the whole BW.

My schematic 'traceroute': [PC] → [Switch] → [ADSL Modem, NAT] → (The Internets)

What the hell could be happening?

UPD: Now MTU is 1492 all over my network & is equal to the ISP's MTU. The problem remains.

UPD2: With MTU <=600 speed is constantly at 50% BW, no spikes

share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

You are likely running into windowing effects. Data is transmitted in packets of up to 1500 bytes. There is a transmission window which allows a certain amount of data to be transmitted but not acknowledged. Your system will fill the pipe and then has to wait for the data an acknowledgment before sending more data. Some systems use a timeout before transmitting the acknowledgment, so you may get an acknowledgment for several packages at one, allowing your system to send that many more packets. This can lead to bursty behavior such as you see.

There are a number of factors which can increase burstiness. Sampling errors can increase the apparent burstiness. Longer sampling periods tend to minimize sampling errors.

It is rare that a single stream can run at the full bandwidth. To do so there must be sufficient bandwidth along the whole path. The latency (end to end transmission time) must be low enough that the transmission window is never fully used. The higher the bandwidth the harder it is to do so.

share|improve this answer
    
Thanks! Can you give an advice on how to tune this? I tried to disable/change nearly all values in /proc/sys/net/ipv4/*: simply no effect :) –  kolypto Apr 1 '11 at 5:00
    
The window size is pretty well self tuning. You could try doubling net.core.wmem_max. This may make things worse. The bursts may be involve attempts to increase the window size. You might also try reducing the value to 65536 or less and see if the bursts disappear. –  BillThor Apr 1 '11 at 6:27
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.