[Résolu] Network tuning

  • Ce sujet contient 6 réponses, 2 participants et a été mis à jour pour la dernière fois par rogn...rogn…, le il y a 1 mois.
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Articles
  • #11699
    rogn...rogn…
    Participant

    Bonjour à *tousse* [/troll]
    Je cherche à tuner ma carte réseau pour que celle-ci soit plus performante, et permette le transfert de fichiers plus rapide. En effet, celui-ci, en Up reste bêtement à 2,5 MBps et 3,3MBps constant.
    Je passe par des câbles Cat5E et Cat6, et deux box 1Gbps l’une étant en sous réseau de l’autre. Je pensais avoir des taux de transferts bien plus élevés mais apparemment c’est niet

    Attention, ça s’applique sur des réseaux à basse latence tels que sur des routeurs 1Gbps, et en Wifi 5Ghz, ou de la fibre.
    Mais cela peut polluer sur des réseaux 3G/4G à basse fréquence (<1 Ghz) ou de l’ADSL d’il y a 20 ans.

    Alors,
    1 ) j’ai décidé de faire joujou avec les paramètres suivants, ça fait suite à ce sujet de téléchargements lents avec Filezilla : https://dolys.fr/forums/topic/ameliorer-le-debit-de-telechargement-sous-linux/
    Mais je souhaite creuser plus loin et mettre fin à une vieille légende qui m’a fait croire que les cartes réseaux “bas de gamme” sont conçues pour le download rapide et l’upload plus lent.

    2) J’applique dans NetworkManager un MTU sur ma connexion qui par défaut (même en automatique) est à 1500, je l’ai mis à 6000.

    #-----------------------------------------------------------------------
    #TCP and UDP Memory Managment for LAN 1GBps, with Low-Latency
    #use sudo sysctl -p /etc/sysctl.d/99-sysctl.conf to store parameters
    #-----------------------------------------------------------------------
    #TCP core max receive and send Buffer size (*4KB)
    net.core.rmem_max = 4194304
    net.core.wmem_max = 4194304
    net.core.optmem_max = 4194304
    #TCP core default receive and send Buffer size (*4KB)
    net.core.rmem_default = 2097152
    net.core.wmem_default = 2097152
    #
    #UDP-only ipv4 min receive and send Buffer size (4KB)
    net.ipv4.udp_wmem_min = 4096
    net.ipv4.udp_rmem_min = 4096
    #TCP-only min (*4KB), pressure and max. Pressure is the treshold when TCP reclaim buffer memory to move memory use down toward the minimum. 
    net.ipv4.tcp_wmem = 4096 2097152 4194304
    net.ipv4.tcp_rmem = 4096 2097152 4194304
    # = max(tcp_wmem) * 2 * numbers of clients / 4KB
    net.ipv4.udp_mem = 20480 20480 20480
    net.ipv4.tcp_mem = 20480 20480 20480
    #TCP Selective Acknowledgement (set:0 for Low-Latency)
    net.ipv4.tcp_sack = 0
    net.ipv4.tcp_dsack = 0
    net.ipv4.tcp_fack = 0
    #Gradual speed increase (set:0 for Low-Latency)
    net.ipv4.tcp_slow_start_after_idle = 0
    #
    #-----------------------------------------------------------------------
    #Swappinness parametes 
    #-----------------------------------------------------------------------
    vm.swappiness = 5
    vm.vfs_cache_pressure = 50

    Il semblerait que seuls les paramètres de swappiness soient effectifs, après un coup de
    `sysctl -p /etc/99-sysctl.conf’

    Je sais que nam1962 avait déjà conseillé ce paramétrage 🙂
    EDIT : oui –> https://dolys.fr/forums/topic/ameliorer-le-debit-de-telechargement-sous-linux/

    Les résultats obtenus : un DL et un UL à 30 MBps ou 200 Mbps, j’ai presque multiplié par 10 ces performances , elles sont tout à fait acceptables.


    ? Je divise par zéro.

    #11700
    nam1962nam1962
    Maître des clés

    Hello et bienvenue ! 🙂

    Alors oui, j’ai un tuto sur la swappiness qui touche au fichier dont tu parles, j’ai aussi un tuto sur l’optimisation wifi de premier niveau.
    Par contre je n’ai pas trop d’expertise sur le network tuning, le peu que je vois est que les réglages dont tu parles semblent concerner des fichiers spécifiques : https://cromwell-intl.com/open-source/performance-tuning/tcp.html

    Et je me demande si les amendements de réglage à ces fichiers ne doivent pas se faire avec des commandes dédiées !

    Je serai ravi que de bonne âmes nous donnent leur avis sur la question.

    Dans tous les cas, la première étape est sans doute de vérifier les capacités de ta ligne ; compliqué de l'”extérieur” mais il commence à y avoir des outils comme celui de l’Arcep (qui fait également un peu rire : comment ont ils pu mettre 18 ans à décider de le faire, puis 2 ans à juste pondre une beta avec des données incomplètes et une interface pas au point…)

    Côté FAI, le tiens a-t’il des outils de test de ligne ?


    ? Un jeune site que j'aime bien, la ferrari du T-shirt  ...bio en plus : https://goudronblanc.com
    C'est notre mécène ! 🙂

    #11701
    rogn...rogn…
    Participant

    Salut 🙂
    Alors j’ai fait plusieurs tests.
    Mon routeur fait très bien passer les paquets, que ce soit en Wifi ou en filaire. C’est SSH derrière sur le serveur où j’ai fait du network tuning qui a presque du mal à suivre. \o/

    Par contre, je viens de découvrir que sur le routeur du FAI, il me priorisait le 2.4 GHz sur un poste et le GHz sur l’autre. Donc, après avoir tout mis en 5GHz, je multiplie par 5 le taux de transfert, mais je soupçonne la kommandantur d’être passée par là en ces temps de con-finement, car j’ai toujours 5 fois moins de vitesse de transfert que sur mon routeur.

    Pour la configuration pure du kernel, @nam1962
    Ce sont des paramètres qui vont taper dans /proc/sys/net , à l’instar des paramètres de swappiness qu vont taper dans /proc/sys/wm/ , la règle est la même, le fichier doit cependant exister.
    Maintenant, c’est au niveau valeurs qu’il faut jouer, j’ai appliqué les valeurs conseillées par Oracle pour du SGBD, mais peut-être qu’il y a mieux.

    Bonne journée 🙂


    ? Je divise par zéro.

    #11702
    rogn...rogn…
    Participant

    Re, voici une nouvelle configuration qui semble plus stable. J’ai des ratios à 30 Mbps sans perte de vitesse dans les deux sens sur le sub-LAN. À cette vitesse, ssh tourne à 65% (mais comme je suis tout seul sur la ligne, ça n’impacte pas 🙂 )
    Cela s’applique sur du câble Cat5E, du Wifi AC 5GHz en WPA2 AES, et un routeur 1GBps .
    J’ai aussi modifié le MTU de la connexion qui de base est à 1500, pour 6000 (la boucle locale est à 65536 !)

    #TCP and UDP Memory Managment for LAN 1GBps, with Low-Latency
    #use sudo sysctl -p /etc/sysctl.d/99-sysctl.conf to store parameters
    #TCP max receive and send Buffer size (*4KB)
    net.core.rmem_max = 4194304
    net.core.wmem_max = 4194304
    net.core.optmem_max = 4194304
    #TCP default receive and send Buffer size
    net.core.rmem_default = 87380
    net.core.wmem_default = 87380
    #TCP min receive and send Buffer size (4KB)
    net.ipv4.udp_wmem_min = 4096
    net.ipv4.udp_rmem_min = 4096
    #TCP min , pressure and max. Pressure is the treshold when TCP 
    #reclaim buffer memory to move memory use down toward the minimum. 
    net.ipv4.tcp_wmem = 4096 87380 4194304
    net.ipv4.tcp_rmem = 4096 87380 4194304
    # = max(tcp_wmem) * 2 * numbers of clients / 4KB / reclaim buffer
    net.ipv4.udp_mem = 20480 20480 20480
    net.ipv4.tcp_mem = 20480 20480 20480
    #TCP Selective Acknowledgement (set:0 for Low-Latency)
    net.ipv4.tcp_sack = 0
    net.ipv4.tcp_dsack = 0
    net.ipv4.tcp_fack = 0
    #Gradual speed increase (set:0 for Low-Latency)
    net.ipv4.tcp_slow_start_after_idle = 0
    #
    #Swappinness parametes 
    vm.swappiness = 5
    vm.vfs_cache_pressure = 50
    

    ? Je divise par zéro.

    #11707
    rogn...rogn…
    Participant

    Hooo le mauvais que je suis ! Les ratios que je donne sont en Mega-Bytes par seconde, et non en Méga-Bits par seconde !
    Autrement dit je suis à 192 Mbps sur des routeurs 1Gbps, ce qui est une perf acceptable pour une connexion fibre WAN.
    Maintenant, j’applique les nouveaux paramètres suivants et augmente le treshold à 512 * 4K par socket.

    cat /etc/sysctl.d/99-sysctl.conf 
    #-----------------------------------------------------------------------
    #TCP and UDP Memory Managment for LAN 1GBps, with Low-Latency
    #use sudo sysctl -p /etc/sysctl.d/99-sysctl.conf to store parameters
    #-----------------------------------------------------------------------
    #TCP core max receive and send Buffer size (*4KB)
    net.core.rmem_max = 4194304
    net.core.wmem_max = 4194304
    net.core.optmem_max = 4194304
    #TCP core default receive and send Buffer size (*4KB)
    net.core.rmem_default = 2097152
    net.core.wmem_default = 2097152
    #
    #UDP-only ipv4 min receive and send Buffer size (4KB)
    net.ipv4.udp_wmem_min = 4096
    net.ipv4.udp_rmem_min = 4096
    #TCP-only min (*4KB), pressure and max. Pressure is the treshold when TCP reclaim buffer memory to move memory use down toward the minimum. 
    net.ipv4.tcp_wmem = 4096 2097152 4194304
    net.ipv4.tcp_rmem = 4096 2097152 4194304
    # = max(tcp_wmem) * 2 * numbers of clients / 4KB
    net.ipv4.udp_mem = 20480 20480 20480
    net.ipv4.tcp_mem = 20480 20480 20480
    #TCP Selective Acknowledgement (set:0 for Low-Latency)
    net.ipv4.tcp_sack = 0
    net.ipv4.tcp_dsack = 0
    net.ipv4.tcp_fack = 0
    #Gradual speed increase (set:0 for Low-Latency)
    net.ipv4.tcp_slow_start_after_idle = 0
    #
    #-----------------------------------------------------------------------
    #Swappiness parametes 
    #-----------------------------------------------------------------------
    vm.swappiness = 5
    vm.vfs_cache_pressure = 50
    

    Résultats, même le routeur du FAI comprend que le serveur a faim donc lui donne du Mbps en plus !

    Conclusion, même en ce qui concerne les perfs réseau, certaines distros se basent sur de vieux principes comme la swappiness. Quand on est sur un routeur 1Gbps, on peut tuner, mais il faut faire attention si on reste sur du 56k, ça peut polluer. D’où la nécessité de sauvegarder ce que contient /proc/sys/ avant de jouer sur ces paramètres 😉


    ? Je divise par zéro.

    #11714
    nam1962nam1962
    Maître des clés

    Hmm intéressant !
    Je ne me souvenais plus du réglage que j’avais proposé il y a deux ans !

    Pratiquement, comment fais-tu ? juste une modif de 99-sysctl.conf puis redémarrage ?


    ? Un jeune site que j'aime bien, la ferrari du T-shirt  ...bio en plus : https://goudronblanc.com
    C'est notre mécène ! 🙂

    #11717
    rogn...rogn…
    Participant

    Pour moi, le redémarrage c’est encore plus ouvrir le parapluie, car via sysctl -p les paramètres sont de suite appliqués. Pour rappel, c’est dans /proc que ça va taper donc c’est instantané. La swappiness et ces réglages vont de pair, mais j’imagine que d’autres ont déjà des paramètres custo donc le plus sage est de séparer les fichiers de configuration dans /etc/sysctl.d/

    Pour la pollution du réseau, j’imagine quand même que les routeurs ont des garde-fou mais on est jamais trop prudents. Notamment, je mets un treshold bien plus élevé que ce qu’Oracle ou IBM préconisent donc j’ai un serveur qui est mort de faim pour ainsi dire 😉
    Ensuite, ce sont les paramètres de selective acknowledgement et gradual speed increase qui sont peut-être à devoir remettre à 1 si jamais ça fout la zone.

    Avoir une sauvegarde de /proc/ est obligatoire avant de tuner ces paramètres (en ce qui me concerne, j’ai une VM où je peux les récupérer si besoin)

    Avant d’en faire un tuto, je dois encore affiner.


    ? Je divise par zéro.

7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.