Caratteristiche aggiuntive rispetto alla versione ufficialeQuesta parte mi è stata gentilmente concessa da pier4r (http://pier4r.wikispaces.com/) ed è rilasciata sotto licenza GNUMaella Bandwidthcontrol, caculates the real OverheadQuando su emule impostiamo la banda in upload, questa sarà la "banda in upload netta". Cioè? Quando siamo connessi ad altri client, usiamo la banda in upload per 2 motivi:
* scambiare file
* scambiare informazioni sulla rete, ad esempio, un client mi vuole conoscere, chiedo ad un client se ha un file, ricerche su kad, etc...
Emule considera come banda in upload soltanto lo scambio di file (dunque netto), invece Xtreme, con questa funzione, calcola il traffico "aggiuntivo" (l'overhead) con più precisione.
NAFC (network adapter feedback control)Poichè il traffico aggiuntivo è calcolato, allora la banda imposta per l'upload non sarà più quella netta, ma la somma delle due. Dunque se imposto una banda di upload a 20Kbyte/s ed il traffico aggiuntivo è di 2Kb/s , avrò uno scambo dati reale di 18 Kb/s. Invece con emule avevo una banda di upload totale di 22 kb/s.
Advanced Uploadbandwidththrottler with adjustable slotspeedEmule divide la banda di upload in slot da 3Kb/sec e , normalmente, scambia "pezzi" di file da 9.28 megabyte. Dunque per scambiare un singolo pezzo si impiega molto tempo, circa 53 minuti.
Questo non è affatto buono! Infatti, per chiarire meglio il concetto, facciamo un esempio molto ottimistico:
Supponiamo che il client A abbia il file richiesto, composto da 4 parti da 9.28 mb. Chiamiamole A1, A2, A3 ed A4.
In upload ha 4 client che scaricano una parte di A, ed ogni parte è diversa tra loro. I client sono B, C, D, E. Dopo 53 minuti, ad esempio, B ottiene A1 , C ottiene A2, D ottiene A3, E ottiene A4.
Chiedono ad A altre parti del file, ed intanto ogni client entra in coda di un altro per ottenere le restanti parti.
Dunque B entra in coda ad A per A2, a C per A2, ad D per A3 ed ad E per A4. Semplifichiamo un pò di conti e dopo 53 minuti (posto che siano solo loro a scambiarsi i file ed entrino subito in upload! ) B ottiene tutte le parti del file richiesto.
Supponiamo invece che A abbia un solo slot di upload, ma a 20 kb/s, e così tutti gli altri. Entra B e ottiene il pezzo di file in 8 minuti. Ora B ha A1. Ora è C scarica da A il pezzo A2, mentre prende da B il pezzo A1. In 8 minuti possiede 2 pezzi. Ora D scarica da A il pezzo A3, prende da B il pezzo A1 e da C il pezzo A2. In 8 minuti ha 3 pezzi. Estendo il ragionamento anche a E che aspetta complessivamente (tempo di trasferimento + tempo in coda) 32 minuti per ottenere tutto il file.
Certo, ho preso uno dei casi migliori, però per dare un'idea.
32 minuti contro 106, diverso eh ?
Dunque ecco la funzione offerta da Xtreme. La possibilità di aggiustare la "slot speed". Ovvero, uno slot a quanto può scaricare massimo? Ovviamente ciò avviene fino a saturare la banda, ad esempio:
Se io ho 20 kb/s in upload e metto la slotspeed a 6 kb/sec, ottengo 3 slot da 6 kb/sec ed uno da 2 kb/sec.
n.b: in virtù del traffico aggiuntivo, la slot speed non è mai precisa al 100% ma può variare.
Xtreme Downloadmanager for a clever source-handlingMigliora la gestione delle sorgenti da cui attingere dati per il download
Powerrelease with dynamic Hide OSPossibilità di impostare una priorità altissima per l'upload di un file (non per il download!), in modo tale da farlo scaricare più velocemente degli altri (utile se è un file raro).
Dynamic Leecher Protection (DLP)Ha una collezione di identificatori di client emule "fake" (
approfondimento ) li riconosce e li banna. Se non li riconosce, analizza il comportamento dei client in coda e se questi rispecchiano certe azioni non permesse, vengono bannati.
Multi-threaded disc access with threading-queueEmule accede spesso al disco (anzi, forse è l'azione principale di questo software), solo che l'accesso è sequenziale. Cosa voglio dire? Bhè, se devo scrivere dati del file A e dati del file B, prima scrivo i dati del file A e poi quelli del file B. Questa è scrittura a thread singolo. Invece se io ho un thread (o processo leggero) per ogni singolo file, visto che i thread concorrono per l'uso del disco, molto probabilmente avrò un funzionamento del genere: prima scrivo una parte di dati relativi ad A, poi una parte relativa a B, poi un'altra parte relativa ad A, etc...
Certo, non scrivo subito tutti i dati di un file, ma evito di bloccare l'accesso al disco.
Supponiamo che mentre sto salvando i dati, emule abbia finito di calcolare l'hashset di un file... Deve aspettare che i dati vengano scritti. Invece con il sistema multi thread, il thread sui dati viene eseguito per una porzione di tempo, dopo viene "addormentato" e quindi il thread per il salvataggio dell'hashset può scrivere sul disco.
Insomma, un uso più equo delle risorse sul disco.
QueueOverflow with MinimumcontingentStabilisce, in base a questa formula

Quanti client in coda possono esserci relativamente ad un file. Spiego meglio. Supponiamo che io abbia impostato una coda di massimo 2000 client. Quando si arriva a 2000 client in coda, normalmente, i prossimi che vogliono entrarci non ne hanno la possibilità, in quanto la coda è piena.
Questo calcolo permette un surplus di client rispetto al valore che ho impostato, questo surplus è relativo ad ogni file. Facciamo un esempio.
Supponiamo che io abbia 100 file condivisi, con un limite di client per la coda pari a 2000.
Ora, lo coda minima che ottengo, in base alla formula scritta sopra è: ogni coda file può avere, minimo, 10 client in coda che lo richiedono.
Siano 2 file, il file A ed il file B e sia la coda di 2000 client. Il file A ha già 50 client in coda, quindi ne arriva un altro che richiede il file A ma viene respinto.
Il file B ha 5 client in coda, quando ne arriva un altro che chiede il file B, viene accettato, superando il limite di 2000 client e passando a 2001.
SLS (save load sources)Scrive sul disco le ultime fonti trovate, così al riavvio non bisogna cercare nuovamente (se non han cambiato IP) ma si contattano direttamente.