Das Prinzip des
Xtreme-Uploads
Wie jeder weiß,
heißt wird es grundsätzlich empfohlen das Uploadlimit des emules auf ca.
80% der Leitungskapazität zu setzen. So manche Leute setzen es sogar
noch sehr viel weiter herunter, damit es den Download nicht stört. So
mancher Leechermod wirbt sogar damit, dass der angepriesene Mod 0 Upload
ermöglicht, da dies wesentlich besseren Download ermöglicht.
Was ist dran an
der Aussage: Upload bremst Download und warum wird oft empfohlen den
Upload auf nur 80% der Kapazität zu setzen ?
Die offizielle
emule-Version unterscheidet nur zwischen Upload(Datenupload: Bild-Item1)
und Overhead(Bild Item2). Als Overhead rechnet die offizielle Version
hierbei nur die Netto-Größe eines Kontrollpacketes. Was hierbei nicht
berücksichtigt wird ist, daß das Betriebssystem an jedes versandte
Packet noch einen Kopf anhängt (TCP-Header, UDP-Header). Bei kleinen
Packeten kann es sein, dass so ein Header größer als das eigentliche
Packet ist. Gerade bei vielen gleichzeitigen Verbindungen werden sehr
viele Kontrollpackete verschickt, was den zusätzlichen TCP/UDP-Header-Overhead
vergrößert. Der im unteren Bild markierte Bereich 3, also die Fläche
zwischen rosa Linie und weißer Linie soll diesen Overhead
veranschaulichen.
Zusätzlich zum
gerade eben besprochenen Overhead muss für jedes empfangene Packet ein
Bestätigungspacket gesendet werden (ACK-Packet). Auch diese Packete
zählt die offizielle Version nicht. Bereich 4 im Bild soll
veranschaulichen wie viel zusätzlicher Overhead durch diese ACK-Packete
entsteht bei hohem Download. Ist man am Uploadkapazitätslimit, so können
ACK-Packete nicht mehr schnell genug gesendet werden und sowohl Download
als auch Upload können einbrechen.
Um solche Probleme
zu minimieren wird empfohlen den Upload auf nur 80% der Kapazität zu
setzen.
Bereich 5 soll
noch einen zusätzlichen Overhead veranschaulichen, nämlich den des
Netzwerkadapters. Tatsächlich fließen nämlich noch etliche Bytes Upload
mehr über die Leitung als zunächst beschrieben. Zu bisherigem Overhead
können sich nämlich noch "Retransmissions" (fehlerhaft übertragene
Packete die durch Windows neu übertragen werden), Ping-Signalen auf die
man antworten muss, aber auch der Upload von anderen Programmen (z.B.
Browser) hinzugesellen.

Der Xtreme Mod
arbeitet anders.
Er versucht den
entstehenden Overhead inklusiv TCP/UDP-Header und ACK-Packeten soweit
wie nur irgendwie möglich abzuschätzen. Das im Xtreme eingestellte
Uploadlimit umfasst somit Daten, Kontroll-Packete und die dazugehörigen
Header, und die ACK-Packete. Bild Item2 veranschaulicht die Gesamtsumme
des Overheads. Der DatenUpload selbst (Bild Item 1) wird
heruntergeregelt damit die weiße Linie möglichst stabil gehalten werden
kann. Durch das System kann das Uploadlimit wesentlich höher eingestellt
werden, die Bandbreite effektiver genutzt werden und auch der Download
wird niemals durch den Upload ausgebremst. Der Netzwerkverkehr (Bild
Item3) bleibt unberücksichtigt.

