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 -al
hang 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!
Jawaban:
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.
sumber
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 ...
sumber
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.
sumber
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.
sumber
Meskipun Anda mungkin tidak memukul swap, Anda mungkin masih terikat I / O. Info ls menyarankan ini.
Saya akan melihat output
dstat -df
untuk menampilkan statistik disk, ataudstat -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.
sumber