İki özdeş Ubuntu sunucusu arasındaki büyük performans farkının nedenini nasıl bulabilirim?


9

Bir veri merkezinin aynı rafında (yük dengeleyicinin arkasında) iki Dell R410 sunucusu çalıştırıyorum . Her ikisi de aynı donanım yapılandırmasına sahiptir, Ubuntu 10.4'ü çalıştırır, aynı paketleri yükler ve aynı Java web sunucularını çalıştırır (başka bir yük yok) ve ikisi arasında önemli bir performans farkı görüyorum.

Performans farkı, her iki sunucunun (Java uygulamasında ağ gecikmeleri olmadan ölçülen) ortalama yanıt sürelerinde en belirgindir: Bunlardan biri diğerinden% 20-30 daha hızlıdır, çok tutarlı bir şekilde.
Daha dstatfazla bağlam anahtarı, IO, takas veya başka bir şey varsa, anladım, ancak fark için bir neden göremiyorum. Aynı iş yüküyle (takas yok, neredeyse hiç IO yok), işlemci kullanımı ve yükü bir sunucuda daha yüksektir.

Bu yüzden fark esas olarak CPU'ya bağlı gibi görünüyor, ancak sysbench(diğer tüm yükler kapalıyken) kullanan basit bir işlemci kıyaslaması bir fark yarattı, ancak sadece% 6 idi. Belki de sadece CPU değil, aynı zamanda bellek performansıdır.

Şimdiye kadar kontrol ettim:

  • Tüm bileşenlerde donanım yazılımı revizyonları (aynı)
  • BIOS ayarları (kullanarak bir dökümü yaptım dmidecodeve hiçbir fark göstermedi)
  • Kıyasladım /proc/cpuinfo, fark yok.
  • Çıktılarını karşılaştırdım, cpufreq-infofark yok.
  • Java / JVM Parametreleri (her iki sistemde de aynı sürüm ve parametreler)

Ayrıca, RAM'i birkaç ay önce, hiçbir etkisi olmadan tamamen değiştirdim.

Kayboldum. Anlamak için ne yapabilirim, neler oluyor?

