À propos des paramètres du noyau Linux

J'ai récemment eu l'occasion de revoir les paramètres du noyau, alors notez-les.

Objectif de la définition des paramètres du noyau

Remarques

Paramètres du noyau

Après avoir examiné diverses informations de réglage au cours des dernières années, il semblait bon de définir les paramètres suivants.

performance

Le nom du paramètre Définir la valeur La description
fs.file-max Verification requise Limite du descripteur de fichier à l'échelle du système
kernel.threads-max Verification requise Nombre maximum de processus dans l'ensemble du système
net.core.netdev_max_backlog Verification requise Nombre maximum de paquets que le noyau peut mettre en file d'attente
net.netfilter.nf_conntrack_max Verification requise Ajustez le nombre maximum de connexions simultanées avec netfilter
vm.swappiness 0 Définissez la facilité de SWAP
* Si SWAP est exécuté même avec 0, SWAP est exécuté.

Sécurité

Le nom du paramètre Définir la valeur La description
kernel.sysrq 0 SysRq(Configuration requise)Désactiver la clé
net.ipv4.conf.all.accept_source_route 0 Désactiver le routage source
net.ipv4.conf.all.rp_filter 1 rp_filter(reverse path filter)Activer
net.ipv4.conf.default.rp_filter 1 rp_filter(reverse path filter)Activer
net.ipv4.ip_forward 0 Désactiver le transfert IP
net.ipv4.tcp_syncookies 1 tcp_Activer les cookies de synchronisation * Mesures SYN FLOOD

Réglage TCP / IP

Le nom du paramètre Définir la valeur La description
net.core.rmem_max Verification requise Définir la taille maximale du tampon de réception TCP
net.core.somaxconn Verification requise Longueur maximale de la file d'attente pour stocker les demandes de connexion acceptées par les sockets TCP
net.core.wmem_max Verification requise Taille maximale du tampon d'envoi TCP
net.ipv4.ip_local_port_range Verification requise TCP/Modifier la plage de ports de transmission IP
net.ipv4.tcp_fin_timeout 5〜30 Délai d'expiration du paquet FIN
net.ipv4.tcp_keepalive_intvl sec<75 Intervalle d'envoi du paquet TCP keepalive(Secondes)
net.ipv4.tcp_keepalive_time sec<7200 Il est temps d'envoyer un paquet TCP keepalive(Secondes)
net.ipv4.tcp_keepalive_probes count<9 Nombre de fois pour envoyer un paquet keepalive
net.ipv4.tcp_max_syn_backlog Verification requise Le nombre de connexions qui peuvent contenir une connexion qui accepte SYN par socket et ne reçoit pas ACK
net.ipv4.tcp_max_tw_buckets Verification requise TIME détenu par le système en même temps_Nombre maximum de prises WAIT
net.ipv4.tcp_orphan_retries Verification requise Nombre de renvois avant de mettre fin à la connexion TCP fermée à partir d'ici
net.ipv4.tcp_rfc1337 1 Conformez-vous à RFC1337
※TIME_Si RST est reçu en état WAIT, TIME_Fermez la prise sans attendre la fin de la période WAIT
net.ipv4.tcp_slow_start_after_idle 0 Désactiver le démarrage lent une fois la communication inactive
net.ipv4.tcp_syn_retries 3 Nombre de tentatives d'envoi de SYN TCP
net.ipv4.tcp_tw_reuse 1 TIME_Réutiliser la connexion WAIT

Considérez les éléments à régler en vous référant au profil réglé.

Il existe de nombreux éléments de réglage pour les paramètres du noyau, et il existe un outil conçu pour faciliter la gestion par les humains.

Dans le réglage, le réglage peut être effectué par un profil en fonction du type de serveur, et j'ai examiné les éléments à régler en référence à ces valeurs de réglage.

À propos du profil

Les profils sont préparés en fonction du type de serveur comme suit.

Puisque le profil décrit les paramètres typiques du noyau pour le réglage, considérons les paramètres du noyau en référence à cela.

$ ls -l /usr/lib/tuned/
total 56
drwxr-xr-x. 2 root root  4096 Sep  9  2019 balanced
drwxr-xr-x. 2 root root  4096 Sep  9  2019 desktop
-rw-r--r--  1 root root 14413 Mar 14  2019 functions
drwxr-xr-x. 2 root root  4096 Sep  9  2019 latency-performance
drwxr-xr-x. 2 root root  4096 Sep  9  2019 network-latency
drwxr-xr-x. 2 root root  4096 Sep  9  2019 network-throughput
drwxr-xr-x. 2 root root  4096 Sep  9  2019 powersave
drwxr-xr-x. 2 root root  4096 Sep  9  2019 recommend.d
drwxr-xr-x. 2 root root  4096 Sep  9  2019 throughput-performance
drwxr-xr-x. 2 root root  4096 Sep  9  2019 virtual-guest
drwxr-xr-x. 2 root root  4096 Sep  9  2019 virtual-host

Jetez un œil au modèle d'invité virtuel

