VNX : kernel.cpu.utilization.cpuutil est > 90 pendant 15 minutes
Summary: kernel.cpu.utilization.cpuutil est > 90 pendant 15 minutes.
Symptoms
Dégradation des performances CIFS et NFS et utilisation trop élevée du processeur sur les logiciels de transfert de date pendant des périodes prolongées
Les fichiers /nas/log/sys_log sont inondés des alertes suivantes :
Oct 20 10:19:21 2016:CS_PLATFORM:PERFSTATS:NOTICE:3:::::nas_alerterd: Clearing event for policy: default:server_2:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes due to value = 88 Oct 20 10:20:26 2016:CS_PLATFORM:PERFSTATS:NOTICE:3:::::nas_alerterd: Clearing event for policy: default:server_3:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes due to value = 89 Oct 20 10:35:21 2016:CS_PLATFORM:PERFSTATS:WARNING:2:::::nas_alerterd: Raising event for policy: default:server_2:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes. The last sample value was 94 Oct 20 10:48:26 2016:CS_PLATFORM:PERFSTATS:WARNING:2:::::nas_alerterd: Raising event for policy: default:server_3:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes. The last sample value was 95 Oct 20 11:01:26 2016:CS_PLATFORM:PERFSTATS:NOTICE:3:::::nas_alerterd: Clearing event for policy: default:server_3:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes due to value = 87 Oct 20 11:17:21 2016:CS_PLATFORM:PERFSTATS:NOTICE:3:::::nas_alerterd: Clearing event for policy: default:server_2:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes due to value = 89 Oct 20 11:21:26 2016:CS_PLATFORM:PERFSTATS:WARNING:2:::::nas_alerterd: Raising event for policy: default:server_3:kernel.cpu.utilization.cpuutil is > 90 for 15 minutes. The last sample value was 96
[nasadmin@storage ~]$ server_sysstat server_2 server_2 : threads runnable = 216 threads blocked = 6859 threads I/J/Z = 1 memory free(kB) = 6925375 cpu idle_% = 2 < ------- 98% utilized [nasadmin@storage ~]$ server_sysstat server_3 server_3 : threads runnable = 61 threads blocked = 6940 threads I/J/Z = 1 memory free(kB) = 6683987 cpu idle_% = 1 < ------- 99% utilized
Cause
Une configuration système globale et une analyse de la capacité ont été réalisées afin de déterminer les types de demandes (nombre de réplications, de déduplication, de planifications de points de contrôle, etc.) sur chaque logiciel de transfert de données. Il a été déterminé qu’une application VMware appelée Mirage était utilisée pour la gestion des images. Ce logiciel sauvegardeait des milliers de postes de travail dans l’environnement des clients sur les partages CIFS et NFS en créant plusieurs petits fichiers CVD.
Dans cet exemple, 200 sessions VMware Mirage ont été configurées pour prendre des snapshots horaires de 4 000 machines. Une machine nécessite un fichier CVD qui, à son tour, nécessite 1,5 IOPS pour que le snapshot se termine. Lorsque les sauvegardes étaient en cours d’exécution, les performances étaient lentes et la latence était de l’ordre de 626,78 Ko/ms du côté de Mirage.
Un profil de logiciel de transfert de données de server_2 a été capturé lorsque l’utilisation du processeur était excessivement élevée et que l’application VMware Mirage était en cours d’exécution. Le profil a été configuré pour s’exécuter pendant 60 secondes :
Exemple :
[nasadmin@storage ~]$ /nas/tools/profile_slot -slot 2 -method function -seconds 60 -output /root_vdm_3/FS_Backup_01/profile_slot2.out Starting profile on slot 2 with the following params... Slot = 2 Method = function Seconds = 60 Ignorebounds = no Frequency = 256 Outfile = /root_vdm_3/FS_Backup_01/profile_slot2.out Profile started. Waiting for 60 seconds... Profile stopped. Profile output has been written to /root_vdm_3/FS_Backup_01/profile_slot2.out on server in slot 2.
Une analyse du profil du logiciel de transfert de données a été réalisée et il a été constaté que le principal goulot d’étranglement consommant la majorité du processeur était un processus de chiffrement de sécurité SMB appelé « AES_encrypt ». Ce processus SMB est utilisé pour assurer le chiffrement de bout en bout des données SMB et protéger les données contre les écoutes clandestines sur les réseaux non approuvés.
[nasadmin@storage ~]$ more profile_slot2.out | grep -i aes 0.0% ( 1 ) EVP_aes_128_cbc 0.0% ( 2 ) aes_init_key 1.0% ( 631 ) aes_cbc_cipher 0.0% ( 16 ) private_AES_set_encrypt_key 44.8% ( 27454 ) AES_encrypt < --------------------- 0.9% ( 581 ) AES_cbc_encrypt 0.0% ( 1 ) EVP_aes_128_cbc 0.8% ( 123 ) aes_cbc_cipher 0.0% ( 1 ) private_AES_set_encrypt_key 37.0% ( 5676 ) AES_encrypt < --------------------- 0.8% ( 128 ) AES_cbc_encrypt 0.0% ( 1 ) aes_init_key 0.9% ( 140 ) aes_cbc_cipher 0.0% ( 3 ) private_AES_set_encrypt_key 47.1% ( 7219 ) AES_encrypt < --------------------- 0.9% ( 146 ) AES_cbc_encrypt 0.0% ( 1 ) aes_init_key 1.3% ( 204 ) aes_cbc_cipher 0.0% ( 7 ) private_AES_set_encrypt_key 48.2% ( 7388 ) AES_encrypt < --------------------- 0.9% ( 151 ) AES_cbc_encrypt 1.0% ( 164 ) aes_cbc_cipher 0.0% ( 5 ) private_AES_set_encrypt_key 46.8% ( 7171 ) AES_encrypt < --------------------- 1.0% ( 156 ) AES_cbc_encrypt
Resolution
Deux options s’offrent à vous :
Option 1 :
N’apportez aucune modification, laissez le protocole maximal pour la communication SMB rester à SMB3, supportez le CPU élevé et les performances médiocres.
Option 2 :
Implémentez une solution de contournement pour faire passer le protocole maximal de communication SMB de SMB3 à SMB2. La principale différence entre SMB3 et SMB2 est « AES_Encrypt ». L’abandon du protocole maximal sur SMB2 interrompt le processus de chiffrement, l’utilisation du processeur diminue et les performances devraient s’améliorer.
Pour activer le protocole SMB2 sur le logiciel de transfert de données :
-
Connectez-vous à la station pilote principale en tant qu’utilisateur root dans putty/SSH.
-
Demandez au client l’autorisation d’arrêter temporairement le service CIFS sur le logiciel de transfert de données. Cela entraîne une petite panne de l’accès CIFS lorsque le service CIFS est arrêté. Elle doit donc être planifiée en conséquence avec le client.
server_setup server_x -P cifs -o stop
-
Modifiez le protocole maximal pour la communication SMB de SMB3 à SMB2 :
server_cifs server_x -add security=NT,dialect=SMB2
-
Redémarrez le service CIFS :
server_setup server_x -P cifs -o start
-
Assurez-vous que le service CIFS a redémarré avec succès et que le protocole max est défini sur SMB2 :
server_cifs server_x
Exemple :
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----