Built-in Auto-Speed
The built-in Auto-speed feature attempts to match Azureus' upload speed with your network connection's current traffic to avoid overloading it. Auto-Speed settings are located at Options > Transfer > Auto-Speed in Vuze's options.
If Auto-Speed is enabled, the current speed limits is shown in brackets on the Status bar, and an asterisk '*' indicates that Auto-Speed is active. In the following example, there is 91K = 91 kB/s in brackets as the upload limit, and the current upload speed is 91.0 kB/s. (In the example there is also a fixed 1050K limit for download speed.)
Azureus contains currently two built-in Auto-speed logics: 'Classic' and 'Beta'
 Auto-Speed Classic
It works by selecting a number of other Azureus instances from the Distributed Database as ping targets. It then periodically pings these to obtain an average latency for your connection. In order to baseline these pings Azureus needs a period during which little network activity occurs. If this doesn't happen naturally within a period after startup it will temporarily force the upload limit to a very low value to obtain the baseline (it may repeat this at other times when the ping targets change)
Once a baseline ping time is available, auto-speed adjusts the upload speed based on the observed difference between the current ping time and the baseline.
There are many different types of connection with very different characteristics. Unfortunately auto-speed is currently not clever enough to optimise its behaviour for all scenarios automatically so you may need to adjust its parameters to maximise its effectiveness. To do this you need to change the 'Mode' to 'Advanced' in the options.
The three main parameters of interest are the increase/decrease amounts and the 'choking ping'. The first two affect how quickly auto-speed changes Azureus' upload setting in response to ping latency changes. The third is the latency that Azureus will consider as an absolute indicator of choking (although it also considers an additional factor based on the measured baseline ping time). By setting a rather low latency limit, you can make Azureus very responsive to network congestion.
 Auto-Speed Beta
Documentation about the alternative Auto-Speed Beta functionality.