Masalahnya saya pikir agak mirip dengan utas ini .
Tidak masalah jika saya memiliki swap diaktifkan atau dinonaktifkan, setiap kali jumlah RAM yang digunakan nyata mulai mendekati maksimum dan hampir tidak ada ruang tersisa untuk cache disk, sistem menjadi benar-benar tidak responsif.
Disk spinnig liar, dan kadang-kadang setelah lama menunggu 10-30 menit itu akan mencair, dan kadang-kadang tidak (atau saya kehabisan kesabaran). Kadang-kadang jika saya bertindak cepat, saya bisa mengatur untuk perlahan-lahan membuka konsol dan mematikan beberapa aplikasi pemakan ram seperti browser, dan sistem itu hampir selesai secara instan.
Karena masalah ini saya hampir tidak pernah melihat apa pun di swap, hanya kadang-kadang ada beberapa MB di sana, dan kemudian segera setelah masalah ini muncul. Dugaan saya yang tidak berpendidikan adalah bahwa entah bagaimana terhubung ke cache disk yang terlalu serakah, atau manajemen memori terlalu lunak, jadi ketika memori diperlukan tidak dibebaskan dengan cukup cepat dan membuat sistem kelaparan.
Masalah dapat dicapai dengan sangat cepat jika bekerja dengan file lagrge (500MB +) yang dimuat dalam cache disk dan jelas setelah itu sistem tidak dapat membongkar mereka dengan cukup cepat.
Bantuan atau Ide apa pun akan sangat dihargai.
Untuk saat ini saya harus hidup dalam ketakutan yang konstan, ketika melakukan sesuatu komputer dapat membeku dan saya biasanya harus me-restart itu, jika itu benar-benar kehabisan ram saya akan lebih suka untuk hanya membunuh beberapa aplikasi userspace, seperti broser ( lebih baik jika saya entah bagaimana bisa menandai mana yang harus dibunuh terlebih dahulu)
Meskipun kesalahannya adalah mengapa tidak bertukar menyelamatkan saya dalam situasi ini.
UPDATE: Tidak bertahan selama beberapa waktu, tapi sekarang saya mendapatkan beberapa kejadian lagi. Saya sekarang menjaga monitor ram di layar saya setiap saat dan ketika hang terjadi masih menunjukkan ~ 30% gratis (Digunakan oleh cache disk mungkin). Gejala tambahan: Jika pada saat saya menonton video (VLC player) suara berhenti lebih dulu, setelah beberapa detik gambar berhenti. Sementara suara telah berhenti saya masih memiliki kontrol atas PC, tetapi ketika gambar berhenti saya bahkan tidak bisa menggerakkan mouse lagi, jadi saya me-restart setelah menunggu beberapa lama. Btw, ini tidak terjadi ketika saya mulai menonton video tetapi beberapa waktu dalam (20 menit) dan saya tidak aktif melakukan hal lain pada saat itu, meskipun browser dan oowrite terbuka di layar kedua sepanjang waktu. Pada dasarnya sesuatu hanya memutuskan untuk terjadi pada satu titik dan menggantung sistem.
Sesuai permintaan dalam komentar saya berlari dmesg tepat setelah hang. Saya tidak melihat sesuatu yang aneh, tetapi tidak tahu apa yang harus dilihat, jadi ini dia: https://docs.google.com/document/d/1iQih0Ee2DwsGd3VuQZu0bPbg0JGjSOCRZhu0B05CMYs/edit?hl=id_edit&authkeyccc7
Jawaban:
Untuk memperbaiki masalah ini, saya telah menemukan bahwa Anda perlu mengatur pengaturan berikut untuk sekitar 5% -6% dari total RAM fisik Anda, dibagi dengan jumlah core di komputer:
Perlu diingat bahwa ini adalah pengaturan per-inti, jadi jika saya memiliki 2GB RAM dan dua Cores, maka saya menghitung 6% dari hanya 1 GB dan menambahkan sedikit tambahan hanya untuk aman.
Ini memaksa komputer untuk mencoba menjaga jumlah RAM ini bebas, dan dengan demikian membatasi kemampuan untuk melakukan cache file disk. Tentu saja masih mencoba untuk men-cache mereka dan segera menukar mereka, jadi Anda mungkin harus membatasi swapping Anda juga:
(100 = tukar sesering mungkin, 0 = tukar hanya dengan kebutuhan total)
Hasilnya adalah bahwa linux tidak lagi secara acak memutuskan untuk memuat seluruh file film sekitar 1GB dalam ram saat menontonnya, dan mematikan mesin dalam melakukannya.
Sekarang ada cukup ruang yang disediakan untuk menghindari kelaparan memori, yang mungkin merupakan masalah (mengingat tidak ada lagi pembekuan seperti sebelumnya).
Setelah pengujian selama satu hari - penguncian hilang, kadang-kadang ada pelambatan kecil, karena hal-hal di-cache lebih sering, tetapi saya bisa hidup dengan itu jika saya tidak perlu me-restart komputer setiap beberapa jam.
Pelajaran di sini adalah - manajemen memori default hanyalah salah satu kasus penggunaan dan tidak selalu yang terbaik, meskipun beberapa orang mencoba menyarankan sebaliknya - hiburan rumah ubuntu harus dikonfigurasi secara berbeda dari server.
Anda mungkin ingin menjadikan pengaturan ini permanen dengan menambahkannya ke Anda
/etc/sysctl.conf
seperti ini:sumber
vm.swappiness
akan melakukan apa-apa dalam kasus itu, saya kira?vm.min_free_kbytes
terjadi. Ini bertindak sebagai blok halaman yang disediakan untuk memudahkan__GFP_WAIT
alokasi atom (mis., Isi atau matikan / non- ) ketika berada di bawah pertentangan memori sistem yang tinggi. Ini bisa memang masuk akal untuk menaikkan sini (sebagai mungkin warung ini terkait dengan contention memori sistem), tapi itu pasti tidak akan untuk alasan yang dijelaskan dalam jawaban ini.Ini terjadi pada saya di instalasi baru Ubuntu 14.04.
Dalam kasus saya, itu tidak ada hubungannya dengan masalah sysctl yang disebutkan.
Sebaliknya, masalahnya adalah bahwa UUID partisi swap berbeda selama instalasi daripada setelah instalasi. Jadi swap saya tidak pernah diaktifkan, dan mesin saya akan terkunci setelah digunakan beberapa jam.
The solusi adalah untuk memeriksa UUID saat partisi swap dengan
dan kemudian
sudo nano /etc/fstab
untuk mengganti nilai UUID swap yang salah dengan yang dilaporkan oleh blkid.Reboot sederhana untuk memengaruhi perubahan, dan voila.
sumber
Saya tahu pertanyaan ini sudah lama, tetapi saya mengalami masalah ini di Ubuntu (Chrubuntu) 14.04 pada Chromebook Acer C720. Saya mencoba solusi Krišjānis Nesenbergs, dan itu bekerja agak, tetapi kadang-kadang masih macet.
Saya akhirnya menemukan solusi yang bekerja dengan menginstal zram daripada menggunakan pertukaran fisik pada SSD. Untuk menginstalnya saya cukup ikuti instruksi di sini , seperti ini:
Setelah itu saya dapat mengkonfigurasi ukuran swap zram dengan memodifikasi
/etc/init/zram-config.conf
pada baris 21.Saya mengganti 2 dengan 1 untuk membuat ukuran zram dengan ukuran yang sama dengan jumlah ram yang saya miliki. Sejak melakukan itu, saya tidak lagi memiliki sistem macet atau tidak responsif.
sumber
zram
adalah opsi yang layak hanya jika Anda tidak dapat menginstal lebih banyak RAM. Jika sistem terlalu lambat ketika bertukar ke SSD dan keluar dari RAM tanpa swap, makazram
dapat membantu sedikit sampai Anda mencoba untuk melakukan sedikit lebih banyak dan hasilnya sama seperti kehabisan RAM tanpa swap.Tidak ada yang berhasil untuk saya !!
Jadi saya menulis skrip untuk memonitor penggunaan memori. Pertama-tama akan mencoba untuk menghapus cache RAM jika konsumsi memori meningkatkan ambang batas. Anda dapat mengkonfigurasi ambang ini pada skrip. Jika konsumsi memori tidak sampai di bawah ambang batas, maka akan mulai mematikan proses satu per satu dalam urutan konsumsi memori yang menurun sampai konsumsi memori di bawah ambang batas. Saya telah menetapkannya ke 96% secara default. Anda dapat mengonfigurasinya dengan mengubah nilai variabel RAM_USAGE_THRESHOLD dalam skrip.
Saya setuju bahwa proses pembunuhan yang menggunakan memori tinggi bukanlah solusi yang sempurna, tetapi lebih baik untuk membunuh SATU aplikasi daripada kehilangan SEMUA pekerjaan !! skrip akan mengirimkan pemberitahuan desktop kepada Anda jika penggunaan RAM meningkatkan ambang batas. Ini juga akan memberi tahu Anda jika itu membunuh proses apa pun.
Simpan kode dalam file say save_hang.py. Jalankan skrip sebagai:
Harap dicatat bahwa skrip ini hanya kompatibel untuk Python 3 dan mengharuskan Anda untuk menginstal paket tkinter. Anda dapat menginstalnya sebagai:
Semoga ini membantu...
sumber
Dugaan saya adalah bahwa Anda telah menetapkan
vm.swappiness
nilai yang sangat rendah, yang menyebabkan kernel terlambat bertukar, meninggalkan terlalu sedikit RAM untuk sistem untuk bekerja.Anda dapat menunjukkan pengaturan swappiness Anda saat ini dengan menjalankan:
Secara default, ini diatur ke 60. Wiki Ubuntu merekomendasikan untuk mengaturnya menjadi 10, tetapi jangan ragu untuk mengaturnya ke nilai yang lebih tinggi. Anda dapat mengubahnya dengan menjalankan:
Ini akan mengubahnya hanya untuk sesi saat ini , untuk membuatnya persisten, Anda perlu menambahkan
vm.swappiness = 10
ke/etc/sysctl.conf
file.Jika disk Anda lambat, pertimbangkan untuk membeli yang baru.
sumber
dmesg
perintah, Anda harus melihat beberapa informasi (dan nama proses + id) dari proses. Saya pikir Anda sebaiknya membeli disk baru yang lebih cepat. Atau tingkatkan RAM Anda.Saya telah berjuang dengan masalah ini untuk waktu yang lama, tetapi sekarang tampaknya sudah diselesaikan pada Laptop saya.
Jika tidak ada jawaban lain yang berfungsi untuk Anda (saya sudah mencoba sebagian besar dari mereka), bermainlah dengan min_free_kbytes , untuk memiliki lebih banyak ruang dalam RAM ketika komputer Anda mulai bertukar (tepat sebelum mencapai nilai minimum ini pada RAM gratis Anda).
Saya memiliki 16GB RAM, tetapi lebih cepat daripada kemudian memori menjadi penuh dan kemudian berhenti merespons selama 10 hingga 30 menit, sampai beberapa hal ditukar.
Setidaknya bagi saya, pengaturan nilai min_free_kbytes di atas apa yang disarankan membuat proses swapping lebih cepat.
Untuk RAM 16GB, coba ini:
Untuk mengatur nilai ini, lihat jawaban lain, atau cukup google saja :)
sumber
Saya menjalankan salah satu laptop saya dari kartu SD Ubuntu langsung terus-menerus, dengan partisi penyimpanan ext4 kecil dan file swap pada hard drive. Ketika hampir semua RAM digunakan dan nilai swappiness terlalu rendah (kadang-kadang saya lebih suka menjaga hard drive sepenuhnya jika mungkin, karena berisik), kinerja Linux cenderung jatuh dari tebing untuk saya, sehingga hanya untuk mendapatkan TTY1 untuk mematikan Firefox membutuhkan waktu 15 menit.
Meningkatkan
/proc/sys/vm/vfs_cache_pressure
dari default 100 ke nilai 6000 tampaknya membantu mencegah hal ini. Namun, dokumentasi kernel memperingatkan tidak melakukannya, mengatakanSaya tidak sepenuhnya yakin tentang efek samping dari melakukan ini, jadi saya akan berhati-hati melakukan ini.
sumber
vfs_cache_pressure
mendekati 10 (yaitu, jauh lebih sedikit dari 100) dan pengaturanmin_free_kbytes
lebih tinggi. Berhati-hatilah bahwa jika Anda menyetelmin_free_kbytes
terlalu tinggi, pembunuh OOM kernel akan membunuh semua orang!min_free_kbytes
ke 262144, dan saya telah mengamati bahwa menurunkanvfs_cache_pressure
memiliki efek sebaliknya - menurunkannya di bawah 100 membuat sistem menjadi tidak responsif jauh lebih cepat. Saya tidak yakin persis mengapa.vfs_cache_pressure
akan menyebabkan direntries untuk dibuang sebelum konten file di-cache dan sebagai hasilnya, kinerja keseluruhan biasanya akan menderita dengan nilai lebih dari 100. kemudian pengembang kernel dapat mengetahui akar penyebabnya. Bagi saya, hang terjadi tanpa peringatan apa pun. Tebakan terbaik saya adalah bahwa kernel hang karena OOM sebelum OOM Killer telah membebaskan RAM yang cukup. Saya sekarang menjalankan min_free_kbytes = 100000, admin_reserve_kbytes = 250000 dan user_reserve_kbytes = 500000.