Linux dengan 256GB mem / 48 Cores - Machine mulai meronta-ronta / tersedak dengan banyak memori yang tersisa

12

Mesin: Dell r815, CentOS 5.4, RAM 256GB, 4 x 12 Cores.

Kami memiliki aplikasi yang memiliki file 275GB. Itu semacam di tempat pada 20GB data pada suatu waktu yaitu swap bit sekitar dan menggantikannya dalam file yang sama. Ini semua berfungsi dengan baik.

Ada pass terakhir yang kemudian membaca seluruh file dan melakukan semacam penggabungan pada potongan 20GB yang berbeda, dan output mereka ke file yang sama sekali baru.

Proses ini tampaknya berjalan oke untuk sementara waktu dan akhirnya keluar sekitar 50GB ke disk. Beberapa saat setelah ini, mesin SELURUH mulai panik.

Perintah sederhana seperti ps -ef,, ls -alhang untuk waktu yang lama dan muncul dengan mengambil CPU 100% (yang hanya satu inti).

Melihat statistik memori aktif top, saya melihat bahwa ia menggunakan sekitar 120GB RAM (jadi 128GB gratis) dan memiliki 120GB di bawah bagian "cache".

Adakah yang pernah melihat perilaku seperti ini sebelumnya? Proses yang sama berjalan dengan baik pada mesin dengan 64GB memori - jadi entah bagaimana saya pikir itu terkait dengan pemasangan RAM yang saya miliki di mesin.

(Seperti yang kita bicarakan, saya menjalankan tes pada mesin ini dengan semua kecuali 64GB - untuk menyingkirkan masalah perangkat keras).

Apakah saya mungkin melewatkan beberapa vm params /etc/sysctrl.conf?

Terima kasih!

aspitzer
sumber
Apa yang sedang dilakukan disk ..
Arenstar
64 bit kernel / app / etc? Anda menyebutkan 100% cpu, apa rata-rata beban ketika itu terjadi, ini adalah aplikasi multithreaded (tidak akan menggunakan semua prosesor jika tidak), apa yang vmstat 4 memberitahu Anda (io / cpu khusus)
coredump
ini seperti "ps" adalah 100% cpu keluar dari 4800% (karena 48 core) - jadi kemungkinan besar diblokir oleh io atau sesuatu. rata-rata memuat pada kotak hanya seperti 5. disk, yang solid state tidak melihat banyak menulis ... Sepertinya lebih banyak masalah kernel daripada sumber daya
aspitzer
mesin tidak bertukar sama sekali.
aspitzer
1
yeah .. jalankan dengan 64GB sekarang. harus tahu dalam satu jam jika terkait dengan jumlah total mem di mesin
aspitzer

Jawaban:

12

Pertanyaan Anda mengingatkan saya pada sesuatu yang saya baca baru-baru ini:

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

Ini membahas bagaimana arsitektur NUMA (seperti yang mungkin Anda temukan di, katakanlah, sistem AMD 48 inti) memengaruhi alokasi dan pertukaran memori. Saya tidak tahu apakah ini yang Anda temui, tetapi kedengarannya cukup mirip sehingga mungkin layak dibaca.

Bahkan jika itu bukan jawaban yang dibuatnya untuk bacaan yang menarik.

larsks
sumber
1
Itu tampaknya merupakan kesempatan yang layak untuk mengatasi masalah pertanyaan ini. Dan itu bacaan yang fantastis.
coredump
1
Itu adalah bacaan yang bagus, dan 4 soket, 256Gb RAM = 64Gb per node, dan itu tampaknya di mana Anda mengalami masalah, yang mereplikasi situasi dalam dokumen dengan tepat.
Mark Henderson
12

Jadi ini tampaknya bug kernel di 64bit Centos 5.4 DAN 64bit Fedora 14. Setelah saya menginstal Centos 5.5, kemudian masalah hilang.

Maaf saya tidak punya jawaban yang lebih baik untuk semua orang ...

aspitzer
sumber
1
Hei teman, jika itu yang memperbaikinya, itulah yang memperbaikinya. Beri diri Anda tanda centang, sehingga orang lain dapat belajar dari kesulitan Anda :-)
mfinni
0

Anda dapat mencoba menambahkan baris ke /etc/sysctl.conf untuk menentukan bahwa swap hanya digunakan jika benar-benar diperlukan.

swappiness = 0

Anda mungkin sudah menyadari bahwa file ini mendefinisikan pengaturan global, jadi ada kebutuhan untuk mempertimbangkan dampak perubahan ini terhadap sisa aplikasi yang berjalan di lingkungan.

NginUS
sumber
yang sudah diatur ... tapi seperti yang saya sebutkan, ada 128GB gratis - jadi tidak ada masalah swap.
aspitzer
0

Di mana ruang temp Anda. Seringkali pada tempfs. Tempfs menarik ruang dari memori yang dicadangkan oleh ruang swap, jadi jika Anda berakhir dengan terlalu banyak barang di tempfs akan memicu swap I / O.

Mengingat ukuran data yang Anda gabungkan saya harapkan swappiness ketika Anda menekan gabungan terakhir.

Menyebarkan penyimpanan swap Anda ke beberapa disk dapat membantu.

BillThor
sumber
0

Meskipun Anda mungkin tidak memukul swap, Anda mungkin masih terikat I / O. Info ls menyarankan ini.

Saya akan melihat output dstat -dfuntuk menampilkan statistik disk, atau dstat -af(ya, itu akan menjadi kolom bajillion lebar; ini adalah apa yang terjadi ketika Anda memiliki 48 core dan menunjukkan penggunaan CPU pada mereka semua) jika Anda ingin melihat semuanya.

Saya akan terkejut jika semua CPU sibuk (menggabungkan sorting bukan tugas intensif CPU), tetapi Anda mengatakan apa-apa tentang sistem I / O Anda. Jika Anda memiliki beberapa disk dan banyak file, Anda bisa meronta-ronta disk melakukan mencari ke setiap file untuk menjaga makan gabungan jenis.

Slartibartfast
sumber