it-swarm.asia

Kaç tane Normal Bağlam "normal" (CPU çekirdeğinin (veya başka bir işlev))?

Merhaba Linux/UNIX Derebeyleri,

Bir Linux sunucusunda kaç tane bağlam anahtarının (işlemci çekirdeği başına) Normal olduğuna dair bir kuralınız var mı?

Buradaki kolejim bunu getirdi ve 8 çekirdekli bir x86_64 Makinede 16K görüyor.

İşte son birkaç gündeki sarface'den bazı istatistikler ...

alternatif metin http://src.autonomy.net.au/imagebin/81895e338fae67d3d205c09db44a81e6-Picture_10.png

Ve süreç oluşturma istatistiklerini görmek için, aynı grafiğin logaritmik bir görünümü ...

alternatif metin http://src.autonomy.net.au/imagebin/7481f7e52bead4effc90248fc23c72fe-Picture_11.png

Ve 8 çekirdek ölüme sıkıldı ...

alternatif metin http://src.autonomy.net.au/imagebin/0e94326652e977fd74edcd840f94200f-Picture_12.png

CS ve IOwait (x10000 ölçeği)

alternatif metin http://src.autonomy.net.au/imagebin/a52a2a8a120394849c0da4045933e306-Picture_13.png

Herhangi birinin sorması durumunda daha işe yaramaz bilgi ..

  • Sunucunun üzerinde çalıştığı depolama alanı 0,5 TB SAN
  • 8GB RAM, çoğunlukla önbellek var - takas yok.
37
Xerxes

Bu, büyük ölçüde çalıştırdığınız uygulamanın türüne bağlıdır. Çok tetikleyici WRT sistem çağrıları olan uygulamalarınız varsa, yüksek miktarda bağlam geçişi görmeyi bekleyebilirsiniz. Uygulamalarınızın çoğu boşta kalırsa ve yalnızca bir sokette bir şeyler olduğunda uyanırsa, düşük bağlam değiştirme oranlarını görmeyi bekleyebilirsiniz.

Sistem çağrıları

Sistem çağrıları kendi doğası gereği bağlam değişikliğine neden olur. Bir işlem bir sistem çağrısı yaptığında, temel olarak çekirdeğe geçerli noktadan devralmasını ve işlemin imtiyazlı olmadığı şeyleri yapmasını ve bellek bittiğinde aynı noktaya dönmesini söyler.

