Bir sunucudaki performans hakkında konuşurken, ona bakmanın birkaç farklı yolu vardır. Görünen yanıt süresi (ağ gecikmesine benzer) ve verim (ağ bant genişliğine benzer) var.
Bazı Windows Server sürümleri, varsayılan olarak etkinleştirilmiş Dengeli Güç ayarlarıyla birlikte gelir. Jeff'in işaret ettiği gibi. Windows 2008 R2 bunlardan biri. Çok az CPU'su bugünlerde tek çekirdekli olduğundan, bu açıklama tek çekirdekli VM'ler haricinde çalışacağınız hemen hemen tüm Windows sunucularına uygulanır. (daha sonraları üzerinde daha fazla).
Dengeli güç planı etkin olduğunda, CPU ne kadar güç kullandığını geri çekmeye çalışır. Bunu yapan yol CPU çekirdeğinin yarısını "park yeri" olarak bilinen bir işlemde devre dışı bırakmaktır. CPU'ların yalnızca yarısı bir anda mevcut olacak, bu nedenle düşük trafik zamanlarında daha az güç kullanacaktır. Bu başlı başına bir sorun değil.
Asıl sorun, CPU'lar park edilmediğinde, sistem için mevcut CPU döngülerini iki katına çıkardığınız ve sistemdeki yükü aniden dengesiz hale getirmiş olmanızdır (örneğin,% 70 kullanımından% 35 kullanımına. Sistem buna bakar ve trafik patlaması işlendikten sonra “Hey, bunu güç tasarrufu için biraz geri çevirmeliyim” diye düşünüyor. Ve öyle yapar.
İşte kötü kısmı. CPU çekirdeğinde eşit olmayan bir ısı ve güç dağılımını önlemek için, yakın zamanda park etmemiş olan CPU'ları park etme eğilimi vardır. Bunun düzgün çalışması için CPU'nun CPU kaydedicilerinden (L1, L2 ve L3 önbellek) başka bir yere (büyük olasılıkla ana hafızaya) kadar her şeyi yıkaması gerekir.
Varsayımsal bir örnek olarak, C1-C8 ile 8 çekirdekli bir işlemciniz olduğunu varsayalım.
- Aktif: C1, C3, C5, C7
- Park: C2, C4, C6, C8
Bu olduğunda, hepsi bir süre aktif hale gelirler ve sistem onları aşağıdaki şekilde park eder:
- Aktif: C2, C4, C6, C8
- Park: C1, C3, C5, C7
Ancak, bunu yaparken, L1-L3 önbelleğindeki tüm verilerin temizlenmesini sağlamanın iyi bir miktar ek yükü vardır, böylece CPU boru hattından temizlenen programlara garip hatalar gelmez.
Bunun için resmi bir isim olabilir, ancak CPU çökmesi olarak açıklamayı seviyorum. Temel olarak, işlemciler yoğun iş yapmak için daha fazla zaman harcıyorlar ve iş taleplerine göre kendi içlerinde veri dolaşıyorlar.
İstekleri için düşük gecikme süresi gerektiren herhangi bir uygulamanız varsa, Dengeli Güç ayarlarını devre dışı bırakmanız gerekir. Bunun bir sorun olup olmadığından emin değilseniz, aşağıdakileri yapın:
- "Görev Yöneticisi" ni açın
- "Performans" sekmesini tıklayın.
- "Kaynak İzleyicisini Aç" ı tıklayın
- "CPU" sekmesini seçin
- Çeşitli CPU'larda pencerenin sağ tarafına bakın.
Herhangi birinin park edildiğini görürseniz, yarısının herhangi bir zamanda park edildiğini, hepsinin ateşleneceğini ve diğer yarısının park edildiğini göreceksiniz. İleri geri değişiyor. Böylece, sistem CPU'ları çöküyor.
Sanal Makineler: Sanal makineyi çalıştırırken bu sorun daha da kötüdür çünkü hipervizörün ek yükü vardır. Genel olarak konuşursak, bir VM'nin çalışması için, donanımın her bir zaman diliminde her bir çekirdek için uygun bir zaman dilimi olması gerekir.
16 çekirdekli bir donanıma sahipseniz, VM'leri toplam 16'dan fazla çekirdek kullanarak çalıştırabilirsiniz, ancak her zaman dilimi için, yalnızca 16'ya kadar sanal CPU bu zaman dilimine uygun olur ve hipervizör bir VM için tüm çekirdeğe uymalıdır o zaman dilimine. Birden fazla zaman dilimine yayılamaz. (Bir zaman dilimi temelde bir X CPU döngüsü kümesidir. 1000 veya 100k döngü olabilir)
Örn: 8 VM ile 16 çekirdekli donanım. 6'sında 4 sanal CPU (4C) ve 2'sinde 8 sanal CPU (8C) bulunmaktadır.
Zaman dilimi 1: 4x4C Zaman dilimi 2: 2x8C Zaman dilimi 3: 2x4C + 1x8C Zaman dilimi 4: 1x8C + 2x4C
Hipervizörün yapamadığı şey, 8 vCPU VM'nin ilk 4 CPU'suna bir zaman dilimi için bir zaman dilimi için payın yarısını bölmek ve sonra bir sonraki zaman diliminde, gerisini bu VM'nin diğer 4 vCPU'larına vermek. Bir zaman dilimi içinde ya hep ya hiç.
Microsoft'un Hyper-V'sini kullanıyorsanız, güç kontrolü ayarları ana bilgisayar işletim sisteminde etkinleştirilebilir, bu da istemci sistemlerine yayılacak ve böylece onları da etkileyecektir.
Bunun nasıl çalıştığını gördükten sonra, Dengeli Güç Kontrolü ayarlarının kullanılmasının performans sorunlarına ve durgun sunuculara neden olduğunu görmek kolaydır. Temel sorunlardan biri, gelen isteğin, sunucunun gelen bir talebe cevap verebilmesi için CPU park etme / park etme işleminin tamamlanmasını beklemesi gerektiği, bunun bir veritabanı sorgusu, bir web sunucusu isteği veya başka bir şey olup olmadığıdır. .
Bazen, sistem bir isteğin ortasına CPU'ları park edecek veya kaldıracaktır. Bu gibi durumlarda, istek CPU boru hattına girecek, ondan atılacak ve daha sonra farklı bir CPU çekirdeği işlemi oradan alacaktır. Yeterince ağır bir istekse, bu istek boyunca birkaç kez olabilir, 5 saniyelik bir veritabanı sorgusu olması gereken 15 saniyelik bir veritabanı sorgusu olarak değiştirilir.
Dengeli Gücü kullanarak göreceğiniz en büyük şey, sistemlerin yaptığınız her talebe cevap vermek için daha yavaş hissetmeleridir.