256 GB mem / 48 Çekirdekli Linux - Makine tonlarca bellek kaldığında çöker / boğulmaya başlar


12

Makine: Dell r815, CentOS 5.4, 256GB RAM, 4 x 12 Çekirdek.

275GB'lık bir dosyaya sahip bir uygulamamız var. Bir seferde 20 GB veri üzerinde yerinde sıralama yapar, yani bitleri değiştirir ve aynı dosyada değiştirir. Tüm bunlar iyi çalışıyor.

Daha sonra tüm dosyayı okuyan ve farklı 20 GB'lık yığınlarda birleştirme sıralaması yapan ve bunları tamamen yeni bir dosyaya çıkaran son bir geçiş vardır.

Bu işlem bir süre iyi çalışır SEEMS ve diske 50GB civarında kızarma ile sonuçlanır. Bundan bir süre sonra TÜM makine çıldırmaya başlar.

ps -ef, Gibi basit komutlar ls -aluzun süre askıda kalır ve% 100 CPU (sadece bir çekirdek) alır gibi görünür .

Bellek istatistiklerine baktığımda, topyaklaşık 120GB RAM (128GB boş) kullandığını ve "önbellek" bölümünde 120GB olduğunu görüyorum.

Daha önce bu tür davranışlar gören var mı? Aynı işlem 64GB belleğe sahip bir makinede iyi çalışıyor - bu yüzden bir şekilde makinedeki RAM montajıyla ilgili olduğunu düşünüyorum.

(konuştuğumuzda, bir donanım sorununu ekarte etmek için bu makinede testi 64GB hariç tümü ile çalıştırıyorum).

Belki de bazı vm parametreleri kaçırıyor muyum /etc/sysctrl.conf?

Teşekkürler!


Diskler ne yapıyor .. Takas cehenneme mi gidiyorsun ????
Arenstar

64 bit çekirdek / uygulama / vb? % 100 CPU'dan bahsettiniz, ne zaman yük ortalaması nedir, uygulama çok iş parçacıklı (eğer değilse tüm işlemcileri kullanmaz), vmstat 4'ün size söylediği (özellikle io / cpu)
coredump 17:10

Bu "ps" gibi% 100 işlemci% 4800 dışında (çünkü 48 çekirdek) - bu yüzden büyük olasılıkla io ya da bir şey tarafından engellenir. kutudaki yük ortalaması sadece 5. gibidir. Katı durumdaki diskler çok fazla
yazım görmüyor ...

makine hiç değişmiyor.
aspitzer

1
evet .. 64gb ile şimdi çalıştırıyorum. makinedeki toplam mem miktarı ile ilgili olup olmadığını bir saat içinde bilmeli
aspitzer

Yanıtlar:


12

Sorunuz bana son zamanlarda okuduğum bir şeyi hatırlattı:

http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/

Bu, NUMA mimarilerinin (örneğin 48 çekirdekli bir AMD sisteminde bulabileceğiniz gibi) bellek tahsisini ve değiştirmeyi nasıl etkilediğini ele alır. Bu durumla karşılaşıp karşılaşmadığınızı bilmiyorum ama okumaya değecek kadar benzer geliyordu.

Bu cevap olmasa bile büyüleyici okuma için yapar.


1
Bu sorunun problemine layık bir çekim gibi görünüyor. Ve bu harika bir okuma.
coredump

1
Bu harika bir okuma ve 4 soket, düğüm başına 256Gb RAM = 64Gb ve belgedeki durumu tam olarak yineleyen sorun yaşadığınız yer gibi görünüyor.
Mark Henderson

12

Yani bu 64bit Centos 5.4 ve 64bit Fedora 14'te bir çekirdek hatası gibi görünüyordu. Centos 5.5'i yükledikten sonra sorun ortadan kalktı.

Üzgünüm, herkes için daha iyi bir cevabım yok ...


1
Hey dostum, eğer onu düzelttiyse, onu düzelttim. Kendinize onay işareti verin, böylece diğer insanlar zorluklarınızdan öğrenebilir :-)
mfinni

0

Takasın yalnızca kesinlikle gerekli olduğunda kullanılacağını belirtmek için /etc/sysctl.conf dosyasına bir satır eklemeyi deneyebilirsiniz.

swappiness = 0

Bu dosyanın genel ayarları tanımladığını zaten biliyor olabilirsiniz, bu nedenle bu değişikliğin ortamdaki diğer uygulamalar üzerindeki etkisini dikkate almanız gerekir.


Bu zaten ayarlanmış ... ama söylediğim gibi 128GB ücretsiz - bu yüzden herhangi bir takas sorunu vurmuyor.
aspitzer

0

Geçici alanınız nerede. Genellikle tempflerde. Tempfs, takas alanı tarafından yedeklenen bellekten yer alır, bu nedenle tempflerde çok fazla şeyle sonuçlanırsanız, takas G / Ç'yi tetikler.

Birleştirdiğiniz verilerin boyutu göz önüne alındığında, son birleştirmeye bastığınızda swappiness beklenir.

Takas depolama alanınızı birden çok diske yaymak yardımcı olabilir.


0

Takas yapmamanıza rağmen, yine de G / Ç bağlı olabilirsiniz. Ls bilgisi bunu önerir.

dstat -dfDisk istatistiklerini göstermek için çıktıya bakacağım , ya da dstat -af(evet, bir bajillion sütun genişliğinde olacak; 48 çekirdek varsa ve hepsinde CPU kullanımını gösterdiğinizde).

Tüm CPU'lar meşgulse şaşırırdım (birleştirme sıralaması CPU yoğun bir görev değildir), ancak G / Ç sisteminizden hiçbir şey söylemezsiniz. Az sayıda diskiniz ve bir grup dosyanız varsa, birleştirme sıralamasını beslemek için her dosya için arama yapan diski çöpe atıyor olabilirsiniz.

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.