VNX: kernel.cpu.utilization.cpuutil está > 90 durante 15 minutos
Summary: kernel.cpu.utilization.cpuutil está > 90 durante 15 minutos.
Symptoms
CIFS degradado, rendimiento de NFS y uso excesivamente alto de CPU en los administradores de transferencia de fechas durante períodos prolongados
Los archivos /nas/log/sys_log se inundan con las siguientes 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
Se completó un análisis general de la configuración y la capacidad del sistema para determinar qué tipos de demandas (cantidad de replicación, desduplicación, programaciones de puntos de control, etc.) se aplican a cada administrador de transferencia de datos. Se determinó que se estaba utilizando una aplicación de VMware llamada Mirage para la administración de imágenes. Este software respaldaba miles de estaciones de trabajo en el entorno de los clientes en los recursos compartidos CIFS y NFS mediante la creación de varios archivos CVD pequeños.
En este ejemplo, se configuraron 200 sesiones de VMware Mirage que toman instantáneas por hora de 4000 máquinas. Una máquina requiere un archivo CVD que, a su vez, necesita 1,5 IOPS para que se complete la instantánea. Cuando se ejecutaban los respaldos, el rendimiento era lento y se experimentó una gran latencia en la región de 626,78 KB por ms en el lado de Mirage.
Se capturó un perfil de administrador de transferencia de datos de server_2 cuando la utilización de CPU era excesivamente alta y la aplicación VMware Mirage estaba en ejecución. El perfil se configuró para ejecutarse durante 60 segundos:
Ejemplo:
[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.
Se completó un análisis del perfil del administrador de transferencia de datos y se descubrió que el cuello de botella principal que consumía la mayor parte de la CPU era un proceso de cifrado de seguridad de SMB denominado "AES_encrypt". Este proceso de SMB se utiliza para proporcionar cifrado integral de los datos de SMB y proteger los datos de ocurrencias de espionaje en redes no confiables.
[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
Hay dos opciones disponibles:
Opción 1:
No realice cambios, permita que el protocolo máximo para la comunicación SMB permanezca en SMB3, tolere la CPU alta y el rendimiento deficiente.
Opción 2:
Implemente una solución alternativa para descartar el protocolo máximo para la comunicación SMB de SMB3 a SMB2. La principal diferencia entre SMB3 y SMB2 es "AES_Encrypt". Con la eliminación del protocolo máximo en SMB2, se interrumpe el proceso de cifrado, disminuye el uso de CPU y el rendimiento debería mejorar.
Para habilitar el protocolo SMB2 en el administrador de transferencia de datos:
-
Inicie sesión en la Control Station primaria como usuario "root" en putty/SSH
-
Solicite permiso al cliente para detener temporalmente el servicio CIFS en el administrador de transferencia de datos. Esto provoca una pequeña interrupción del acceso a CIFS mientras el servicio CIFS se detiene, por lo que se debe programar de acuerdo con el cliente.
server_setup server_x -P cifs -o stop
-
Cambie el protocolo máximo para la comunicación SMB de SMB3 a SMB2:
server_cifs server_x -add security=NT,dialect=SMB2
-
Reinicie el servicio CIFS:
server_setup server_x -P cifs -o start
-
Asegúrese de que el servicio CIFS se haya reiniciado correctamente y de que el protocolo máximo esté configurado en SMB2:
server_cifs server_x
Ejemplo:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----