Par la description ʻinclude = throughput-performance, vous pouvez voir que le modèle de throughput-performance` est inclus.

** * La ligne de commentaire est masquée car seule la valeur définie est affichée **

/usr/lib/tuned/virtual-guest/tuned.conf


[main]
summary=Optimize for running inside a virtual guest
include=throughput-performance

[sysctl]
vm.dirty_ratio = 30
vm.swappiness = 30

Voici le modèle débit-performances inclus.

Vous pouvez voir qu'il contient les paramètres du processeur et du disque en plus des paramètres du noyau.

/usr/lib/tuned/throughput-performance/tuned.conf


[main]
summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads

[cpu]
governor=performance
energy_perf_bias=performance
min_perf_pct=100

[disk]
readahead=>4096

[sysctl]
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
vm.swappiness=10

Paramètres du noyau pour l'invité virtuel

J'ai défini les paramètres du noyau définis en tant qu'essai et j'ai essayé de lister les valeurs réellement définies comme suit.

Il semble que s'il y a la même valeur de paramètre que le modèle inclus, il sera fusionné, mais comme il s'agit de vm.swappiness = 30, il ne remplace pas nécessairement après Inclure.

Le nom du paramètre Définir la valeur La description
vm.dirty_ratio 40 Quantité maximale absolue de mémoire système pouvant être remplie de pages sales avant d'être validées sur le disque
vm.swappiness 30 Définissez la facilité de SWAP
kernel.sched_min_granularity_ns 10000000 Période minimale du planificateur pour les cibles sur lesquelles une seule tâche s'exécute
kernel.sched_wakeup_granularity_ns 15000000 Granularité de préemption lorsqu'une tâche est lancée
vm.dirty_background_ratio 10 Lorsque le pourcentage de pages sales atteint cette valeur, pdflush exportera dans un arrière-plan de faible priorité.

Jetez un œil au modèle de débit réseau

Par la description ʻinclude = throughput-performance, vous pouvez voir que le modèle de throughput-performance` est inclus.

** * La ligne de commentaire est masquée car seule la valeur définie est affichée **

/usr/lib/tuned/network-throughput/tuned.conf


[main]
summary=Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
include=throughput-performance

[sysctl]
net.ipv4.tcp_rmem="4096 87380 16777216"
net.ipv4.tcp_wmem="4096 16384 16777216"
net.ipv4.udp_mem="3145728 4194304 16777216"

Le modèle inclus de "performance de débit" a déjà été décrit dans la section précédente et sera omis.

Réglage des paramètres du noyau pour le débit du réseau

J'ai défini les paramètres du noyau définis en tant qu'essai et j'ai essayé de lister les valeurs réellement définies comme suit.

Il semble que s'il y a la même valeur de paramètre que le modèle inclus, il sera fusionné, mais comme il s'agit de vm.swappiness = 30, il ne remplace pas nécessairement après Inclure.

Le nom du paramètre Définir la valeur La description
vm.dirty_ratio 40 Quantité maximale absolue de mémoire système pouvant être remplie de pages sales avant d'être validées sur le disque
vm.swappiness 30 Définissez la facilité de SWAP
kernel.sched_min_granularity_ns 10000000 Période minimale du planificateur pour les cibles sur lesquelles une seule tâche s'exécute
kernel.sched_wakeup_granularity_ns 15000000 Granularité de préemption lorsqu'une tâche est lancée
vm.dirty_background_ratio 10 Lorsque le pourcentage de pages sales atteint cette valeur, pdflush exportera dans un arrière-plan de faible priorité.
net.ipv4.tcp_rmem 4096 87380 16777216 Recevoir la taille du tampon du socket TCP(min, default, max)
net.ipv4.tcp_wmem 4096 16384 16777216 Taille du tampon d'envoi du socket TCP(min, default, max)
net.ipv4.udp_mem 3145728 4194304 16777216 Taille du tampon de socket UDP(min, default, max)

Indique s'il faut définir les paramètres du noyau en référence au profil réglé

en conclusion

Je pense qu'il est logique du point de vue des performances de sécurité de définir correctement les paramètres du noyau pour chaque serveur.

Récemment, la popularité des technologies de conteneurs telles que k8s augmente, mais même ainsi, il semble qu'il existe encore de nombreuses opportunités pour exploiter des serveurs, pas seulement sur le pré-cloud, donc je voudrais les définir de manière appropriée.

Lien de référence

Recommended Posts

À propos des paramètres du noyau Linux
À propos de Linux
À propos de Linux
À propos de Linux
À propos de Linux
[Linux] À propos de l'exportation
[Linux] À propos de PATH
Linux (à propos des groupes)
Linux (à propos du chemin du répertoire)
Version du noyau Linux 5.x (2/4)
Vérifiez la version du noyau Linux
Version du noyau Linux 5.x (3/4)
Connaissances de base sur Linux
Version du noyau Linux 5.x (4/4)
Version du noyau Linux 5.x (1/4)
À propos du processus que le noyau Linux gère le microcode x86
À propos de la construction de l'environnement Linux (CentOS)
Linux (À propos des fichiers et des répertoires)
Linux (à propos de l'ajout / de la suppression d'utilisateurs)
Compilation du noyau Linux pour DE10nano
Noyau Linux auto-construit avec clang
À propos des fichiers et des processus LINUX
Ce que j'ai appris sur Linux
Paramètres du noyau souvent modifiés
[Reconstruction du noyau LINUX] Mise à jour (4.18.0 → 5.8.8)
Noyau Linux, son rapport d'histoire de 29 ans
Essayez le mécanisme de verrouillage du noyau Linux
À propos de la construction de l'environnement Linux (VMware Virtual BOX)
[Linux] [module du noyau] Créer kthread dans le module du noyau
Linux
analyse de la source linux (noyau): appel système
À propos des commandes Linux Édition super basique
Les débutants ont découvert Unix (Linux).
[Linux] [C / C ++] Remarques sur le système de construction Waf
Compilation du noyau Linux (Linux 5.x sur Ubuntu 20.04)
[Linux] [module noyau] Comment passer des paramètres comme arguments lors du chargement d'un module noyau chargeable