Was ist NAFC ?
Das "Network adapter Feedback Control"
richtet den emule-Upload nach dem am Netzwerkadapter gemessenem
Gesamtupload aller Anwendungen aus. Das in emule eingestellte
Uploadlimit berücksichtigt somit nicht nur emule-Daten, sondern alle
Upload-Packete aller Anwendungen (Webbrowser, Onlinegames, FTP-Upload
usw.).
Ist beispielsweise der Upload auf 15 kbs
eingestellt und eine Internettelefonie verbraucht 5 kbs Upload, so
sendet emule nur noch 10 kbs an Daten. Durch dieses Verfahren wird eine
geringere Pingzahl gewährleistet und die Uploadkapazität am optimalsten
ausgenutzt. Bei Verwendung von NAFC lässt sich das Uploadlimit ganz
dicht unterhalb der Uploadkapazität einstellen. Das dritte Bild
veranschaulicht noch mal wie die Summe aus Upload Daten (1) + Overhead +
restlicher Netzwerkverkehr (3) den bei NAFC eingestellten Wert ergibt.
Um Missbrauch des Features vorzubeugen,
schaut emule nach, ob die gemessenen Daten emule-Daten sind oder Daten
anderer Anwendungen. Sind die gesendeten emule-Daten (Nutzdaten +
Overhead) kleiner als 11 kbs, so schaltet sich dynamisch ein
Downloadlimit ein.
NAFC funktioniert
nicht wenn man ein Heimnetzwerk verwendet und gemeinsam mit anderen
Rechnern per Router ins Internet geht.

Kleine Anmerkung
am Rande:
Die Bilder sind
keine Screenshots, sondern wurden durch Paint erstellt. Sie sollen nur
das Prinzip veranschaulichen, aber keine reellen Werte wiederspiegeln.
Durch Latenzzeiten, Windows-Einstellungen und die Netzwerkkarte können
die Graphen mehr oder weniger gezackt aussehen.
Normale
Screenshots können so aussehen:

Dieser screenshot
stellt ein Optimum da, da die weiße und die gelbe Linie sehr dicht
beieinander liegen.(NAFC ausgeschalten)
Aber auch
folgender Screenshot zeigt normale Werte: (NAFC ausgeschalten)

