VNX: kernel.cpu.utilization.cpuutil é > 90 por 15 minutos
Summary: kernel.cpu.utilization.cpuutil está > 90 por 15 minutos.
Symptoms
CIFS degradado, desempenho do NFS e utilização excessivamente alta da CPU nos data movers por períodos prolongados
Os arquivos /nas/log/sys_log são inundados com os seguintes alertas:
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
Uma configuração geral do sistema e uma análise de capacidade foram concluídas para determinar quais tipos de demandas (número de replicação, desduplicação, agendamentos de checkpoint e assim por diante) estão sendo colocadas em cada Data Mover. Foi determinado que um aplicativo da VMware chamado Mirage estava sendo usado para gerenciamento de imagens. Esse software fazia backup de milhares de estações de trabalho no ambiente dos clientes para compartilhamentos CIFS e NFS, criando vários arquivos CVD pequenos.
Neste exemplo, 200 sessões do VMware Mirage foram configuradas tirando snapshots por hora de 4.000 máquinas. Uma máquina requer um arquivo CVD que, por sua vez, precisa de 1,5 IOPS para que o snapshot seja concluído. Quando os backups estavam em execução, o desempenho era lento e havia uma enorme latência de 626,78 KB por ms no Mirage.
Um perfil de Data Mover de server_2 foi capturado quando a utilização da CPU era excessivamente alta e o aplicativo VMware Mirage estava em execução. O perfil foi configurado para ser executado por 60 segundos:
Exemplo:
[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.
Uma análise do perfil do Data Mover foi concluída e descobriu-se que o principal gargalo consumindo a maior parte da CPU era um processo de criptografia de segurança de SMB chamado "AES_encrypt". Esse processo SMB é usado para fornecer criptografia completa de dados SMB e protege os dados contra ocorrências de espionagem em redes não confiáveis.
[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
Duas opções estão disponíveis:
Opção 1:
Não faça alterações, permita que o protocolo máximo para comunicação SMB permaneça no SMB3, suporte a CPU alta e o baixo desempenho.
Opção 2:
Implemente uma solução temporária para descartar o protocolo máximo para comunicação SMB de SMB3 para SMB2. A principal diferença entre SMB3 e SMB2 é "AES_Encrypt". Ao descartar o protocolo máximo para SMB2, isso reduz o processo de criptografia, a utilização da CPU diminui e o desempenho deve melhorar.
Para ativar o protocolo SMB2 no Data Mover:
-
Faça login na Control Station primária como usuário "root" no putty/SSH
-
Solicite permissão do cliente para interromper temporariamente o serviço CIFS no Data Mover. Isso causa uma pequena interrupção no acesso ao CIFS enquanto o serviço CIFS está parado, portanto, ela deve ser agendada de acordo com o cliente.
server_setup server_x -P cifs -o stop
-
Altere o protocolo máximo para comunicação do SMB de SMB3 para SMB2:
server_cifs server_x -add security=NT,dialect=SMB2
-
Reinicie o serviço CIFS:
server_setup server_x -P cifs -o start
-
Verifique se o serviço CIFS foi reiniciado com sucesso e se o protocolo máximo está definido como SMB2:
server_cifs server_x
Exemplo:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----