Auteur Sujet: Linux 4.18 : gain de performance sur certains serveurs  (Lu 10657 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« le: 21 janvier 2019 à 07:26:10 »
J'ai fait passer plusieurs serveurs sous Ubuntu 18.04 du noyau 4.15 vers le noyau 4.18 : Gain de performance dans certains cas

Édit 1er août 2019: C'est maintenant le noyau Linux 5.0 qui est installé par les commandes ci-dessous

Pour passer au noyau 4.18, l'installation se fait simplement :
- Ubuntu 18.04 server : sudo apt install --install-recommends linux-generic-hwe-18.04
- Ubuntu 18.04 avec interface graphique : sudo apt install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
Redémarrer pour passer sur le noyau 4.18.

Cela a pour effet de basculer en mode "LTS Enablement Stacks" avec un Kernel qui sera upgradé tous les 6 mois.

En effet Ubuntu 18.04 propose au choix :
- De rester sur le Kernel 4.15 avec une prise en charge de 5 ans
- De passer de Kernel en Kernel tous les 6 mois jusqu'au Kernel d'Ubuntu 20.04 qui sera mis à jour jusqu'à la fin du support d'Ubunut 18.04



En installant linux-generic-hwe-18.04 (Kernel 4.18 aujourd'hui 5.x en juillet 2019) vous gardez  linux-generic d'installé et donc à chaque mise à jour, le noyau 4.15 se met lui aussi à jour alors qu'il n'est plus utilisé.


Pour supprimer ces composants inutilisés :
- Ubuntu 18.04 server : sudo apt purge linux-generic linux-image-generic linux-headers-generic ; sudo apt autoremove
- Ubuntu 18.04 avec interface graphique : sudo apt purge linux-generic linux-image-generic linux-headers-generic xserver-xorg ; sudo apt autoremove


Si vous avez fait la mise à jour d'Ubuntu 16.04 avec le noyeau HWE, retirez aussi ces vieux paquets :
sudo apt purge linux-generic-hwe-16.04 linux-image-generic-hwe-16.04 linux-headers-generic-hwe-16.04
(il est possible que linux-image-generic-hwe-16.04 soit déjà supprimé)



Pour revenir au noyau 4.15 :
1/ On installe le nouveau noyeau
- Ubuntu 18.04 server : sudo apt install --install-recommends linux-generic
- Ubuntu 18.04 avec interface graphique : sudo apt install --install-recommends linux-generic xserver-xorg
2/ On redémarrer dessus (il faut le sélectionner manuellement, car on boot sur le plus récent par défault
3/ On supprime l'installation des noyaux 4.18 :
Pour supprimer ces composants inutilisés :
- Ubuntu 18.04 server : sudo apt purge linux-generic-hwe-18.04 linux-image-generic-hwe-18.04 linux-headers-generic-hwe-18.04 ; sudo apt autoremove
- Ubuntu 18.04 avec interface graphique : sudo apt purge linux-generic-hwe-18.04 linux-image-generic-hwe-18.04 linux-headers-generic-hwe-18.04 xserver-xorg-hwe-18.04 ; sudo apt autoremove

4/ On supprime les noyaux installés (personnaliser le chiffre en fonction de la version installée chez vous)
sudo apt remove linux-{image,modules,modules-extra,headers}-4.18.0-36-generic linux-headers-hwe-4.18-4.18.0-36



Un exemple pour l'installation de 4.18:
# apt install --install-recommends linux-generic-hwe-18.04
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplèmentaires suivants seront installés :
  linux-headers-4.18.0-13 linux-headers-4.18.0-13-generic linux-headers-generic-hwe-18.04
  linux-image-4.18.0-13-generic linux-image-generic-hwe-18.04 linux-modules-4.18.0-13-generic
  linux-modules-extra-4.18.0-13-generic
Paquets suggérés :
  fdutils linux-hwe-doc-4.18.0 | linux-hwe-source-4.18.0 linux-hwe-tools
Les NOUVEAUX paquets suivants seront installés :
  linux-generic-hwe-18.04 linux-headers-4.18.0-13 linux-headers-4.18.0-13-generic
  linux-headers-generic-hwe-18.04 linux-image-4.18.0-13-generic linux-image-generic-hwe-18.04
  linux-modules-4.18.0-13-generic linux-modules-extra-4.18.0-13-generic
0 mis à jour, 8 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 65,4 Mo dans les archives.
Après cette opération, 324 Mo d'espace disque supplèmentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] o
Réception de:1 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-modules-4.18.0-13-generic amd64 4.18.0-13.14~18.04.1 [13,3 MB]
Réception de:2 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-image-4.18.0-13-generic amd64 4.18.0-13.14~18.04.1 [8 146 kB]
Réception de:3 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-modules-extra-4.18.0-13-generic amd64 4.18.0-13.14~18.04.1 [32,3 MB]
Réception de:4 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-image-generic-hwe-18.04 amd64 4.18.0.13.63 [2 540 B]
Réception de:5 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-headers-4.18.0-13 all 4.18.0-13.14~18.04.1 [10,5 MB]
Réception de:6 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-headers-4.18.0-13-generic amd64 4.18.0-13.14~18.04.1 [1 113 kB]
Réception de:7 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-headers-generic-hwe-18.04 amd64 4.18.0.13.63 [2 500 B]
Réception de:8 http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 linux-generic-hwe-18.04 amd64 4.18.0.13.63 [1 876 B]
65,4 Mo réceptionnés en 1s (116 Mo/s)                   
Sélection du paquet linux-modules-4.18.0-13-generic précédemment désélectionné.
(Lecture de la base de données... 110261 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../0-linux-modules-4.18.0-13-generic_4.18.0-13.14~18.04.1_amd64.deb ...
Dépaquetage de linux-modules-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Sélection du paquet linux-image-4.18.0-13-generic précédemment désélectionné.
Préparation du dépaquetage de .../1-linux-image-4.18.0-13-generic_4.18.0-13.14~18.04.1_amd64.deb ...
Dépaquetage de linux-image-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Sélection du paquet linux-modules-extra-4.18.0-13-generic précédemment désélectionné.
Préparation du dépaquetage de .../2-linux-modules-extra-4.18.0-13-generic_4.18.0-13.14~18.04.1_amd64.deb ...
Dépaquetage de linux-modules-extra-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Sélection du paquet linux-image-generic-hwe-18.04 précédemment désélectionné.
Préparation du dépaquetage de .../3-linux-image-generic-hwe-18.04_4.18.0.13.63_amd64.deb ...
Dépaquetage de linux-image-generic-hwe-18.04 (4.18.0.13.63) ...
Sélection du paquet linux-headers-4.18.0-13 précédemment désélectionné.
Préparation du dépaquetage de .../4-linux-headers-4.18.0-13_4.18.0-13.14~18.04.1_all.deb ...
Dépaquetage de linux-headers-4.18.0-13 (4.18.0-13.14~18.04.1) ...
Sélection du paquet linux-headers-4.18.0-13-generic précédemment désélectionné.
Préparation du dépaquetage de .../5-linux-headers-4.18.0-13-generic_4.18.0-13.14~18.04.1_amd64.deb ...
Dépaquetage de linux-headers-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Sélection du paquet linux-headers-generic-hwe-18.04 précédemment désélectionné.
Préparation du dépaquetage de .../6-linux-headers-generic-hwe-18.04_4.18.0.13.63_amd64.deb ...
Dépaquetage de linux-headers-generic-hwe-18.04 (4.18.0.13.63) ...
Sélection du paquet linux-generic-hwe-18.04 précédemment désélectionné.
Préparation du dépaquetage de .../7-linux-generic-hwe-18.04_4.18.0.13.63_amd64.deb ...
Dépaquetage de linux-generic-hwe-18.04 (4.18.0.13.63) ...
Paramétrage de linux-headers-4.18.0-13 (4.18.0-13.14~18.04.1) ...
Paramétrage de linux-headers-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Paramétrage de linux-modules-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Paramétrage de linux-headers-generic-hwe-18.04 (4.18.0.13.63) ...
Paramétrage de linux-image-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-43-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-43-generic
I: /vmlinuz is now a symlink to boot/vmlinuz-4.18.0-13-generic
I: /initrd.img is now a symlink to boot/initrd.img-4.18.0-13-generic
Paramétrage de linux-modules-extra-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
Paramétrage de linux-image-generic-hwe-18.04 (4.18.0.13.63) ...
Paramétrage de linux-generic-hwe-18.04 (4.18.0.13.63) ...
Traitement des actions différées (« triggers ») pour linux-image-4.18.0-13-generic (4.18.0-13.14~18.04.1) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.18.0-13-generic
/etc/kernel/postinst.d/x-grub-legacy-ec2:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-4.15.0-43-generic
Found kernel: /boot/vmlinuz-4.15.0-42-generic
Found kernel: /boot/vmlinuz-4.18.0-13-generic
Found kernel: /boot/vmlinuz-4.15.0-43-generic
Found kernel: /boot/vmlinuz-4.15.0-42-generic
Replacing config file /run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done

/etc/kernel/postinst.d/zz-update-grub:
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-4.18.0-13-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.18.0-13-generic
Image Linux trouvée : /boot/vmlinuz-4.15.0-43-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.15.0-43-generic
Image Linux trouvée : /boot/vmlinuz-4.15.0-42-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.15.0-42-generic
fait



Le passage en HWE pour Hardware Enablement entraîne une mises à jour tous les 6 mois pour les versions LTS d'Ubuntu, sans rien changer au reste de la distribution.
Le noyaux Linux et le serveur d’affichage sont là où il y le plus de gain de performances. Cela permet aussi a du matériel qui n'existait pas au moment d la sortie d'Ubuntu d'être pris en charge.

Exemple sur un serveur sans interface graphique :
$ sudo apt purge linux-generic linux-image-generic linux-headers-generic ; sudo apt autoremove
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  linux-headers-4.15.0-50 linux-headers-4.15.0-50-generic linux-image-4.15.0-50-generic
  linux-modules-4.15.0-50-generic linux-modules-extra-4.15.0-50-generic
Veuillez utiliser « apt autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
  linux-generic* linux-headers-generic* linux-image-generic*
0 mis à jour, 0 nouvellement installés, 3 à enlever et 0 non mis à jour.
Après cette opération, 46,1 ko d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] o
(Lecture de la base de données... 146726 fichiers et répertoires déjà installés.)
Suppression de linux-generic (4.15.0.50.52) ...
Suppression de linux-headers-generic (4.15.0.50.52) ...
Suppression de linux-image-generic (4.15.0.50.52) ...
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets suivants seront ENLEVÉS :
  linux-headers-4.15.0-50 linux-headers-4.15.0-50-generic linux-image-4.15.0-50-generic
  linux-modules-4.15.0-50-generic linux-modules-extra-4.15.0-50-generic
0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour.
Après cette opération, 334 Mo d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] o
(Lecture de la base de données... 146717 fichiers et répertoires déjà installés.)
Suppression de linux-headers-4.15.0-50-generic (4.15.0-50.54) ...
Suppression de linux-headers-4.15.0-50 (4.15.0-50.54) ...
Suppression de linux-modules-extra-4.15.0-50-generic (4.15.0-50.54) ...
Suppression de linux-image-4.15.0-50-generic (4.15.0-50.54) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.18.0-18-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.18.0-18-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-50-generic
/etc/kernel/postrm.d/x-grub-legacy-ec2:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-4.18.0-20-generic
Found kernel: /boot/vmlinuz-4.18.0-18-generic
Found kernel: /boot/vmlinuz-4.15.0-50-generic
Replacing config file /run/grub/menu.lst with new version
Found kernel: /boot/vmlinuz-4.18.0-20-generic
Found kernel: /boot/vmlinuz-4.18.0-18-generic
Replacing config file /run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done

/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-4.18.0-20-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.18.0-20-generic
Image Linux trouvée : /boot/vmlinuz-4.18.0-18-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.18.0-18-generic
fait
Suppression de linux-modules-4.15.0-50-generic (4.15.0-50.54) ...

On ne gagne de place avec la première commande, car ce sont les métapaquets qui sont supprimés (Un métapaquet est pour rassembler des paquets de la même famille : Il ne contiens que des dépendances à d'autres paquets). C'est autoremove qui va supprimer les noyaux inutiles si il y en a.

Ubuntu garde automatiquement les kernel utilisé et l'avant-dernier kernel (pratique en cas de problème sur la dernière version)
=> Le kernel 4.15 sera supprimé quand une nouvelle version du kernel 4.18 sera disponible.

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #1 le: 21 janvier 2019 à 07:40:24 »
Passons aux effet du Kernel 4.18 par rapport au Kernel 4.15

Sur ce serveur, de nombreux clients vont régulièrement télécharger un fichier de 10 Mo en http.

La mise à jour a été faite le samedi 12 janvier vers 13h00. Sur le graphe c'est visible car c'est le moment où le serveur a été redémarré :


Ce qui ne change pas :

Apache a toujours autant de requêtes :

Nombre de fichiers téléchargés par seconde  :


Répartition de l'utilisation des slots du serveur web Apache :


Débit des connexions Apache en Mo/s :


Trafic réseau en Gb/s :

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #2 le: 21 janvier 2019 à 07:47:45 »
Les gains de performance :

Load average (moyenne de la charge système) : La charge est divisée par 3 !


Usage du processeur Xeon E3-1240 v5 (1 cœur=100% => 4 cœurs hyper-threading, donne un maximum de 800%) : On va jusqu'à 800%


Temps d'attente (en milliseconde) pour charger un fichier Apache : La latence est clairement réduite


Erreurs réseau : Il n'y a plus d’erreurs réseau sut la carte Intel X710-DA2 :
Ce dernier point serait lié a la mise à jour du driver de la carte réseau :
- Linux 4.15 : Intel(R) Ethernet Connection XL710 Network Driver - version 2.1.14-k
- Linux 4.18 : Intel(R) Ethernet Connection XL710 Network Driver - version 2.3.2-k


vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #3 le: 21 janvier 2019 à 08:23:01 »
Le point négatif :

La consommation d'énergie de la machine a clairement augmentée !

Consommation électrique du serveur Dell R330 (en Watts): La donnée est remontée avec des paliers de 14 watts :


Température de l'air en degrés d’entrée (vert) / sortie (bleu). (40°c correspond au seuil d’alerte pour l'entrée d'air) : L'air de sortie est presque pris trois fois plus de calories !


Température du CPU (vert) / PCH (bleu). Le PCH (Platform Controller Hub) est un chipset Intel sur la carte mère :


vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #4 le: 21 janvier 2019 à 08:28:02 »
J'ai enfin réglé mon problème décrit dans Perte du réseau 10Gb/s (driver i40e) depuis le passage au Kernel 4.15

Ce serveur utilise la carte Intel Ethernet Converged Network Adapter X710-DA2 :


J'avais les 3 lignes qui s'affichent boucle :
[   92.892084] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 9, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[   92.892105] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 10, hung_queue 9
[   92.892111] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery unsuccessful



Dmesg juste avant la mise à jour 4.15 => 4.18 :

$ cat kernel415.txt | grep i40e
[    1.989924] i40e: Intel(R) Ethernet Connection XL710 Network Driver - version 2.1.14-k
[    1.997200] i40e: Copyright (c) 2013 - 2014 Intel Corporation.
[    2.074092] i40e 0000:01:00.0: fw 6.80.48812 api 1.7 nvm 6.00 0x80003751 18.5.17
[    2.416372] i40e 0000:01:00.0: MAC address: 3c:fd:fe:1d:90:20
[    2.448138] i40e 0000:01:00.0 eth1: NIC Link is Up, 10 Gbps Full Duplex, Flow Control: None
[    2.459766] i40e 0000:01:00.0: PCI-Express: Speed 8.0GT/s Width x8
[    2.469242] i40e 0000:01:00.0: Features: PF-id[0] VFs: 64 VSIs: 66 QP: 16 RSS FD_ATR FD_SB NTUPLE DCB VxLAN Geneve PTP VEPA
[    2.482518] i40e 0000:01:00.1: fw 6.80.48812 api 1.7 nvm 6.00 0x80003751 18.5.17
[    2.726118] i40e 0000:01:00.1: MAC address: 3c:fd:fe:1d:90:22
[    2.730796] i40e 0000:01:00.1: PCI-Express: Speed 8.0GT/s Width x8
[    2.731533] i40e 0000:01:00.1: Features: PF-id[1] VFs: 64 VSIs: 66 QP: 8 RSS FD_ATR FD_SB NTUPLE DCB VxLAN Geneve PTP VEPA
[    2.732510] i40e 0000:01:00.0 enp1s0f0: renamed from eth1
[    2.772219] i40e 0000:01:00.1 enp1s0f1: renamed from eth0
[   10.972080] NETDEV WATCHDOG: enp1s0f0 (i40e): transmit queue 5 timed out
[   10.972199]  sysimgblt fb_sys_fops aesni_intel i40e aes_x86_64 drm tg3 crypto_simd glue_helper cryptd ahci ptp i2c_i801 megaraid_sas libahci pps_core wmi video
[   10.972469] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 5, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[   10.972473] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 5
[   10.972865] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[   16.860029] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 2, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[   16.860034] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 2, hung_queue 2
[   16.910106] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[   50.908082] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 8, NTC: 0x0, HWB: 0x0, NTU: 0x1ec, TAIL: 0x1ec, INT: 0x1
[   50.908105] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 8
[   50.908990] i40e 0000:01:00.0: VSI seid 388 Tx ring 8 disable timeout
[   61.916035] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 7, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[   61.916042] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 2, hung_queue 7
[   61.966268] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[   95.963934] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 8, NTC: 0x0, HWB: 0x0, NTU: 0x1ec, TAIL: 0x1ec, INT: 0x1
[   95.963956] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 8
[   95.964871] i40e 0000:01:00.0: VSI seid 388 Tx ring 8 disable timeout
[  136.923847] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 1, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[  136.923853] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 1
[  136.924249] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[  167.899842] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 1, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[  167.899847] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 1
[  167.900234] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[  234.971837] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 1, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[  234.971841] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 1
[  234.972181] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[  245.979857] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 7, NTC: 0x0, HWB: 0x0, NTU: 0x1, TAIL: 0x1, INT: 0x1
[  245.979861] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 2, hung_queue 7
[  246.029898] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[  254.939874] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 10, NTC: 0x0, HWB: 0x0, NTU: 0x3, TAIL: 0x3, INT: 0x1
[  254.939881] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 3, hung_queue 10
[  254.940664] i40e 0000:01:00.0: VSI seid 388 Tx ring 8 disable timeout
[  258.128982] i40e 0000:01:00.0 enp1s0f0: NIC Link is Down
[  259.419289] i40e 0000:01:00.0 enp1s0f0: NIC Link is Up, 10 Gbps Full Duplex, Flow Control: None
[  260.974189] i40e 0000:01:00.0: VSI seid 388 Tx ring 8 disable timeout
[  590.043848] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 7, NTC: 0x0, HWB: 0x0, NTU: 0x2, TAIL: 0x2, INT: 0x1
[  590.043850] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 7
[  590.044154] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout
[ 1480.923898] i40e 0000:01:00.0 enp1s0f0: tx_timeout: VSI_seid: 388, Q 7, NTC: 0x0, HWB: 0x0, NTU: 0x2, TAIL: 0x2, INT: 0x1
[ 1480.923900] i40e 0000:01:00.0 enp1s0f0: tx_timeout recovery level 1, hung_queue 7
[ 1480.924221] i40e 0000:01:00.0: VSI seid 388 Tx ring 0 disable timeout

Dmesg avec Linux 4.18 :
$ dmesg | grep i40e
[    2.018408] i40e: Intel(R) Ethernet Connection XL710 Network Driver - version 2.3.2-k
[    2.018409] i40e: Copyright (c) 2013 - 2014 Intel Corporation.
[    2.072674] i40e 0000:01:00.0: fw 6.80.48812 api 1.7 nvm 6.00 0x80003751 18.5.17
[    2.455307] i40e 0000:01:00.0: MAC address: 3c:fd:fe:1d:90:20
[    2.519883] i40e 0000:01:00.0 eth0: NIC Link is Up, 10 Gbps Full Duplex, Flow Control: None
[    2.531134] i40e 0000:01:00.0: PCI-Express: Speed 8.0GT/s Width x8
[    2.540199] i40e 0000:01:00.0: Features: PF-id[0] VFs: 64 VSIs: 66 QP: 16 RSS FD_ATR FD_SB NTUPLE DCB VxLAN Geneve PTP VEPA
[    2.551905] i40e 0000:01:00.1: fw 6.80.48812 api 1.7 nvm 6.00 0x80003751 18.5.17
[    2.798267] i40e 0000:01:00.1: MAC address: 3c:fd:fe:1d:90:22
[    2.803563] i40e 0000:01:00.1: PCI-Express: Speed 8.0GT/s Width x8
[    2.804297] i40e 0000:01:00.1: Features: PF-id[1] VFs: 64 VSIs: 66 QP: 8 RSS FD_ATR FD_SB NTUPLE DCB VxLAN Geneve PTP VEPA
[    2.805384] i40e 0000:01:00.1 enp1s0f1: renamed from eth1
[    2.860222] i40e 0000:01:00.0 enp1s0f0: renamed from eth0

Problème résolut !

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #5 le: 21 janvier 2019 à 08:39:53 »
Note : J'ai toujours des "interrupt took too long" comme avec les noyaux précédents.

Voici des exemples sur 9 serveurs tous mis à jour avec Linux 4.18 avec un uptime compris entre 8,5 et 9 jours :


[28488.236350] perf: interrupt took too long (2520 > 2500), lowering kernel.perf_event_max_sample_rate to 79250
[42012.322952] perf: interrupt took too long (3239 > 3150), lowering kernel.perf_event_max_sample_rate to 61750
[71442.327409] perf: interrupt took too long (4095 > 4048), lowering kernel.perf_event_max_sample_rate to 48750
[195252.479717] perf: interrupt took too long (5156 > 5118), lowering kernel.perf_event_max_sample_rate to 38750

[27323.840219] perf: interrupt took too long (2503 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[52408.059463] perf: interrupt took too long (3185 > 3128), lowering kernel.perf_event_max_sample_rate to 62750
[97505.461197] perf: interrupt took too long (4055 > 3981), lowering kernel.perf_event_max_sample_rate to 49250
[167776.701831] perf: interrupt took too long (5134 > 5068), lowering kernel.perf_event_max_sample_rate to 38750

[28495.322337] perf: interrupt took too long (2586 > 2500), lowering kernel.perf_event_max_sample_rate to 77250
[48906.759923] perf: interrupt took too long (3246 > 3232), lowering kernel.perf_event_max_sample_rate to 61500
[65281.779986] perf: interrupt took too long (4121 > 4057), lowering kernel.perf_event_max_sample_rate to 48500
[150281.488535] perf: interrupt took too long (5152 > 5151), lowering kernel.perf_event_max_sample_rate to 38750

[59234.091822] perf: interrupt took too long (2516 > 2500), lowering kernel.perf_event_max_sample_rate to 79250
[83866.594514] perf: interrupt took too long (3155 > 3145), lowering kernel.perf_event_max_sample_rate to 63250
[176535.266527] perf: interrupt took too long (3957 > 3943), lowering kernel.perf_event_max_sample_rate to 50500

[12972.757898] perf: interrupt took too long (2502 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[19024.196855] perf: interrupt took too long (3221 > 3127), lowering kernel.perf_event_max_sample_rate to 62000
[38811.969523] perf: interrupt took too long (4032 > 4026), lowering kernel.perf_event_max_sample_rate to 49500

[33336.950886] perf: interrupt took too long (2503 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[59563.282595] perf: interrupt took too long (3207 > 3128), lowering kernel.perf_event_max_sample_rate to 62250
[121678.160428] perf: interrupt took too long (4079 > 4008), lowering kernel.perf_event_max_sample_rate to 49000

[11993.509041] perf: interrupt took too long (2502 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[29354.505907] perf: interrupt took too long (3137 > 3127), lowering kernel.perf_event_max_sample_rate to 63750

[18395.488094] perf: interrupt took too long (2601 > 2500), lowering kernel.perf_event_max_sample_rate to 76750
[67670.405646] perf: interrupt took too long (3274 > 3251), lowering kernel.perf_event_max_sample_rate to 61000

[95478.122109] perf: interrupt took too long (2501 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[139099.892251] perf: interrupt took too long (3183 > 3126), lowering kernel.perf_event_max_sample_rate to 62750


Free_me

  • Abonné Free fibre
  • *
  • Messages: 3 349
  • Marseille
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #6 le: 21 janvier 2019 à 10:34:38 »
pour la difference de perf et l'augmentation de conso ca ressemble plus au fait que le mecanisme d'economie d'energie soit desactivé ou un truc dans le genre. Donc ca pulse plus car le cpu est tjrs a 100% et donc ca consomme plus... Enfin c'est une idée.

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #7 le: 21 janvier 2019 à 14:31:22 »
Le mécanisme d'économie d'énergie n'est pas désactivé, car on dépasse les 100 watts sur ces machines sans son activation.

Il semble en effet certain que les états pour changer de mode ont été modifiés et que cela apporte dans ce cas là un gain de performance et de consommation importante.

Dans d'autres cas comme un miroir Ubuntu, où la aussi on a essentiellement du trafic http avec Apache je ne vois pas de gain pour le passage du noyau 4.15 => 4.18 alors que je suis sur le même type d'hardware :

La mise à jour vers linux 4.18 a été faite au niveau du trait rouge visible sous chaque graphe :


Trafic réseau en Gb/s : (graphique présent pour montrer que ici c'est moins stable que l'exemple précédent)


Temps d'attente (en milliseconde) pour charger un fichier Apache : aucun changement


Consommation électrique du serveur Dell R330 (en Watts): on serait sur une petite baisse de la consommation électrique


Pour la température, attention, il y a eu un changement la veille de la température de la salle :

Température de l'air en degrés d’entrée (vert) / sortie (bleu). (40°c correspond au seuil d’alerte pour l'entrée d'air) :


Température du CPU (vert) / PCH (bleu). Le PCH (Platform Controller Hub) est un chipset Intel sur la carte mère :

hwti

  • Abonné Orange Fibre
  • *
  • Messages: 2 237
  • Chambly (60)
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #8 le: 22 janvier 2019 à 09:37:32 »
https://www.phoronix.com/scan.php?page=news_item&px=PState-Powersave-IO-Boost
Ce sont peut-être ces changements qui augmentent la fréquence du CPU, ce qui améliore les performances au détriment de la consommation.

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #9 le: 22 janvier 2019 à 09:50:40 »
Cela semble probable.

Je met la traduction du paragraphe le plus intéressant :

Dans certains cas, il est possible d'ajuster les performances de manière dynamique, par exemple, lorsqu'un processeur est réveillé suite à l'achèvement d'entrées / sorties ou lorsque le thread est migré vers un nouveau processeur. Dans ce cas, l’algorithme HWP mettra un certain temps à générer l’utilisation et à accélérer les états P. Cela peut donc entraîner une baisse des performances de certaines charges de travail avec entrées / sorties et des charges de travail qui ont tendance à migrer vers un nouveau processeur. L'idée de cette série de correctifs est d'améliorer temporairement les performances de manière dynamique dans ces cas. Cela s'applique uniquement lorsque l'utilisateur utilise la stratégie powersave, et non dans la stratégie de performance.

Leurs tests n'ont révélé aucun changement dans l'utilisation de la consommation en mode veille, mais sous Dbench, les performances ont été améliorées de 50%, 10% avec Tiobench et FIO, environ 15% avec SQLite et environ 10% de mieux pour le codage vidéo x264.

Espérons que ces correctifs seront jugés prêts pour le prochain cycle Linux 4.18.

Fuli10

  • Abonné Free fibre
  • *
  • Messages: 1 011
  • Conflans Sainte Honorine (78)
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #10 le: 14 février 2019 à 09:03:40 »
C'est bizarre. Chez moi sur un serveur dell à base de Xeon E3 1270v2 qui est 99% du temps en idle, j'ai plutôt remarqué une baisse de conso de 4W en moyenne lors du passage au kernel 4.18.
Je n'ai pas de mesure en charge par contre.

vivien

  • Administrateur
  • *
  • Messages: 47 916
    • Twitter LaFibre.info
Linux 4.18 : gain de performance sur certains serveurs
« Réponse #11 le: 01 août 2019 à 21:10:25 »
1er août 2019 : Migration automatique du noyau Linux 4.18 vers le noyau Linux 5.0 pour Ubuntu 18.04 avec noyeau HWE

La migration est automatique pour tous ceux qui utilisent le noyau HWE ("LTS Enablement Stacks") d'Ubuntu 18.04

Si vous êtes en noyau 4.15, il est possible de passer en 5.0 en suivant l'explication sur le premier message de ce sujet.

Si vous êtes en noyau 4.18, la migration est automatique :





J'ai noté une petit problème avec Munin, car  /sys/block/<dev>/stat a gagné 4 nouvelles colonnes depuis le noyeau 4.19 :

Name            units         description
----            -----         -----------
read I/Os       requests      number of read I/Os processed
read merges     requests      number of read I/Os merged with in-queue I/O
read sectors    sectors       number of sectors read
read ticks      milliseconds  total wait time for read requests
write I/Os      requests      number of write I/Os processed
write merges    requests      number of write I/Os merged with in-queue I/O
write sectors   sectors       number of sectors written
write ticks     milliseconds  total wait time for write requests
in_flight       requests      number of I/Os currently in flight
io_ticks        milliseconds  total time this block device has been active
time_in_queue   milliseconds  total wait time for all requests
discard I/Os    requests      number of discard I/Os processed
discard merges  requests      number of discard I/Os merged with in-queue I/O
discard sectors sectors       number of sectors discarded
discard ticks   milliseconds  total wait time for discard requests



Voici la petite modificaiton à faire pour dans le plugin diskstats de Munin :

sudo nano /etc/munin/plugins/diskstats

Chercher 11
Supprimer les deux lignes suivantes :

        croak "'$stats_file' doesn't contain exactly 11 values. Aborting"
          if ( @elems != 11 );

Remplacer par :
        # before linux 4.19, /sys/block/<dev>/stat had 11 fields.
        # in 4.19, four fields for tracking DISCARDs have been added
        croak "'$stats_file' contains the wrong amount of values. Aborting"
          if ( @elems != 11 && @elems != 15 );

Et voila !