GÜNCELLEME : Yay! Her iki sunucu da şimdi eşit olarak çalışıyor. Yorumlarda jim_m_somewhere adında "power CRAP" ayarları yapıldı. "Güç Yönetimi" için BIOS seçenekleri, hızlı sunucuda "Maksimum Performans" ve diğerinde "Etkin Güç Denetleyicisi" (Dell'den varsayılan ayar) üzerindeydi. Açıkçası, iki yıl önce bu ayarı yaptığımı unuttum ve bunu tüm sunucularda yapmadım. Çok yararlı girdiniz için herkese teşekkürler!


2
Hatalı RAM'iniz olması mümkündür. Uygulamanız ağ ağırsa, ağ yığını boyunca herhangi bir şey olabilir.
Kyle

2
BIOS'taki "Gelişmiş CPU Ayarları" nı karşılaştırabilir misiniz? - Bunu yapmak için bir ipmitool komutu çalıştırabilir mi? RAM'deki hız aynı mı? Disklerde / kontrol cihazlarında yedek pil olup olmadığını kontrol ettiğinizi varsayalım ... sadece "yüksek sesle" düşünerek ... her iki kutudaki RAM de aynı mı? kaydedildi veya kaydedilmedi ... AH ... "power CRAP" - ACPI'nin her iki sunucuda da kapalı olduğunu kontrol ettiniz mi?
jim_m_somewhere

2
aynı veriyi sunuyorlarsa, herhangi bir yük dengelemesi bir fw veya dns'den devam ediyor mu? ağ istatistikleri neye benziyor? Java yapılandırmaları da aynı mıdır? java yığın boyutu aynı mıdır? bu karanlıkta çekim.
au_stan

2
Yazılım yapılandırması gerçekten aynı mı? Örneğin, AppArmor birinde etkin, diğerinde devre dışı mı? Ayrıca 'dmesg' hatalarını kontrol edin.
Anton Cohen

1
Kablolu ağ kablosunu, Switch üzerindeki bağlantı noktasını ve ayrıca iops'u görüyor musunuz veya HDD'nin sağlığını kontrol ediyor

Yanıtlar:


6

Bununla ne kadar ilerlemek istediğinize bağlı olarak iki fikir:

  1. Her iki sunucunun disklerini değiştirin ve hız performansının donanımda kalıp kalmadığını veya yazılımla birlikte hareket edip etmediğini görün.

  2. /opt/dell/toolkit/bin/syscfg -o complete-bios-config.outBu paketi yüklemek için bir şekilde kandırabiliyorsanız çıktısını karşılaştırın .


Dstat çıktısı oldukça net bir şekilde göstermiştir ki, performans farkı, herhangi bir IO gerçekleşmediğinde de ortaya çıkmaktadır. Ubuntu 10.4 üzerine syscfg yüklemek gerçekten zor görünüyor. Ben zaten dmidecode çıktı karşılaştırdı, sysctl daha göstermek? Belki de her BIOS ekranının fotoğrafları için daha az iştir ve karşılaştırır. Bunu deneyebilirim.
the.duckman

1
Diskleri değiştirerek IO'yu araştırmak istemedim, daha ziyade yavaşlığa neden olan yazılım (yanlış) yapılandırmasıysa (örneğin garip bir çekirdek parametresi).
chutz

3

Çıktı ve fark için daha fazla olasılık:

  • sysctl -a (çekirdek ayarlarının aynı olduğundan emin olun)
  • cat / proc / interrupts (Belki başka bir donanım parçası karışıyor?)
  • ipmitool sensör listesi (uzun atış, ancak daha düşük seviye farklılıkları, aşırı ısınma, voltaj sorunları vb.)

Teşekkürler, ne yazık ki bu komutların çıktısında belirgin bir fark yok.
the.duckman

2
Dosyaları yazılım kullanarak karşılaştırırsanız tüm farklılıklar açıktır . Lütfen şu soruya bakın: İki yapılandırma dosyasını nasıl farklılaştırırım?
Skyhawk

3

Kulağa yük dengeleyici gelebilir. "Aynı işyükü" dediğinde bunu nasıl ölçüyorsun?
Tek başına bir test yükü uygulayarak her sunucuyu doğrudan karşılaştırıyor musunuz?
veya Yük dengeleyiciye biraz yük uyguluyor ve her iki sunucudaki sonuçlara mı bakıyorsunuz?

İkincisini (yük dengeleyici aracılığıyla her iki sunucuya yüklenen yükü ölçüyorsanız) yük dengeleyiciniz iş yükünü sunucular arasında tam olarak eşit olarak bölmeyebilir (bir çift sunucu için% 20'lik bir eğim, yük dengeleyiciniz kimin hangi istekleri alacağına karar verir), bu da bir sunucunun daha fazla yük almasına ve dolayısıyla kötü performans göstermesine neden olur.

(Yük dengeleyicisini aracı olarak kullanmadan, her sunucuyu doğrudan karşılaştırıyorsanız ve her bir bileşenin her iki sistem arasında aynı olduğunu (üretici revizyonlarına kadar) doğruladıysanız, kayboldum - Aksi özdeş sunucular arasındaki bu tür bir performans farkı için başka bir ölçülebilir neden düşünemiyorum)


Haklısın, yük dengeleyicimiz de bunu yapıyor - aslında bir özellik. Bu yüzden birçok yolla ölçtüm ve evet, aynı istekleri her sunucuda tek tek "tekrarladım". Ancak, tüm canlı trafiği bir süre için tek bir sunucuya koymak ve her sunucunun yanıtı hazırlamak için gereken süreyi karşılaştırmak daha karmaşık kurulumlarla aynı sonuçları verir.
the.duckman

Hmm - bu durumda resmen güldüm - her şey gerçekten aynı ise (ve oldukça iyi olduğunu onaylamış görünüyoruz) performans sayılarında makul bir hata marjı içinde olmalısınız (±% 5-7) - iki kattan fazla varyasyon görüyorum ve neden olduğu hakkında hiçbir fikrim yok: - /
voretaq7

3

Bazı profilleme araçları gibi profilleme ya sistem deneyin perf veya Java gibi profilleme visualvm .

Perf ile ya çalışan Java sürecini PID ile ya da bir kıyaslama profilini oluşturabilirsiniz. Her iki sisteme de bakın, yavaş sistemin nerede zaman harcadığını görün.

apt-get install linux-tools-common linux-tools

Sonra şöyle bir şey:

perf record -e cpu-cycles -p <pid>

veya

perf record -a -g <benchmark command>

sonra

perf report

Sistemlerin nasıl farklı performans gösterebileceğine dair birkaç fikir:

Çevre: Hava sıcaklığı veya hava akışı farklı mı? Raflardalar mı? Sistemlerin titreşim nedeniyle farklı raf konumlarında farklı performans gösterdiğini gördüm. Her rafta farklı titreşim seviyeleri vardır. Neredeyse hiç G / Ç kullanılmadığını söylemiş olmanız olası değildir. Ancak disklerin bir rafın parçalarındaki titreşim nedeniyle 2MB / sn sıralı yazma işlemlerine kadar yavaşladığını gördüm.

Donanım Hataları: Herhangi bir donanım arızalı olabilir. Neyin yavaş olduğunu görmek için profili kullanın. Kötü bir CPU veya yonga seti, düzgün takılmamış bir soğutucu, titreşime neden olan denge dışı fanlar, başarısız fanlar, hatta kötü bir PSU olabilir. Değiştirmesi kolay şeyleri değiştirmeyi deneyin.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.