VNX: kernel.cpu.utilization.cpuutil is > 15 dakika boyunca 90
Summary: kernel.cpu.utilization.cpuutil değeri 15 dakika boyunca 90 >.
Symptoms
Düşük performanslı CIFS, NFS performansı ve tarih taşıyıcılarda uzun süre aşırı yüksek CPU kullanımı
/nas/log/sys_log dosyaları aşağıdaki uyarılarla dolup taşar:
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
Her bir veri taşıyıcıya ne tür taleplerin (çoğaltma sayısı, tekilleştirme, kontrol noktası çizelgeleri vb.) uygulandığını belirlemek için genel bir sistem yapılandırması ve kapasite analizi tamamlandı. Görüntü yönetimi için Mirage isimli bir VMware uygulamasının kullanıldığı tespit edildi. Bu yazılım, birden fazla küçük CVD dosyası oluşturarak müşteri ortamındaki binlerce iş istasyonunu CIFS, NFS paylaşımlarına yedekliyordu.
Bu örnekte, 4.000 makinenin saatlik anlık görüntüleri alınarak 200 VMware Mirage oturumu yapılandırılmıştır. Bir makinede bir CVD dosyası gerekir ve bu da anlık görüntünün tamamlanması için 1,5 IOPS'ye ihtiyaç duyar. Yedeklemeler çalışırken performans yavaştı ve Mirage tarafında ms başına 626,78 KB civarında büyük bir gecikme yaşandı.
CPU kullanımı aşırı yüksekken ve VMware Mirage uygulaması çalışırken server_2'nin bir veri taşıyıcı profili yakalanıyordu. Profil 60 saniye boyunca çalışacak şekilde yapılandırıldı:
Örnek:
[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.
Veri taşıyıcı profilinin analizi tamamlandı ve CPU'nun çoğunu tüketen birincil darboğazın "AES_encrypt" adı verilen bir SMB güvenlik şifreleme işlemi olduğu bulundu. Bu SMB işlemi, SMB verilerinin uçtan uca şifrelenmesini sağlamak için kullanılır ve verileri güvenilmeyen ağlarda gizlice dinlemeye karşı korur.
[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
İki seçenek mevcuttur:
Seçenek 1:
Hiçbir değişiklik yapmayın, SMB iletişimi için maksimum protokolün SMB3'te kalmasına izin verin, yüksek CPU'ya ve düşük performansa tahammül edin.
Seçenek 2:
SMB3'ten SMB2'ye SMB iletişimi için maksimum protokolü bırakmak üzere bir geçici çözüm uygulayın. SMB3 ve SMB2 arasındaki temel fark "AES_Encrypt"dir. Maksimum protokolün SMB2'ye bırakılması, şifreleme işlemini bırakır, CPU kullanımı düşer ve performans artmalıdır.
Veri taşıyıcıda SMB2 protokolünü etkinleştirmek için:
-
Birincil Kontrol İstasyonunda putty/SSH'de "kök" kullanıcı olarak oturum açın
-
Veri taşıyıcıdaki CIFS hizmetini geçici olarak durdurmak için müşteriden izin isteyin. Bu durum, CIFS hizmeti durdurulduğunda CIFS erişiminde küçük bir kesintiye neden olur. Bu nedenle hizmetin müşteriyle uygun şekilde planlanması gerekir.
server_setup server_x -P cifs -o stop
-
SMB iletişimi için maks. protokolü SMB3'ten SMB2'ye değiştirme:
server_cifs server_x -add security=NT,dialect=SMB2
-
CIFS hizmetini yeniden başlatın:
server_setup server_x -P cifs -o start
-
CIFS hizmetinin başarıyla yeniden başlatıldığından ve maksimum protokolün SMB2 olarak ayarlandığından emin olun:
server_cifs server_x
Example:
[root@Bstorage]# server_cifs server_2 server_2 : 384 Cifs threads started Security mode = NT Max protocol = SMB2.1 < -----