Aller au contenu principal
Sujet: sysctl pour améliorer la performance de votre système. (Lu 5559 fois) sujet précédent - sujet suivant

sysctl pour améliorer la performance de votre système.

On peut ajuster les performances de son Noyau Gratuitement.

Les réglages du noyau sont utilisés pour personnaliser le comportement de votre système Linux opensuse au démarrage.  

Avant d'avoir adopter définitivement Opensuse Tumbleweed, j'ai expérimenté ces réglages sur :

- Arch Linux
- Linux Mint & LMDE
- Fedora
& Debian Testing...

Çà vaut le coup d'y regarder et faire des réglages selon votre configuration matériel.

La 1ère chose

- Adapter votre swap, si vous l'avez configurer (swap pas obligatoire selon la quantité de mémoire physique et utilisation de travail , multimédia en générale)


vm.swappiness = 10
vm.vfs_cache_pressure = 50
vm.dirty_background_ratio = 10
vm.dirty_background_bytes = 0
vm.dirty_ratio = 20
vm.dirty_bytes = 0
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000

vm.dirty_background_ratio est le pourcentage de mémoire système qui peut être rempli et doivent encore être écrites sur le disque - avant  les processus d'arrière-plan. Ma  config est de 10%, de 8 go , c'est 800 Mo de données qui peuvent être stockées dans la RAM avant écriture.

vm.dirty_ratio est la quantité maximale absolue de mémoire système pouvant être remplie 

vm.dirty_background_bytes et vm.dirty_bytes 

vm.dirty_expire_centisecs est la durée pendant laquelle quelque chose peut rester dans le cache avant de devoir être écrit. Dans ce cas, c'est 30 secondes. 

vm.dirty_writeback_centisecs est la fréquence à laquelle les processus  se réveillent et vérifient si du travail doit être fait.

vm.vfs_cache_pressureCette option contrôle la tendance du noyau à récupérer la mémoire utilisée pour la mise en cache des objets

vm.swappiness :réduire la valeur de swappiness signifie que le noyau sera moins susceptible d'échanger des pages mémoire moins fréquemment utilisées. Ainsi, le noyau sera plus susceptible de conserver ces pages en cache dans la RAM pour un accès plus rapide.

Il est préférable d'éviter de swaper, et que tous les processus se passe en mémoire, car plus rapide que le swap. retenez que le swap, est une alternative au risque de manque de mémoire.


Re : sysctl pour améliorer la performance de votre système.

Répondre #1
Coucou

Juste un petit rappel de cette rubrique :

- Uniquement des propositions techniques avancées
- Pour les résolutions de problèmes, voir les rubriques concernées.

Ceci afin d'éviter les doublons de rubriques.

Re : sysctl pour améliorer la performance de votre système.

Répondre #2
Précisions concernant sysctl

J'ai utilisé le paramètre net.ipv4.icmp_echo_ignore_all comme exemple.
Défini à 1, l'hôte ne renverra aucun paquet "echo_reply"; défini à 0, il enverra un paquet echo_reply (à chaque paquet echo_request reçu).

  • Voir la valeur actuelle d'un paramètre

    • avec la commande sysctl (en root)
      # sysctl net.ipv4.icmp_echo_ignore_all
      net.ipv4.icmp_echo_ignore_all = 1

      et pour récupérer la valeur précise, c'est avec l'option -n (en root)
      toto-PC:/home/thierry # sysctl -n net.ipv4.icmp_echo_ignore_all
      1

    • avec la commande cat (fonctionne aussi avec un utilisateur non root); toutes les paramètres sont disponibles dans le dossier /proc/sys/
      thierry@toto-PC:~> cat /proc/sys/net/ipv4/icmp_echo_ignore_all
      1

  • Configurer un paramètre dont la valeur est utilisée par le noyau.

    • temporairement et instantanément
      • Avec la commande sysctl (en root) (w → write)
        sysctl -w net.ipv4.icmp_echo_ignore_all=0
      • Avec la commande echo (en root) et ce qui est contenu dans le répertoire /proc/sys/
        echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    • à chaque boot (donc durablement)

      Il est préférable de créer un fichier .conf dans le dossier/etc/sysctl.d plutôt que d'écrire directement dans le fichier /etc/sysctl. Le risque étant qu'une mise à jour change le fichier /etc/sysctl, alors que ce n'est pas le cas avec les fichiers .conf du dossier /etc/sysctl.d

      J'ai créé par exemple le fichier exemple.conf (on pourrait y écrire plusieurs lignes, chacune d'elles définirait un paramètre):
      thierry@toto-PC:~> cat /etc/sysctl.d/exemple.conf 
      net.ipv4.icmp_echo_ignore_all=1
      Après le redémarrage de mon ordinateur, il est devenu impossible de la pinguer d'un autre hôte.

      Essai de ping d'une VM ubuntu (192.168.0.233):
      thierry@thierry-VirtualBox:~$ ping -c 2 192.168.0.81
      PING 192.168.0.81 (192.168.0.81) 56(84) bytes of data.

      --- 192.168.0.81 ping statistics ---
      2 packets transmitted, 0 received, 100% packet loss, time 1005ms

      Vu du sniffer wireshark, aucun paquet paquet echo reply:
      1	0.000000000	192.168.0.233	192.168.0.81	ICMP	98	Echo (ping) request  id=0x0001, seq=1/256, ttl=64 (no response found!)
      2 0.985117040 192.168.0.233 192.168.0.81 ICMP 98 Echo (ping) request  id=0x0001, seq=2/512, ttl=64 (no response found!)

      Remarque:
      Il est possible d'utiliser le fichier que l'on a créé instantanément sans redémarrer, avec la commande sysctl et l'option -p
      toto-PC:/home/thierry # sysctl net.ipv4.icmp_echo_ignore_all 
      net.ipv4.icmp_echo_ignore_all = 1
      toto-PC:/home/thierry # vim /etc/sysctl.d/exemple.conf
      toto-PC:/home/thierry # cat /etc/sysctl.d/exemple.conf
      net.ipv4.icmp_echo_ignore_all=0

      toto-PC:/home/thierry # sysctl -p /etc/sysctl.d/exemple.conf
      net.ipv4.icmp_echo_ignore_all = 0
      toto-PC:/home/thierry # sysctl net.ipv4.icmp_echo_ignore_all
      net.ipv4.icmp_echo_ignore_all = 0
      Mon ordinateur est répond maintenant au ping "echo-request" par un ping "echo-reply"…

