VNX: kernel.cpu.utilization.cpuutil ist 15 Minuten lang > 90
Summary: kernel.cpu.utilization.cpuutil ist 15 Minuten lang > 90.
Symptoms
Heruntergestufte CIFS- und NFS-Performance und übermäßig hohe CPU-Auslastung auf den Datumsverschiebern über längere Zeiträume
Die Dateien /nas/log/sys_log werden mit den folgenden Warnmeldungen überflutet:
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
Eine allgemeine Systemkonfigurations- und Kapazitätsanalyse wurde durchgeführt, um zu bestimmen, welche Arten von Anforderungen (Anzahl der Replikationen, Deduplizierung, Prüfpunktzeitpläne usw.) für jeden Data Mover gestellt werden. Es wurde festgestellt, dass eine VMware-Anwendung namens Mirage für das Image-Management verwendet wird. Diese Software sicherte Tausende von Workstations in der Kundenumgebung auf CIFS- und NFS-Freigaben, indem mehrere kleine CVD-Dateien erstellt wurden.
In diesem Beispiel wurden 200 VMware Mirage-Sitzungen konfiguriert, die stündlich Snapshots von 4.000 Maschinen erstellen. Für einen Rechner ist eine CVD-Datei erforderlich, die wiederum 1,5 IOPS benötigt, damit der Snapshot abgeschlossen werden kann. Als die Backups ausgeführt wurden, war die Performance langsam und es kam zu einer enormen Latenz im Bereich von 626,78 KB pro ms auf der Mirage-Seite.
Ein Data Mover-Profil von server_2 wurde erfasst, wenn die CPU-Auslastung übermäßig hoch war und die VMware Mirage-Anwendung ausgeführt wurde. Das Profil wurde so konfiguriert, dass es 60 Sekunden lang ausgeführt wird:
Beispiel:
[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.
Eine Analyse des Data Mover-Profils wurde abgeschlossen und es wurde festgestellt, dass der primäre Engpass, der den Großteil der CPU beanspruchte, ein SMB-Sicherheitsverschlüsselungsprozess namens "AES_encrypt" war. Dieser SMB-Prozess wird verwendet, um eine Ende-zu-Ende-Verschlüsselung für SMB-Daten bereitzustellen und Daten vor Lauschangriffen in nicht vertrauenswürdigen Netzwerken zu schützen.
[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
Es stehen zwei Optionen zur Verfügung:
Möglichkeit 1:
Nehmen Sie keine Änderungen vor, lassen Sie das maximale Protokoll für die SMB-Kommunikation bei SMB3 bleiben, ertragen Sie die hohe CPU und schlechte Leistung.
Möglichkeit 2:
Implementieren Sie einen Workaround, um das maximale Protokoll für die SMB-Kommunikation von SMB3 auf SMB2 zu übertragen. Der Hauptunterschied zwischen SMB3 und SMB2 ist "AES_Encrypt". Durch das Löschen des max. Protokolls auf SMB2 wird der Verschlüsselungsprozess und die CPU-Auslastung sinken und die Performance sollte sich verbessern.
So aktivieren Sie das SMB2-Protokoll auf dem Data Mover:
-
Melden Sie sich bei der primären Control Station als "root"-Nutzer in PuTTY/SSH an.
-
Fordern Sie vom Kunden die Erlaubnis an, den CIFS-Service auf dem Data Mover vorübergehend zu beenden. Dies führt zu einem kleinen Ausfall des CIFS-Zugriffs, während der CIFS-Service beendet wird. Daher muss er entsprechend mit dem Kunden geplant werden.
server_setup server_x -P cifs -o stop
-
Ändern Sie das max. Protokoll für die SMB-Kommunikation von SMB3 in SMB2:
server_cifs server_x -add security=NT,dialect=SMB2
-
Starten Sie den CIFS-Service neu:
server_setup server_x -P cifs -o start
-
Stellen Sie sicher, dass der CIFS-Service erfolgreich neu gestartet wurde und das max. Protokoll auf SMB2 eingestellt ist:
server_cifs server_x
Beispiel:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----