Bonjour,
ravi que la solution fonctionne,
pour informations supplémentaire, mais je ne pense pas que tu en
es besoin, mais les optimisations sur Linux peuvent aller beaucoup
plus loin, grâce au "SMP affinty", qui permet sur des processeurs
multicœur de répartir la gestion des interruptions entre cœur,
soit en modifiant soit même les valeurs d'IRQ dans /proc/irq (et
en vérifiant dans /proc/interrupts), ou en utilisant le daemon
irqbalance qui permet de faire la répartition des interruptions
entre cœurs.
Dans le cas du réseau, cela peux être intéressant lorsque que le
contrôleur réseau (NIC) à plusieurs file (queue) d'envois (tx) et
de réception (rx), il est alors possible de répartir les
interruptions entre cœurs.
un exemple sur un serveurs qui à une contrôleur réseau avec deux
files :
$ cat /proc/interrupts | egrep "CPU|12[6-9]"
CPU0 CPU1 CPU2 CPU3
126: 21 11003583 5731788 7610247 IR-PCI-MSI
1048577-edge enp2s0-rx-0
127: 4 120315 1111185 196090 IR-PCI-MSI
1048578-edge enp2s0-rx-1
128: 24 1734333 3689960 2396735 IR-PCI-MSI
1048579-edge enp2s0-tx-0
129: 23 1021631 3880657 2893540 IR-PCI-MSI
1048580-edge enp2s0-tx-1
On peux voir, dans mon cas, que pour une file "rx-0" la
répartition est faite sur les 4 cœurs, mais il serait possible de
réserver le CPU0 à rx-0, le CPU1 à rx-1, le CPU2 à tx-0 et bien
sur CPU3 à tx-1.
Enfin pour dire que les solutions d'optimisation sous Linux sont
gigantesques, mais pas toujours très simple à appréhender (je
parle pour moi :) ), et surtout à utiliser dans les bonnes
situations.
Bonne fin d’années à tous.
Loïc
Le 29/12/2018 à 08:53, JUPIN Alain a
écrit :
Bonjour,
Loin de moi l'idée de ne pas vouloir donner de retour, mais
j'attendais que le temps passe pour voir si la solution est
pérenne dans le temps. Et c'est le cas.
A priori, le seul fait d'avoir passé la gestion des tso, gso et
gro par le CPU suffit à résoudre mon problème.
Pour l'uso, il ne semble pas poser de problème, mais il faut dire
qu'hormis le DNS (qui n'est qu'un cache local pour le serveur), je
n'en fais pas usage.
Merci à vous
Le 18/12/2018 à 14:29, Yahoo a
écrit :
Bonjour,
je n'avais pas encore vue cette erreur, mais en modifiant le
gso (generic-segmentation-offload) gro
(generic-receive-offload) et tso (tcp-segmentation-offload:),
tu n'as pas touché a (ufo) udp-fragmentation-offload settings
Tu peux quand même vérifier si les options sont bien à off
avec ethtool -K <int> .
Sinon, pour info, mais c'est sûrement déjà fait, il faut bien
inscrire les modifications au démarrage du serveur, sinon les
modifications seront perdus après "reboot",
pour ma part je les ajoute en post-up dans le fichiers des
interfaces.
Tiens nous au courant si cela à fonctionné.
Loïc
Le 18/12/2018 à 10:26, JUPIN Alain
a écrit :
Bonjour,
Merci pour le retour, j'avais effectivement lu sur des forums
la même chose (chez un autre hébergeur).
Et en effet, les gro et gso sont gérés par la carte NIC
Features for eno1:
Cannot get device udp-fragmentation-offload settings:
Operation not supported
tcp-segmentation-offload: on
generic-segmentation-offload: on
generic-receive-offload: on
L'opération a été effectuée cette nuit, je vais voir si cela
est efficace ou pas dans le temps (çà plantait ou bout de 2 ou
3 jours) !
Pour info, j'ai quand même eu le retour suivant à la commande
ethtool -K eno1 gso off gro off tso off
Cannot get device udp-fragmentation-offload settings:
Operation not supported
Cannot get device udp-fragmentation-offload settings:
Operation not supported
Alain JUPIN
Le 17/12/2018 à 16:42, Yahoo a écrit :
Bonjour,
Il semble que la carte réseau à du mal à gérer la
segmentation des paquets,
dans ce cas là, il peux être bien de décharger cette
opération au CPU.
d'après les logs ton serveur hébergé, tu est sur une
carte NIC intel (e1000e), qui as du mal a décharger.
Vérifie si ta carte NIC gère le déchargement de la
segmentation de paquets :
ethtool -k <interface>
pour le savoir vérifier les ligne (gso et gro) :
tcp-segmentation-offload: on
generic-segmentation-offload: on
generic-receive-offload: on
si elles sont à on c'est que c'est la carte NIC qui le
gére,
essaye de les passer à off pour que ce soit le CPU qui le
gérent
ethtool -K <interface> gso off gro off tso off
(attention cela peux engendre une perte de connexion, à
faire en KVM)
J'ai dèjà eu le soucis sur des serveurs, mais avec
l'utilisation de QoS.
En espérant pouvoir aider
Loïc
Le 17/12/2018 à 14:26, JUPIN
Alain a écrit :
Bonjour,
Sur un serveur dédié chez OVH, sous Debian 9.4 qui fait
tourner Proxmox 5.2-5 qui héberge 4 VM (toutes sous Linux
aussi).
Régulièrement (au bout de quelques jours), le serveur
plante, plus de réponse au ping sur l'IP principale du
serveur, d'où le déclenchement d'un reset "Hard".
Évidemment j'essaye de trouver la cause de ce plantage.
Je n'ai rien trouvé du coté du disque dur (via smartctl).
Mais j'ai ceci dans le log "syslog". Lors du plantage,
cette séquence a débuté à 10h57 (heure du serveur qui est
en UTC), à 11h03 j'ai perdu le ping, elle a perdurée
jusqu'à 11h08, heure du reboot par OVH.
Dec 17 11:02:33 cygnus kernel: [408638.686407] e1000e
0000:00:19.0 eno1: Detected Hardware Unit Hang:
Dec 17 11:02:33 cygnus kernel: [408638.686407]
TDH <0>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
TDT <2>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
next_to_use <2>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
next_to_clean <0>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
buffer_info[next_to_clean]:
Dec 17 11:02:33 cygnus kernel: [408638.686407]
time_stamp <10615a7a6>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
next_to_watch <0>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
jiffies <10615b058>
Dec 17 11:02:33 cygnus kernel: [408638.686407]
next_to_watch.status <0>
Dec 17 11:02:33 cygnus kernel: [408638.686407] MAC
Status <40080083>
Dec 17 11:02:33 cygnus kernel: [408638.686407] PHY
Status <796d>
Dec 17 11:02:33 cygnus kernel: [408638.686407] PHY
1000BASE-T Status <3800>
Dec 17 11:02:33 cygnus kernel: [408638.686407] PHY
Extended Status <3000>
Dec 17 11:02:33 cygnus kernel: [408638.686407] PCI
Status <10>
Dec 17 11:02:33 cygnus systemd-networkd[924]: eno1: Lost
carrier
Dec 17 11:02:33 cygnus kernel: [408638.849717] e1000e
0000:00:19.0 eno1: Reset adapter unexpectedly
Dec 17 11:02:33 cygnus kernel: [408638.849756] vmbr0: port
1(eno1) entered disabled state
Dec 17 11:02:37 cygnus systemd-networkd[924]: eno1: Gained
carrier
Dec 17 11:02:37 cygnus systemd-networkd[924]: eno1: could
not set address: Permission denied
Dec 17 11:02:37 cygnus kernel: [408642.507741] e1000e:
eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control:
None
Dec 17 11:02:37 cygnus kernel: [408642.507786] vmbr0: port
1(eno1) entered blocking state
Dec 17 11:02:37 cygnus kernel: [408642.507791] vmbr0: port
1(eno1) entered forwarding state
Par contre, bien que je sois en train d'investiguer, j'ai
bien compris qu'un problème ce produit sur l'interface
Ethernet, mais je ne sais pas quoi précisément.
Avez vous une idée sur ce qui peut être à l'origine de
ceci ?
PS : J'attends aussi une réponse d'OVH sur la question.
|