Tout cela fonctionne notamment avec les paramètres concernant la mémoire d'échange (swap) présentés par @yoman dans le post précédent.
Ils sont présents dans /proc/sys/vm/

 

Re : sysctl pour améliorer la performance de votre système.

Répondre #3
Bonjour

Très bon post sur ICMP, pour poursuivre dans la même lancée je te propose un peu plus de sécurité dans la gestion des ICMP & et ICMPv6, pour les personnes qui ont accès à leur réseau LAN depuis l’extérieure.

Dans SYSCTL pour ICMP & ICMPv6, (cf post de @denebe‍ 

# Désactiver l'envoi de réponses ICMP en broadcast (DoS protection)
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Désactiver les réponses ICMP à l'écoute des requêtes broadcast
net.ipv4.icmp_echo_ignore_all = 1

# Désactiver les annonces d'erreur ICMP
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ne pas accepter les erreurs ICMP causées par le forwarding
net.ipv4.conf.all.log_martians = 1

# Ignorer les réponses ICMP pour les paquets multicast ou anycast
net.ipv4.icmp_echo_ignore_multicast = 1

# Désactiver l'envoi de réponses ICMPv6 en broadcast (DoS protection)
net.ipv6.icmp.echo_ignore_broadcasts = 1

# Désactiver les réponses ICMPv6 à l'écoute des requêtes broadcast
net.ipv6.icmp.echo_ignore_all = 1

# Désactiver les annonces d'erreur ICMPv6
net.ipv6.icmp.ignore_bogus_error_responses = 1

# Ne pas accepter les erreurs ICMPv6 causées par le forwarding
net.ipv6.conf.all.log_martians = 1

# Ignorer les réponses ICMPv6 pour les paquets multicast ou anycast
net.ipv6.icmp.echo_ignore_multicast = 1

Pour Parefeu IPTAPBLES IPV4

# Autoriser le ping (ICMP echo-request)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

# Bloquer les types d'attaques ICMP
iptables -A INPUT -p icmp --icmp-type redirect -j DROP
iptables -A INPUT -p icmp --icmp-type source-quench -j DROP
iptables -A INPUT -p icmp --icmp-type time-exceeded -j DROP
iptables -A INPUT -p icmp --icmp-type parameter-problem -j DROP
Rendre la règle persistante selon les outils de votre OS.

Pour Parefeu IPTAPBL
ES IPV6

# Autoriser le ping (ICMPv6 echo-request)
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT

# Bloquer les types d'attaques ICMPv6
ip6tables -A INPUT -p icmpv6 --icmpv6-type destination-unreachable -j DROP
ip6tables -A INPUT -p icmpv6 --icmpv6-type packet-too-big -j DROP
ip6tables -A INPUT -p icmpv6 --icmpv6-type time-exceeded -j DROP
ip6tables -A INPUT -p icmpv6 --icmpv6-type parameter-problem -j DROP
Rendre la règle persistante selon les outils de votre OS. 
 
Cette configuration devrait permettre de maintenir le trafic réseau normal, d'autoriser les pings pour les tests réseau, et de renforcer la sécurité en minimisant les risques d'attaques ICMP et ICMPv6.

Je n'ai pas testé avec le parefeu d'Opensuse, j'ai toujours utilisé iptables ou ufw

ATTENTION CES CONFIGURATIONS PEUVENT ÊTRE AMELIORÉES OU CORRIGÉES