VNX: kernel.cpu.utilization.cpuutil > 90 в течение 15 минут
Summary: kernel.cpu.utilization.cpuutil находится > 90 в течение 15 минут.
Symptoms
Снижение производительности CIFS, NFS и чрезмерно высокая загрузка ЦП на модулях переноса дат в течение длительных периодов времени
Файлы /nas/log/sys_log переполнены следующими оповещениями:
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
Был выполнен общий анализ конфигурации системы и емкости, чтобы определить, какие типы требований (количество репликаций, дедупликация, расписания контрольных точек и т. д.) предъявляются к каждому модулю переноса данных. Было установлено, что для управления образами использовалось приложение VMware под названием Mirage. Это программное обеспечение создавало резервные копии тысяч рабочих станций в среде заказчика в общие ресурсы CIFS и NFS, создавая множество небольших CVD-файлов.
В этом примере было настроено 200 сессий VMware Mirage, которые ежечасно создавали моментальные снимки 4000 компьютеров. Для одного компьютера требуется один файл CVD, который, в свою очередь, требует 1,5 IOPS для создания моментального снимка. Во время выполнения резервного копирования производительность была низкой, а на стороне Mirage наблюдалась огромная задержка в районе 626,78 Кбайт/мс.
Профиль модуля переноса данных server_2 записывался, когда загрузка ЦП была чрезмерно высокой и приложение VMware Mirage работало. Профиль был настроен на запуск в течение 60 секунд:
Пример:
[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.
Был выполнен анализ профиля модуля переноса данных, и было обнаружено, что основным узким местом, потребляющим большую часть ресурсов ЦП, является процесс шифрования безопасности SMB под названием «AES_encrypt». Этот процесс SMB обеспечивает сквозное шифрование данных SMB и защищает данные от подслушивания в ненадежных сетях.
[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
Доступны два варианта:
Вариант 1:
Не вносите никаких изменений, максимальный протокол для связи по протоколу SMB должен оставаться на уровне SMB3, выдерживать высокую нагрузку на ЦП и низкую производительность.
Вариант 2:
Реализуйте временное решение, чтобы снизить максимальный протокол для связи SMB с SMB3 на SMB2. Основное различие между протоколами SMB3 и SMB2 заключается в AES_Encrypt. Снижение версии протокола max до SMB2 приводит к прекращению процесса шифрования, снижению загрузки ЦП и повышению производительности системы.
Чтобы включить протокол SMB2 в модуле переноса данных, выполните следующие действия.
-
Войдите на основную управляющую станцию в качестве пользователя root через putty/SSH
-
Запросить у заказчика разрешение на временную остановку службы CIFS в модуле переноса данных. Это приводит к небольшому перебою в доступе к CIFS во время остановки службы CIFS, поэтому этот вызов должен быть запланирован соответствующим образом с заказчиком.
server_setup server_x -P cifs -o stop
-
Измените максимальное значение протокола для связи SMB с SMB3 на SMB2:
server_cifs server_x -add security=NT,dialect=SMB2
-
Перезапустите службу CIFS.
server_setup server_x -P cifs -o start
-
Убедитесь, что сервис CIFS успешно перезапущен и для протокола max установлено значение SMB2:
server_cifs server_x
Пример:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----