Guida al funzionamento delle code
|
eMule è un'applicazione p2p famosa per come gestisce le
code dei client in attesa del download, in maniera
automatica e senza che l'utente possa intervenirci direttamente.
Supponiamo che un utente A abbia un file divx che
interessa a 5 altri utenti ( B, C, D, E, F
). Ognuno di questi chiede ad A di poterne scaricare un pezzettino ( chunk ).
Ovviamente le richieste arrivano ad A in tempi diversi diversi ed A
le esaminerà in tempi diversi. Supponiamo che A sia un client che
non ama fare preferenze allora attribuisce uno stesso valore alle richieste dei
diversi client ed inserisce i client in coda in posizioni successive in base
all'ordine di arrivo delle richieste. La richiesta del file C, per un motivo
casuale, è arrivata
prima delle altre. Per cui C capiterà in coda più avanti rispetto
agli altri. Supponiamo che l'ordine di arrivo delle richieste e quindi
la topologia di questa semplice coda sia quella descritta in figura.
|
![coda avanzamento lineare](immagini/emule_code.jpg)
Stando così le cose in una coda ad avanzamento lineare,
ovvero una coda in cui non ci sono scavalcamenti tra client e gestita secondo
la politica 'chi prima arriva prima scarica' C dovrebbe riuscire a scaricare
il suo pezzettino di files da A prima di F, B scaricherebbe prima di E
etc...
Fortunatamente però in eMule le code evolvono in
modo non lineare per cui potrebbe accadere che B arrivi a scaricare
prima di F e che avvengano scavalcamenti di posizione.
Sono due i motivi per cui nella coda di A ci possono essere
scavalcamenti e ci si discosta dalla condizione di coda ad avanzamento lineare
discussa sopra.
1. A attribuisce un valore diverso alle richieste di
accodamento, ovvero ai rispettivi client. Può accadere ad esempio che A dia
più importanza al client B rispetto al client F per cui anche se la richiesta
di accodamento di quest'ultimo giunge prima di quella di B a B viene assegnata
una posizione più privilegiata in coda perché come dicevo A assegna alle
richieste di B un valore maggiore.
![B scavalca F](immagini/eMule_valore.jpg)
2. La velocità con cui i vari client risalgono la coda di A
non è uguale per tutti. Alcuni client sono più veloci a risalire la coda di altri.
![B più veloce di F](immagini/eMule_vbvf.jpg)
Considerando insieme questi due contributi, che come
vedremo non sono indipendenti ( cioé se un client ha + valore di un
altro nella coda di A allora potrebbe essere anche più veloce ) si ottiene il
meccanismo completo di funzionamento delle code di eMule.
Resta quindi da capire:
- in base a quale criterio A attribuisce più valore ad un
client rispetto ad un altro, si dice anche che A assegna un Voto più alto ad
alcuni client rispetto ad altri.
- cos'è la velocità di avanzamento in coda e da cosa è
influenzata
Valore e Punteggio
La lista '
In Coda' mostra i clients che attendono
pazienti in coda di poter scaricare un pezzettino del file che desiderano
(solitamente si dice che aspettano che si renda disponibile uno slot di
upload). Questa lista viene mostrata
cliccando il pulsante
![Uploads](immagini/list_upload.jpg)
nella finestra Trasferimenti.
Delle varie colonne a noi ne interessano due: la colonna Voto
![Voto](immagini/colonna_voto.gif)
( in alcune versioni e mod di eMule viene etichettata anche come colonna
Valore ) e la colonna
![Punteggio](immagini/colonna_punteggio.gif)
.
A questo punto dovremmo aver compreso che la colonna Voto
mostra i Voti/Valori che il nostro eMule assegna agli altri client quando
questi entrano in coda e tali valori dipendono da : eventuali crediti
guadagnati da quel client e dallo stato del client ( ad esempio stato di utenti
bannati o per i quali è fallita l'identificazione sicura. In tal caso il Voto
è 0 )
La colonna Punteggio contiene un altro numero, detto
appunto punteggio del client, che si ricava tenendo conto del tempo che
quel client ha speso in coda e del valore della priorità di upload attribuita
al file per il quale quell'utente si è accodato.
E' il punteggio a determinare la posizione in coda.
I client con il punteggio più alto , quelli che sono
identificati con le stelline ***
saranno i prossimi a scaricare non appena si libero uno slot.
Il punteggio dipende dal tempo di conseguenza aumenta per tutti con il passare
dei secondi tuttavia aumenta con velocità diverse. E' appunto la velocità con
cui aumenta il punteggio a determinare la velocità di avanzamento di un client
in coda ( ad esempio con riferimento all'esempio della figura sopra se la
velocità di B è maggiore di quella di A vuol dire che l'aumento del punteggio
di B è più veloce dell'aumento del punteggio di A)
Occorre a questo punto solamente comprendere quali sono le
relazioni con vui vengono assegnati i Voti e calcolati i Punteggi e magari
fare qualche esempio.
Valore ( Voto )
eMule è un client tendenzialmente 'buono'. E' portato ad
assegnare a tutti i client che entrano nella sua coda un Voto/Valore alto che
è uguale a 100. Ma eMule è un client anche 'giusto' e nell'assegnare un voto ai
vari client terrà conto di alcuni parametri tra cui appunto i crediti
accumulati, lo stato ( bannaggio, identificazione sicura avvenuta o meno ) e
in misura minima anche della versione usata da eMule ( client eMule precedenti
alla versione 0.20a vengono sfavoriti ).
Tiene in conto queste cose moltiplicando il valore 100
che attribuirebbe di default ( ovvero in condizioni di assenza di credito,
stato normale e versione superiore alla 0.20a ) per dei numeri positivi che
chiameremo Moltiplicatori.
Vediamo quali sono i principali Moltiplicatori:
- Moltiplicatore di stato : x0 ( attribuito ad utenti bannati
o per altri motivi )
- Moltiplicatore di credito : da x1 a x10 ( il sistema dei crediti calcola il modificatore in base al rapporto
upload/download )
- Moltiplicatore di priorità:
- Priorità Release - x1.8
- Priorità Alta - x0.9
- Priorità Normale - x0.7
- Priorità Bassa - x0.6
- Moltiplicatore versione obsoleta: x0.5 ( se si
possiede una versione di eMule inferiore alla 0.20a )
( Se usate una versione di eMule più vecchia della .27a i
valori dei moltiplicatori sono leggermente diversi. Non li riporto per non
creare confusione e perché credo che ormai siano pochi ad usarla. Se siete
comunque interessati li trovate in
questa pagina del sito ufficiale )
Nota -
Nel documento ufficiale in cui si spiega il funzionamento della coda ed il
calcolo del Voto e del Punteggio il Moltiplicatore di priorità viene
utilizzato nel calcolo del Voto insieme agli altri moltiplicatori. In questa
guida io lo userò per il calcolo del Punteggio. E' chiaro che, come vedremo
fra poco, poiché il Punteggio è direttamente proporzionale al Voto
dall'associatività della moltiplicazione il risultato non cambia. Il motivo di
questa mia scelta è che rintengo che questa spiegazione generi meno
confusione in quanto nell'interfaccia grafica di eMule ufficiale il Voto non
tiene effettivamente conto del moltiplicatore di priorità, ovvero il voto
sembra non tenere in conto della priorità di upload attribuita ai file in
condivisione...mentre il Punteggio ne tiente conto. Ora ritengo del tutto
irrilevante conoscere precisamente dove avviene tale moltiplicazione se sul
Voto o sul Punteggio ma nonostante questo ho deciso di seguire questa linea come
dicevo per maggiore chiarezza e coerenza con quanto si può effettivamente
leggere sull'interfaccia grafica di eMule. A dimostrazione di quanto detto ci
sono i seguenti esempi di calcolo del Voto e del Punteggio.
A questo punto possiamo dare la formula per il calcolo del
voto:
Voto = 100 * Moltiplic. di stato * Moltiplic. di Credito *
Moltiplic. versione obsoleta
Esempio calcolo Voto
Consideriamo il caso dell'utente del seguente esempio preso
dalla mia coda di upload ( nota che alcuni campi sono stati nascosti per
rispetto della privacy ).
![emule calcolo voto](immagini/eMule_valore_esempio.jpg)
Come si vede a questo utente è stato attribuito ( punto 2 ) il
Voto 944.0 ( ricordo ancora che i termini Voto, Valore e in questo caso
Punteggio Totale sono da considerarsi sinonimi ).
Come si è arrivati dal valore di default al valore 944.0?
Mediante le regole che abbiamo spiegato prima. Da osservare che in questo caso
l'utente usa la versione v0.43b per cui non occorre usare il moltiplicatore di
versione obsoleta. Anche il moltiplicatore di stato può essere trascurato ( o
equivalentemente posto uguale ad 1 ) perché l'utente non è bannato e
l'identificazione sicura è avvenuta correttamente. Il moltiplicatore di
credito ( qui chiamato Modificatore UP/Down, punto 1 ) è uguale a 9.44.
Quindi
Voto = 100 * 9.44 = 944.0
Punteggio
Il Punteggio è direttamente
proporzionale al Voto ma come detto tiene conto del tempo di attesa di ciascon
client in coda.
Quando si libera un posto di upload
eMule sceglie di inviare i files al client in coda col punteggio + alto.
Se diamo uno sguardo alla colonna Punteggio possiamo
verificare che col trascorrere dei secondi il punteggio dei vari client
aumenta con velocità diverse in dipendenza quindi da tra cose :
- Tempo
- Voto ( ribadisco Voto, Valore e Punteggio totale sono da
considerarsi sinonimi )
- Modificatore di priorità
Cliccando sull'intestazione della colonna Punteggio si può
ordinare la coda dei client per valori decrescenti di punteggio. Come si vede
accanto al punteggio più elevato ci sono degli asterischi
![Punteggio e asterischi](immagini/astro_score.gif)
La formula per calcolare il punteggio è :
Punteggio = ( Voto * [ tempo di attesa in coda in secondi ]
* Moltiplic. di priorità ) / 100
I clients con un moltiplicatore
complessivo ( dato dal prodotto di tutti i
moltiplicatori ) maggiore di 1 saranno rappresentati da
una icona di client gialla/luminosa
![eMule incona di stato gialla](immagini/icona_stato_gialla.gif)
Esempio calcolo PunteggioConsideriamo l'utente mostrato
nella figura in basso ( alcuni
campi sono stati nascosti per salvaguardia della privacy )
![Esempio calcolo punteggio](immagini/eMule_esempio_rating_02.jpg)
E' nella mia coda da 40 minuti e 44 secondi. Si è accodato
per un file in priorità normale quindi il moltiplicatore di priorità sarà 0.7
(vedi sopra). Ha un Voto di 199 ( in realtà è un valore approssimato. Ho
eseguito il calcolo manualmente e risulta 199.6 )
Il tempo di attesa in coda in secondi è : 40 * 60 + 44 =
2444.
Abbiamo tutti i dati per poter calcolare il Punteggio.
Punteggio = ( 199.6 * 2444 * 0.7 ) / 100 = 3414.75 che
eMule approssima a 3415 come volevasi dimostrare.
Considerazioni finali
Riassumendo abbiamo visto come le code di eMule non
evolvono in maniera lineare come in molti altri software p2p. Spesso si entra
in coda in posizioni bassissime ( 1000 esimo posto ad esempio ) ma si comincia
a scaricare dopo appena un trentina di minuti o poco più. Questo perché le
velocità di avanzamento dei vari client possono essere diverse e si spiegano
ricorrendo ai concetti di Voto ricevuto dal client all'ingresso in una coda e
velocità di avanzamento nella coda stessa che corrisponde al rate di
incremento del Punteggio In particolare abbiamo visto che i parametri che
influenzano la velocità di avanzamento sono i moltiplicatori.
E' bene osservare però che non tutti i moltiplicatori hanno
la stessa importanza.
Se il Moltiplicatore di stato di un client è uguale a 0 si
ha Voto = 0 e Punteggio = 0 ovvero il client non arriverà a scaricare mai
nulla restando immobilie nella coda. E' bene quindi conservare un buono stato
non usando versioni di eMule leechers per le quali spesso l'identificazione
sicura fallisce. E' chiaro però che nella maggior parte dei casi sarà tutto in
regola e quindi tale moltiplicatore verrà trascurato.
Allo stesso modo il moltiplicatore di versione obsoleta
entrerà in gioco pochissime volte perché ormai sono pochissimi coloro che
usano una versione di eMule inferiore alla 0.20a.
Il moltiplicatore di priorità assume un importanza
sicuramente maggiore rispetto ai primi due. Se un client si accoda per un file
che è stato impostato su priorità release il moltiplicatore sarà x1.8 che è un
valore di un certo peso che attraverso il Voto agirà direttamente sul
Punteggio e quindi sulla velocità nel risalire la coda. Questo produrrà in
ultima analisi una diffusione più celere dei files in Release rispetto agli
altri files in condivisione.
Il moltiplicatore di credito come visto prima può arrivare
ad assumere valori altissimi fino a x10 di conseguenza risulta essere il
moltiplicatore più importante anche perché è in qualche modo controllabile
dalla nostra condotta. Più siamo generosi verso gli altri in termini di banda
di upload più il sistema dei crediti di eMule ci ricompenserà attravero
appunto alti valori del moltiplicatore di credito che incrementerà molto il
nostro Punteggio nelle code dei client che in passato hanno scaricato qualcosa
da noi. Più condividiamo, diversifichiamo e curiamo i nostri files in
condivisione più ampio e più vario sarà lo spetto degli utenti presso i quali
guadagneremo crediti e questo migliorerà i nostri download.
Buon divertimento e buon download con eMule!