Erklärung zu den
Spitzenwerten bei Kreis 1 und Kreis 2:
Bei 1 dürfte es
sich um typischen Browserverkehr handeln... es wurde also eine Webseite
geladen.
Kreis 2 zeigt eine
typische, kurzzeitige Auslastung von emule an. Dies kann mehrere Gründe
haben:
- ein anderer
Prozess stahl emule die benötigte Rechenzeit
- Der CD/DVD-Brenner
blockierte den IO-Bus (kommt häufig vor beim schreiben des Lead-In)
- Ein anderes
Programm (z.B. der Explorer) tätigte gerade einen Schreib-/Lese-Vorgang
auf der Festplatte, während emule auch gleichzeitig Daten der Platte
lesen/schreiben wollte.
Uploadslotspeed
Zunächst sei
erwähnt, dass die eingestellte Slotspeed keinen akkuraten Wert
darstellt, sondern dass emule versuchen wird so viele Slots zu öffnen,
dass der tatsächliche Slotspeed möglichst nahe dem gewünschten ist. Die
eingestellte Slotspeed besitz eine Toleranz von ca. 25%. Warum die
Slotspeed nicht akkurat programmiert wurde, besitzt folgende
Hintergründe:
1. Bei
Beispielweise Uploadlimit 11 und Slotspeed 4 ist es rein rechnerisch gar
nicht möglich jedem Slot 4 kbs zu geben.
2. der
emule-Overhead ist kein konstanter Wert sondern fällt und steigt und
somit auch der zur Verfügung stehende Datenupload.
3.
Netzwerktechnisch bedingt kann der Upload zu einem bestimmten Client
auch mal abfallen. Dies wird dann durch andere Slots aufgefangen.
Die Einstellbare
Slotspeed hängt vom Uploadlimit ab. Je höher dieses ist, desto höher
kann man die Slotspeed einstellen. Maximalster Wert ist dabei 15 kbs.
Wie arbeitet der
Slotspeed und wann werden neue Slots geöffnet ?
Grundlegendes
Prinzip: es gibt eine Mindestanzahl an Uploadslots und eine Maximalzahl.
Die Mindestanzahl ist: Uploadlimit / Slotspeed, das ganze aufgerundet.
Beispielsweise 17/4 -> 5. Der Maximalzahl liegt eine kompliziertere
Berechung zugrunde.
Jeder Uploadslot
kann zwei verschiedene Stadien haben: Trickle oder Full. Ein
Trickle-Slot bekommt 0.5 kbs Uploadspeed und ist grau hinterlegt, ein
Full-Slot bekommt volle Speed und ist schwarz dargestellt. Der Xtreme
versucht immer den gesamten Uploadspeed auf die Full-Slots aufzuteilen,
sollten diese nicht allen Speed nehmen können, wird der Rest auf die
Trickles aufgeteilt. 0.5 kbs wird für Trickles aber immer gewährleistet.
Nach dem Start von
emule werden zunächst die Minimumanzahl an Slots geöffnet. Zunächst
sind alle bis auf einen Slot Trickles. Da sich der Upload auf den einen
Full-Slot fokussiert, wird dieser über der gewünschten Slotspeed sein.
Ist ein Fullslot 25% über der gewünschten Slotspeed wird der nächste
Trickle zum Full-Slot. Diese Überprüfung findet alle 5 Sekunden statt,
bis keiner der Full-Slots mehr als 25% über der gewünschten Slotspeed
liegt.
Der Xtreme öffnet
immer so viele Slots, wie entweder Mindestanzahl, oder dass zumindest
ein Trickle vorhanden ist. In der Praxis passiert nämlich oft folgendes:
Ein oder mehrere
Clients können den gewünschten Slotspeed nicht nehmen. Da der Upload auf
alle Slots aufgeteilt wird, bekommen somit andere Slots mehr Speed.
Übersteigt der tatsächliche Slotspeed den Gewünschten um mehr als 25%
wird der nächste Trickle zum Full-Slot gemacht. Ist kein Trickle mehr
vorhanden wird ein neuer Slot geöffnet. Dies geht so lange bis sich der
Upload stabilisiert hat (keiner über 25%) und ein Trickle vorhanden ist
oder die Maximalanzahl erreicht wurde.
Muss ein neuer
Slot geöffnet werden, da kein Trickle mehr vorhanden, so hat dieser Slot
6 Sekunden Zeit um die Verbindung aufzubauen. Ist dies nach 6 Sekunden
nicht passiert, so wird der nächste Slot geöffnet. Normalerweise liegt
die Zeit zum Herstellen einer Verbindung unter 6 Sekunden, durch diese
Algorithmus kann es aber vorkommen, dass mehr als ein Trickle geöffnet
werden. (Beispiel: nach 7 Sekunden wird der nächste Slot geöffnet,
dieser reagiert auch prompt, der andere bis dato nicht Reagierende hat
aber die Verbindung nach 15 Sekunden doch noch hergestellt).
Wichtig ist zu
wissesn: oberstes Prinzip des Xtremes ist es den Upload stabil zu
halten, nicht möglichst wenige Slots zu haben.
Vor allem größere
Slotsspeeds (> 4 oder 5 kbs) können auf manchen Systemen zu Problemen
führen. Viele Clients können eine höhere Slotspeed nicht nehmen. Schuld
daran können schlechte Internetverbindungen sein, der eigene ISP, der
ISP des Clients, die Treiber der eigenen Netzwerkkarte oder die des
anderen Clients und und und. Der Xtreme versucht so viele Slots zu
öffnen um einen stabilen Upload zu gewährleisten. Macht er so viele auf,
dass die Durchschnittliche Slotspeed auf einen gewissen Wert unter dem
Gewünschten fällt, so ist das ein Zeichen dafür, dass eine höhere
Slotspeed nicht möglich ist. In diesem Fall ist es ratsam den
gewünschten Slotspeed herunterzusetzen, da der Algorithmus des Xtremes
am besten arbeitet, wenn die gewünschte Slotspeed auch tatsächlich
möglich ist.
Das automatische
Verfahren zum öffnen neuer Slots kann in den Einstellungen unter
Xtreme->Open more slots if needed deaktiviert werden. Ist dies
deaktiviert, wird die Anzahl geöffneter Slots immer gleich der
Mindestanzahl sein.
Blockier-Verhätlnis und Uploadgesundheit
In den Xtreme I Optionen kann man die Anzeige des Blockier-Verhätlnisses aktivieren. In der Uploadtoolbar des Transferfensters werden dann zwei Werte angezeigt. Der erste Wert ist die Uploadgesundheit und diese sollte immer 100% betragen. Der zweite Wert ist das Durchschnittliche Blockierverhältnis über die letzten 20 Sekunden aller Uploadslots.
Auch bei den einzelen Uploadlots findet man einen neuen Wert, das Blockierverhältnis der letzten 20 Sekunden. Dieser Wert gibt an, wie oft ein Uploadsocket den Versuch zu senden blockierte. Beispielsweise bedeutet 95%, daß nur 5% aller Versuche zu senden erfolgreich waren.
|