Linux'tan write (2) syscall tanımına baktığımızda, bu çok açık bir şekilde ortaya çıkıyor:

 NAME 
 Write - bir dosya tanımlayıcısına yaz 
 
 SYNOPSIS 
 #İnclude 
 [.____. Ssize_t write (int fd, const void * buf, size_t sayımı); 
 
 AÇIKLAMA 
 write (), tampon işaretli bufeden atılan baytları saymak için yazar 
 dosya tanıtıcısı fd. [..] 
 
 DÖNÜŞ DEĞERİ 
 Başarı durumunda, yazılan bayt sayısı döndürülür (sıfır, 
 Hiçbir şeyin yazılmadığını gösterir). Hata durumunda -1 döndürülür ve errno 
 Uygun şekilde ayarlanır. 
 [..] 

Bu temel olarak çekirdeğe işlemi count bayta kadar hareket etmesini, *buf İle gösterilen bellek adresinden başlayarak geçerli dosya tanımlayıcısına fd aktarmasını söyler. sonra tekrar işleme dönüp ona nasıl gittiğini söyle.

Bunu göstermek için güzel bir örnek, Valve Source tabanlı oyunlar için özel oyun sunucusudur, hlds . http://nopaste.narf.at/f1b22dbc9 , üzerinde hiçbir oyuncu bulunmayan bir oyun sunucusunun tek bir örneği tarafından yapılan bir saniyelik sistem çağrılarını gösterir. Bu işlem, Xeon X3220 (2.4Ghz) üzerinde yaklaşık% 3 CPU zamanı alır, bu da size bunun ne kadar pahalı olduğuna dair bir his verir.

Çok Amaçlı

Bağlam değiştirmenin başka bir kaynağı, sistem çağrısı yapmayan, ancak diğer işlemlere yer açmak için belirli bir CPU'dan taşınması gereken süreçler olabilir.

Bunu görselleştirmenin güzel bir yolu cpuburn . cpuburn herhangi bir sistem çağrısı yapmaz, sadece kendi hafızasını tekrarlar, bu yüzden herhangi bir bağlam değişikliğine neden olmamalıdır.

Boş bir makine alın, vmstat'ı başlatın ve ardından sistemin sahip olduğu her CPU çekirdeği için bir burnMMX (veya cpuburn paketinden farklı bir test) çalıştırın. O zamana kadar tam sistem kullanımına sahip olmanız gerekir, ancak içerik geçişi neredeyse hiç artmaz. Ardından birkaç işlem daha başlatmayı deneyin. İşlemler CPU çekirdeği üzerinde rekabet etmeye başladığında bağlam değiştirme oranının arttığını göreceksiniz. Anahtarlama miktarı, işlemlerin/çekirdek oranının ve çekirdeğinizin çoklu görev çözünürlüğüne bağlıdır.

Daha fazla okuma

linfo.org'un bağlam anahtarları ve sistem çağrıları neler olduğuna dair güzel bir yazımı vardır. Wikipedia , sistem çağrılarında genel bilgilere ve Nice bağlantı koleksiyonuna sahiptir.

26
Michael Renner

orta derecede yüklü web sunucum 100-150 anahtarda oturuyor ve çoğu zaman zirveleri binlere çeviriyor.

Yüksek bağlam değiştirme oranları kendileri için bir sorun değildir, ancak daha önemli bir soruna yol açabilirler.

edit: Bağlam anahtarları bir neden değil, bir semptomdur. Sunucuda ne çalıştırmaya çalışıyorsunuz? Çok işlemcili bir makineniz varsa, ana sunucu işlemleriniz için cpu benzeşimi ayarlamayı deneyebilirsiniz.

Alternatif olarak X kullanıyorsanız, konsol moduna geçmeyi deneyin.

tekrar düzenleme: saniyede 16k cs'de, her cpu, milisaniye başına iki anahtarın ortalamasını alır - bu, normal zaman diliminin yarısının altıda birine karşılık gelir. Çok sayıda IO ilişkili iş parçacığı çalıştırıyor olabilir mi?

tekrar düzenleme sonrası grafikler: Kesinlikle görünüyor IO bağlı. Sistem zamanının çoğunu bağlam anahtarları yüksek olduğunda SYS'de geçiriyor mu?

bir kez daha düzenleyin: Son grafikte yüksek iowait ve sistem - tamamen kullanıcı alanını yansıtan. IO sorunlarınız var.
Hangi FC kartını kullanıyorsunuz?

düzenlemek: hmmm. bazı kriterler SAN bonnie ++ veya dbench ile deadtime sırasında erişim oluyor herhangi bir şans? Benzer sonuçlara sahip olup olmadığını görmek istiyorum.

edit: Hafta sonu boyunca bu konuda düşünüyorum ve bonnie "bir seferde bir bayt yazmak" geçişi yaparken benzer kullanım patters gördüm. Her yazma işlemi ayrı bir sistem çağrısı gerektireceğinden, bu durum büyük miktarda anahtarlamanın devam ettiğini açıklayabilir.

7
jay_dubya

Bunun gibi şeyler, sunucularınız için performans taban çizgilerini neden denemelisiniz. Bu şekilde, aniden fark ettiğiniz şeyleri geçmişte kaydettiğiniz şeylerle karşılaştırabilirsiniz.

Yani, bazı 4k zirveleri ile 2k civarında sabit olan sunucuları (özellikle çok meşgul Oracle sunucuları değil) var dedi. Sunucularım için, bu normaldir, diğer kişilerin sunucuları için çok düşük veya çok yüksek olabilir.

Verilerinize ne kadar ileri gidebilirsiniz?

Bize ne tür CPU bilgileri verebilirsiniz?

1
wzzrd

Sistem durumunun CPU doluluk oranı hakkında endişelenmeye daha yatkınım. % 10 veya daha yüksek bir değere sahipse, işletim sisteminiz bağlam anahtarlarını yapmak için çok fazla zaman harcıyor demektir. Bazı işlemleri başka bir makineye taşımakla birlikte much daha yavaş olsa da, yani.

1
hashei

Temel kural yok. Bağlam anahtarı, yalnızca bir iş parçacığını işlemden diğerine hareket eden CPU'dur. Çok sayıda işlem (veya birkaç yüksek iş parçacıklı işlem) çalıştırırsanız daha fazla anahtar görürsünüz. Neyse ki, kaç bağlam anahtarının olduğu konusunda endişelenmenize gerek yok - maliyet küçük ve az çok kaçınılmaz.

0
Alex J