PowerScale : Nœuds séparés, car lldpd n’envoie plus de pulsation au commutateur Dell back-end

Summary: Cet article décrit un problème lié au processus _lldpd qui consomme sa mémoire maximale autorisée et n’envoie plus de paquets LLDP (Link Layer Discovery Protocol) aux commutateurs back-end. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

AVERTISSEMENT :
  • Il n’est pas recommandé d’effectuer une mise à niveau de OneFS vers les versions concernées (9.5.0.0 à 9.5.0.5)

  • RPS ou le client DOIT redémarrer tous les processus lldpd avant d’effectuer une mise à niveau de OneFS sur une version concernée (par exemple, la mise à niveau de 9.5.0.1 vers 9.5.0.7). Suivez l’option 2 dans la résolution.


Il y a une fuite de mémoire dans lldpd et un nœud peut se diviser si le processus a consommé sa mémoire maximale autorisée (1 Go). Une fois que le nœud consomme sa mémoire autorisée, il n’envoie plus de paquets LLDP aux commutateurs back-end. Un commutateur back-end PowerScale Dell qualifié exécutant SmartFabric Services (SFS) doit recevoir des paquets de pulsations (LLDP) à partir d’un nœud. Si trois pulsations sont manquées, le port du commutateur est alors supprimé de son réseau virtuel dédié. Ensuite, un nœud ne peut plus communiquer avec le cluster via ce chemin.

Si un cluster doit être mis à niveau, les nœuds sont redémarrés successivement, et chaque redémarrage nécessite plusieurs liaisons d’arrêt et de sauvegarde. Chacun de ces événements de lien des redémarrages augmente lentement la taille de lldpd vmem usage. Il est fort probable que les nœuds se séparent lors d’une mise à niveau si le processus n’a pas été redémarré récemment.

Ce problème peut se produire dans les cas suivants :

  • Mises à niveau OneFS
  • Opérations normales du cluster

L’utilisation actuelle de vmem peut être consultée avec la commande suivante, où une valeur RSS (Resident Set Size) MAXIMALE est de 1 048 576 Ko. RSS est la sixième colonne d’informations de la sortie PS (à gauche du « - ») (à l’exclusion du nom du nœud).

# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'

 

Remarque : « isi_for_array » ne fonctionne pas sur les nœuds HORS LIGNE. Une connexion directe aux nœuds hors ligne est requise pour collecter les informations ci-dessus.

 


Exemple de sortie ci-dessous :

cl950x-1# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
cl950x-1: _lldpd  1483   0.0  3.2 273804 262168  -  S     6Aug23     74:25.14 lldpd: no neighbor. (lldpd)
cl950x-1: _lldpd  1492   0.0  3.2 273804 262168  -  S     6Aug23     74:31.73 lldpd: no neighbor. (lldpd)
cl950x-2: _lldpd  1483   0.0  2.9 251068 238632  -  S    14Aug23     66:19.68 lldpd: no neighbor. (lldpd)
cl950x-2: _lldpd  1492   0.0  2.9 251068 238632  -  S    14Aug23     66:24.72 lldpd: no neighbor. (lldpd)
cl950x-3: _lldpd  1483   0.0  2.9 251832 239420  -  S    14Aug23     46:25.36 lldpd: no neighbor. (lldpd)
cl950x-3: _lldpd  1492   0.0  2.9 251832 239420  -  S    14Aug23     46:32.24 lldpd: no neighbor. (lldpd)
cl950x-4: _lldpd  1487   0.0  3.1 268052 256212  -  S     8Aug23     50:25.15 lldpd: no neighbor. (lldpd)
cl950x-4: _lldpd  1496   0.0  3.1 268052 256212  -  S     8Aug23     50:36.34 lldpd: no neighbor. (lldpd)
cl950x-5: _lldpd  1483   0.0  3.1 273208 261552  -  S     6Aug23     75:41.91 lldpd: no neighbor. (lldpd)
cl950x-5: _lldpd  1492   0.0  3.1 273208 261552  -  S     6Aug23     75:35.00 lldpd: no neighbor. (lldpd)
cl950x-6: _lldpd  1482   0.0  3.2 274144 262516  -  S     6Aug23     50:49.08 lldpd: no neighbor. (lldpd)
cl950x-6: _lldpd  1492   0.0  3.2 274144 262516  -  S     6Aug23     51:02.88 lldpd: no neighbor. (lldpd)
cl950x-7: _lldpd  1483   0.0  3.2 274004 262380  -  S     6Aug23     50:51.55 lldpd: no neighbor. (lldpd)
cl950x-7: _lldpd  1492   0.0  3.2 274004 262380  -  S     6Aug23     51:03.26 lldpd: no neighbor. (lldpd)
cl950x-8: _lldpd  1483   0.0  2.9 251176 238744  -  S    14Aug23     46:40.93 lldpd: no neighbor. (lldpd)
cl950x-8: _lldpd  1492   0.0  2.9 251176 238744  -  S    14Aug23     46:49.57 lldpd: no neighbor. (lldpd)
                                         ^^^^^^


La vitesse à laquelle le processus lldpd consomme la mémoire varie en fonction de plusieurs facteurs. C’est également la raison de l’augmentation plus importante que la normale de l’utilisation de la mémoire lors des mises à niveau de OneFS :

  • Taille de la configuration réseau sur le cluster
  • Nombre de sous-réseaux créés à partir de la configuration réseau
  • Nombre d’événements réseau, tels que l’interruption ou l’activation de la liaison
  • Événements de redémarrage récurrents

Le temps nécessaire pour qu'_lldpd processus atteigne la quantité MAXIMALE de mémoire autorisée varie d’un cluster à l’autre. Toutefois, il a été découvert qu’il existe une corrélation entre la taille de la configuration réseau et le délai avant défaillance. Cela signifie que plus il y a de réseaux de groupe, de sous-réseaux et de pools configurés, plus tôt cela peut se produire.  

Cause

Dans la version 9.5, lldpd a été mis à jour et contient une fuite de mémoire.

Resolution

AVERTISSEMENT

  • Il n’est pas recommandé d’effectuer une mise à niveau de OneFS vers les versions concernées (9.5.0.0 à 9.5.0.5)

  • RPS ou le client DOIT redémarrer tous les processus lldpd avant d’effectuer une mise à niveau de OneFS sur une version concernée (par exemple, la mise à niveau de 9.5.0.1 vers 9.5.0.7). Suivez l’option 2 dans la résolution.

Il existe plusieurs options pour résoudre le problème ou contourner le problème en fonction de votre scénario actuel :

  1. Mise à niveau de OneFS vers la version 9.5.0.6 et versions ultérieures
    • Notez les messages d’avertissement détaillés dans l’article concernant le redémarrage de lldpd avant toute mise à niveau des versions concernées.
  2. Une solution de contournement temporaire est exécutée immédiatement en redémarrant les processus lldpd. Cela nécessite une intervention manuelle en redémarrant le processus sur l’ensemble du cluster :
    • # killall lldpd
  3. Une fois le problème résolu, redémarrez immédiatement les processus lldpd de plus de 500 Mo pour une solution de contournement temporaire :
    • # isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''
  4. Une fois le problème résolu (la commande suivante est identique à la commande précédente), il est possible d’effectuer une contournement temporaire dans une session d’écran pour effectuer la vérification toutes les 1 200 s.
    • # while true; do isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''; sleep 1200; done
Article Properties
Article Number: 000219439
Article Type: Solution
Last Modified: 19 May 2025
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.