VNX: kernel.cpu.utilization.cpuutil är > 90 i 15 minuter
Summary: kernel.cpu.utilization.cpuutil är > 90 i 15 minuter.
Symptoms
Försämrad CIFS-, NFS-prestanda och överdrivet hög CPU-användning på datumflyttarna under längre tidsperioder
Filerna /nas/log/sys_log översvämmas med följande varningar:
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
En övergripande systemkonfiguration och kapacitetsanalys slutfördes för att fastställa vilka typer av krav (antal replikering, deduplicering, kontrollpunktsscheman och så vidare) som ställs på varje dataöverförare. Det fastställdes att ett VMware-program som heter Mirage användes för bildhantering. Denna programvara säkerhetskopierade tusentals arbetsstationer i kundernas miljö till CIFS, NFS delar genom att skapa flera små CVD-filer.
I det här exemplet konfigurerades 200 VMware Mirage-sessioner med ögonblicksbilder varje timme av 4 000 datorer. En dator kräver en CVD-fil som i sin tur behöver 1,5 IOPS för att ögonblicksbilden ska slutföras. När säkerhetskopieringarna kördes var prestandan långsam och en enorm latens i storleksordningen 626,78 kB per ms upplevdes på Mirage-sidan.
En dataflyttarprofil på server_2 registrerades när processoranvändningen var för hög och VMware Mirage-programmet kördes. Profilen konfigurerades att köras i 60 sekunder:
Exempel:
[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 analys av dataöverföringsprofilen slutfördes och det visade sig att den primära flaskhalsen som förbrukade majoriteten av processorn var en SMB-säkerhetskrypteringsprocess som kallas "AES_encrypt". Den här SMB-processen används för att tillhandahålla heltäckande kryptering av SMB-data och skyddar data från avlyssning i ej betrodda nätverk.
[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
Det finns två alternativ:
Alternativet 1:
Gör inga ändringar, låt maxprotokollet för SMB-kommunikation vara kvar på SMB3, stå ut med den höga processorn och dåliga prestanda.
Alternativet 2:
Implementera en lösning för att ta bort maxprotokollet för SMB-kommunikation från SMB3 till SMB2. Den största skillnaden mellan SMB3 och SMB2 är "AES_Encrypt". Genom att ta bort maxprotokollet till SMB2 tas krypteringsprocessen bort, processoranvändningen sjunker och prestandan bör förbättras.
Så här aktiverar du SMB2-protokollet på dataöverföraren:
-
Logga in på den primära kontrollstationen som "root"-användare i putty/SSH
-
Begär tillstånd från kunden att tillfälligt stoppa CIFS-tjänsten på dataöverföraren. Detta orsakar ett litet avbrott i CIFS-åtkomsten medan CIFS-tjänsten stoppas, så det måste schemaläggas i enlighet med detta med kunden.
server_setup server_x -P cifs -o stop
-
Ändra maxprotokollet för SMB-kommunikation från SMB3 till SMB2:
server_cifs server_x -add security=NT,dialect=SMB2
-
Starta om CIFS-tjänsten:
server_setup server_x -P cifs -o start
-
Kontrollera att CIFS-tjänsten har startats om och att maxprotokollet är inställt på SMB2:
server_cifs server_x
Exempel:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----