Ho notato una differenza fra emule e amule e riguarda il numero di clients accettati per l'upload. In emule generalmente sono pochi, dell'ordine di 4/5/6 tra i quali (clients permettendo) viene ripartita equamente la capacita' nostra di upload. In aMule non è proprio cosi'. Spesso, per via di alcune condizioni all'interno del codice, si accettano clients ai quali pero' viene allocata una quantita' di banda infima, dell'ordine di qualche centinaio di byte. Questi clients terminano la loro fetta di tempo in upload (nel codice e' settata un'ora) ricevendo pochi kb e ritornando nella nostra coda.
Il problema essenzialmente risiede con quei clients che hanno un buon giudizio nella nostra coda. Questi scalano rapidamente la coda e vi è la possibilita' che una volta accettati per il upload ricadano nel problema che ho spiegato prima, cioe' ricevono briciole. Il risultato ho supposto sia questo: nella nostra coda alcuni clients con giudizio alto vanno e vengono dalla coda di upload ottenendo poco. Noi nella loro coda dovremmo ottenere un giudizio "pessimo" in quanto uppiamo poco e veniamo superati da altri. Osservando che generalmente in cima alla coda si trovano quei clients con giudizio positivo ci si rende facilmente conto delle conseguenze del problema. Ammesso che sia un problema...
A questo punto ho modificato la parte di codice relativa al metodo che accetta un nuovo client stabilendo un'unica regola: accettare un numero di clients scelto da me.
Ieri sera ho dato uno sguardo al codice cercando un punto indolore all'interno del programma che potesse permettermi di fare tutto questo. Ho deciso che la funzione principale dello "Slot allocation" ora sia quella di determinare il numero di clients che voglio in coda, aMule poi suddivide, nel limite del possibile, equamente la banda.
Ora ho notato che scambio dati con chi ha ottimi giudizi nella mia coda con frequenza maggiore. Riesco a fornire loro un intero chunk e quindi ad ottenere sicuramente un giudizio migliore rispetto a prima.
In poco tempo ho ottenuto dei miglioramenti, se quello che ho supposto e' vero, allora man mano che recuperero' crediti verso quei clients ai quali avevi inviato briciole, la situazione dovrebbe continuare a migliorare. Almeno ora ho un modificatore che inizia a pendere verso la D e non sulla U ;/
Vorrei fare alcune precisazioni; questa modifica, in teoria, dovrebbe "favorire" lo scambio con quei clients che realmente ci interessano. Cioe' quelli che ci inviano dati.
Va sottolineato che in nessun modo gli altri clients vengano esclusi. Diciamo solo che noto scambi, con clients che hanno giudizio alto, con frequenza maggiore.
Inoltre giocando con la velocita' massima di upload e variando il numero di clients da accettare in upload e' possibile fare varie prove e cercare la migliore soluzione osservando le statistiche.
Esempio: si puo' scegliere un numero di clients tale da dare il tempo a quelli con giudizio positivo che sono in coda di scalare la coda stessa. In pratica quelli con giudizio positivo tendono ad ammassarsi in testa alla coda.
Non ho idea di quali siano le regole di questo forum, cioe' se vìolo qualche regola del forum postando la modifica. In caso qualcuno e' interessato per testare non ho alcun problema a condividere questa modifica.
Potrei aver fatto un buco nell'acqua, ma anche no. Piu' ne siamo a testarla meglio e' credo.
Ciao.