Optimiser le chargement sous eMule


1/ Théorie :

    Le système de crédit utilisé par eMule permet de pondérer la vitesse de montée d'un client dans votre file d'attente en fonction des volumes échangés avec ce client. Plus il vous envoie des données, plus son crédit augmente et plus il monte vite dans votre file d'attente.
    Ces graphes représentent le crédit d'un client en fonction du volume qu'il vous a envoyé (Upoloaded Total) et du volume que vous lui avez envoyé (Downloaded Total) en MB :

Free Image Hosting at www.ImageShack.us

Free Image Hosting at www.ImageShack.us
 
    Le temps estimé que devra attendre un nouveau client à l'entrée de la file est :


où Tj est le temps d'attente du client j arrivant dans une file d'attente de longueur N
Ci est le crédit du client i
Tm est le temps moyen fictif pour traiter un envoi avec UN slot qui serait ouvert (fonction de votre vitesse d'émission et moyenne d'envoi par session d'émission)

    Une longue file d'attente augmente le poids du système de crédit dans la gestion des clients : si vous avez 10 clients en attente, vous allez accorder un slot facilement à un nouveau client, si vous en avez 3000 vous allez les sélectionner en accord avec votre système de crédit. 

    Ce qu'il faut comprendre c'est que puisque les crédits sont accordés à un client donné et ne sont pas globaux, il faut avoir des crédits chez le client chez qui vous chargez pour avancer plus vite dans sa file d'attente.

2/ En Pratique :

    Pour charger plus vite la seule solution est de maximiser le nombre de sources et de maximiser les crédits chez ces sources.
  1.     Pour le nombre de source il n'y a pas grand chose à faire.
  2.     Pour les crédits il faut comprendre un chose importante : une nouvelle session d'eMule = de nouvelles sources
    On peut le constater en analysant le fichier clients.met qui recense nos clients et les échanges avec chacun. La conséquence immédiate est qu'il ne sert à rien d'avoir 100 000 clients connus et énormément de crédits accumulés chez ces clients car en pratique si vous lancez une recherche pour charger un nouveau fichier vous en retrouver très très peu.

    Pour utiliser vos crédits il faut pouvoir partager un fichier avec le client, le plus simple est de le faire au cours de la même session : vous chargez un fichier et le partager en priorité pour concentrer vos crédits chez les clients chez qui vous chargez.
    Pour faire simple il faut privilégier au partage les fichiers en chargement et pour ce faire vous pouvez :
  1.     Partagez un minimum de fichiers
  2.     Mettez les fichiers complets en priorité très basse et les fichier partiels en priorité release   
    La différence est d'autant plus importante que les fichiers chargés sont volumineux et ont peu de sources.

3/ Résultats :

    Ce graphe représente la distribution des clients avec en abcisse le volume d'échange en UL et en ordonnée le volume d'échange en DL.
    Il montre une utilisation des crédits, les clients ont des volumes d'échange importants, l'utilisateur concentre ses crédits et donc partage peu sur des fichiers en chargement. il utilise ses crédits et monte plus rapidement dans les files d'attente.


    Par ailleurs vous pourrez remarquez que la distribution des clients correspond au système de crédit Lovelace (asymptote ratio 1.4:1). Je passe sur les subtilités des différences entre les systèmes de crédit, en pratique, l'intérêt en terme de vitesse est marginal par rapport au type (partiel ou complet) et au nombre de fichiers partagés (mais en théorie le plus avantageux pour sélectionner les "bons clients" est Lovelace, présenté dans le deuxième graphe).
   
    Plus un clients partage ses fichiers, plus les crédits sont "stockés", les clients sont accumulés mais avec un faible volume d'échange. Les clients s'amassent graphiquement autour de l'origine et les crédits sont inutilisés.

Idées fausses :

Partagez beaucoup permet d'accumuler des crédits et de charger plus vite
* Laisser tourner eMule permet d'accumuler des crédits et de charger plus vite
* Il faut attendre quelques temps après l'installation d'eMule pour obtenir de bonnes performances
* Il existe des mods permettant de charger plus vite


=>Dès la première session, avec un fichier clients.met vierge et un nouveau user hash vous obtenez de très bonnes performances car de toutes façons vous n'aurez quasiment que des nouvelles sources à chaque session.

=> Aucun mod officiel ne permet d'augmenter la vitesse de DL. La perfomance du système de crédit dépend de votre système de crédit mais aussi de celui des clients chez qui vous chargez  (ex : Lovelace <-> Lovelace > Lovelace <-> Officiel). Or l'écrasante majorité des clients utilisent le système de crédit officiel. Les sytèmes de crédit n'apportent qu'une modification marginale.

5/ Pour aller plus loin :

Enfin retour aux sources :

"The credit system is used to reward users contributing to the network, i.e. uploading to other clients."
eMule-project.net

    Si ce n'est pas faux dans l'absolu, en pratique, vous aurez compris que "contribuer au réseau" ie partager des fichiers complets pour les laisser à disposition du réseau, aboutit à accumuler des crédits sans pouvoir les utiliser. Alors que ne rien partager permet d'"optimiser" l'utilisation de vos crédits :

Free Image Hosting at www.ImageShack.us

    Ce qui fait dire à certains développeurs qu'on devrait supprimer le système de crédit, ou bien proposer un système de crédit plat, avec une limite d'UL par client, style Fine CS dont le but est clair :

"With this type of credits attribution I'm only penalizing those clients that do not upload enough only for non complete files. "
eMule-web.de

    Mais quelqu'un qui charge un fichier sans donner en retour est peut être justement quelqu'un qui contribue au réseau en partageant ses fichiers complets et a donc peu de bande passante à accorder à ses fichiers partiels qui permettraient un retour...

Free Image Hosting at www.ImageShack.us

    Ensuite Fine CS pénalise les clients à partir d'un écart de 4 chunks sur les fichiers incomplets. Soit, donc admettons que Fine CS soit le crédit officiel, pour charger un nouveau fichier vous serez limités à 4 chunks par sources partielles à moins d'UL vers ces sources et donc... vous devez UL ce fichier en priorité pour faire sauter cette limite !
    
    Sinon pour changer le comportement "This prevents using tactics like powersharing unfinished files to get more credits. No tit-for-tat possible"il faut que le CS soit utilisé par une majorité de clients, et non de façon isolée (avec le bémol sur la limite à 4 chunks... ). Le moyen le plus simple et le plus sûr resterait de supprimer le système de crédit...

    Au final le système de crédit est peu utile voir inutile en situation d'utilisation normale, et n'a un intérêt que dans l'optique du partage sélectif, qui nuit à la diversité du partage sur eMule. A mon avis, il perdure uniquement sur le contre-sens largement entretenu qu'il favorise les "bons contributeurs au réseau".

    En attendant rien n'a changé depuis la création du crédit peu après eMule en septembre 2002, alors à bon entendeur...