VNX: kernel.cpu.utilization.cpuutil er > 90 i 15 minutter
Summary: kernel.cpu.utilization.cpuutil er > 90 i 15 minutter.
Symptoms
Forringet CIFS, NFS-ydeevne og for høj CPU-udnyttelse på datoflytterne i længere perioder
Filerne /nas/log/sys_log oversvømmes med følgende advarsler:
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
Der blev gennemført en overordnet systemkonfiguration og kapacitetsanalyse for at bestemme, hvilke typer krav (antal replikeringer, deduplikering, kontrolpunktplaner osv.), der stilles til hver dataflytter. Det blev fastslået, at en VMware-applikation kaldet Mirage blev brugt til billedstyring. Denne software sikkerhedskopierede tusindvis af arbejdsstationer i kundens miljø til CIFS, NFS deler ved at oprette flere små CVD-filer.
I dette eksempel blev der konfigureret 200 VMware Mirage-sessioner, der tog snapshots hver time af 4.000 maskiner. Én maskine kræver én CVD-fil, som igen skal bruge 1,5 IOPS for at snapshottet kan fuldføres. Da sikkerhedskopierne kørte, var ydeevnen langsom, og der blev oplevet enorm latenstid i området 626.78 KB pr. ms på Mirage-siden.
Der blev registreret en datamover-profil for server_2, når CPU-udnyttelsen var for høj, og VMware Mirage-programmet kørte. Profilen blev konfigureret til at køre i 60 sekunder:
Eksempel:
[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.
En analyse af data mover-profilen blev gennemført, og det blev konstateret, at den primære flaskehals, der forbrugte størstedelen af CPU'en, var en SMB-sikkerhedskrypteringsproces kaldet "AES_encrypt". Denne SMB-proces bruges til at levere end-to-end-kryptering af SMB-data og beskytter data mod aflytningsforekomster på netværk, der ikke er tillid til.
[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
Der er to muligheder:
Mulighed 1:
Foretag ingen ændringer, lad max-protokollen til SMB-kommunikation forblive på SMB3, udholde den høje CPU og dårlige ydeevne.
Mulighed 2:
Implementer en løsning ved at droppe max-protokollen til SMB-kommunikation fra SMB3 til SMB2. Hovedforskellen mellem SMB3 og SMB2 er "AES_Encrypt." Ved at droppe max-protokollen til SMB2 falder krypteringsprocessen, CPU-udnyttelsen falder, og ydeevnen skulle blive bedre.
Sådan aktiveres SMB2-protokollen på data mover:
-
Log ind på den primære kontrolstation som "root"-bruger i putty/SSH
-
Anmod om tilladelse fra kunden til midlertidigt at stoppe CIFS-tjenesten på dataflytteren. Dette medfører et mindre nedbrud i CIFS-adgangen, mens CIFS-tjenesten stoppes, så den skal planlægges i overensstemmelse hermed med kunden.
server_setup server_x -P cifs -o stop
-
Skift max-protokollen for SMB-kommunikation fra SMB3 til SMB2:
server_cifs server_x -add security=NT,dialect=SMB2
-
Genstart CIFS-tjenesten:
server_setup server_x -P cifs -o start
-
Sørg for, at CIFS-tjenesten er genstartet korrekt, og at max-protokollen er indstillet til SMB2:
server_cifs server_x
Eksempel:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----