Pada sistem yang baru dimulai, free
melaporkan tentang 1,5G RAM yang digunakan (8G RAM secara keseluruhan, Ubuntu 12,04 dengan lightdm dan desktop plasma, satu jendela konsole dimulai). Setelah aplikasi berjalan saya gunakan, masih mengkonsumsi tidak lebih dari 2G. Namun, setelah sistem berjalan selama beberapa hari, semakin banyak RAM gratis saya menghilang - tanpa muncul dalam daftar aplikasi yang digunakan: sementara smem --pie=name
laporan kurang dari 20% digunakan (dan 80% tersedia), semuanya mengatakan berbeda. free -m
misalnya laporan sekitar hari ke 7:
total used free shared buffers cached
Mem: 7459 7013 446 0 178 997
-/+ buffers/cache: 5836 1623
Swap: 9536 296 9240
(jadi Anda bisa lihat, itu bukan buffer atau cache). Hari ini akhirnya berakhir dengan sistem crash sepenuhnya: manajer windows hilang, aplikasi "menggantung di udara" (tanpa bingkai) - dan sembulan memberitahu saya tentang "terlalu banyak file yang terbuka". Laporan Syslog:
kernel: [856738.020829] VFS: file-max limit 752838 reached
Jadi saya menutup aplikasi yang saya bisa tutup, dan membunuh X menggunakan Ctrl-Alt-backspace. X mencoba muncul lagi setelah itu dengan failafeX, tetapi tidak dapat melakukannya karena tidak dapat lagi mendeteksi konfigurasinya. Jadi saya beralih ke konsol menggunakan Ctrl-Alt-F2, menangkap semua informasi yang dapat saya pikirkan (vmstat, gratis, smem proc/meminfo
,, lsof, ps aux
), dan akhirnya reboot. X kembali dengan failafeX; kali ini saya menyuruhnya untuk "memulihkan dari konfigurasi cadangan saya", kemudian beralih ke konsol dan berhasil digunakan startx
untuk memunculkan lingkungan grafis.
Saya tidak memiliki petunjuk nyata tentang apa yang menyebabkan masalah ini - meskipun itu harus ada hubungannya dengan X itu sendiri, atau dengan beberapa proses pengguna yang berjalan pada X - karena setelah membunuh X, free -m
output tampak seperti ini:
total used free shared buffers cached
Mem: 7459 2677 4781 0 62 419
-/+ buffers/cache: 2195 5263
Swap: 9536 59 9477
(~ 3.5GB dibebaskan) - untuk membandingkan dengan output setelah awal yang baru:
total used free shared buffers cached
Mem: 7459 1483 5975 0 63 730
-/+ buffers/cache: 689 6769
Swap: 9536 0 9536
Dua keluaran bermanfaat lainnya disediakan oleh memstat -u
. Sesaat sebelum kecelakaan:
User Count Swap USS PSS RSS
mail 1 0 200 207 616
whoopsie 1 764 740 817 2300
colord 1 3200 836 894 2156
root 62 70404 352996 382260 569920
izzy 80 177508 1465416 1519266 1851840
Setelah membunuh X:
User Count Swap USS PSS RSS
mail 1 0 184 188 356
izzy 1 1400 708 739 1080
whoopsie 1 848 668 826 1772
colord 1 3204 804 888 1728
root 62 54876 131708 149950 267860
Dan setelah restart, kembali X:
User Count Swap USS PSS RSS
mail 1 0 212 217 628
whoopsie 1 0 1536 1880 5096
colord 1 0 3740 4217 7936
root 54 0 148668 180911 345132
izzy 47 0 370928 437562 915056
Sunting: Baru saja menambahkan dua grafik dari sistem pemantauan saya. Menarik untuk dilihat: setiap kali ketika ada "lompatan" dalam konsumsi memori, CPU juga mengalami puncak. Baru saja menemukan ini sekarang - dan itu mengingatkan saya pada indikator lain yang menunjuk ke X itu sendiri: Seringkali ketika kembali ke mesin saya dan membuka kunci layar, saya menemukan sesuatu melakukan pekerjaan berat pada CPU saya. Memeriksa top
, ternyata selalu begitu /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none
.
Jadi setelah penjelasan yang panjang ini, akhirnya pertanyaan saya:
- Apa yang mungkin menjadi penyebabnya?
- Bagaimana saya bisa lebih mengidentifikasi proses / aplikasi yang terlibat?
- Langkah apa yang bisa diambil untuk menghindari perilaku ini - pendek dari me-reboot mesin semua X hari?
Saya menjalankan 8.04 (Hardy) selama sekitar 5 tahun pada mesin lama saya, tidak pernah mengalami hal yang sama (selalu lebih dari 100 hari uptime, sebelum me-reboot misalnya pembaruan kernel). Ini sekarang adalah mesin baru yang lengkap dengan instalasi baru 12,04 . Dalam hal ini penting, beberapa spesifikasi:
AMD A4-3400 APU dengan Radeon (tm) HD Graphics, menggunakan driver ati / radeon open-source (jadi tidak ada fglrx terpasang), RAM 8GB, WDC WD1002FAEX-0 hdd (1TB), Asus EA F1A75-V mainboard. Ubuntu 12,04 64-bit dengan KDE4 / Plasma. Aplikasi biasanya terbuka kurang lebih secara permanen termasuk Evolution, Firefox, konsole (dengan Midnight Commander berjalan di dalam, sekitar 4 tab), dan LibreOffice - ditambah sesekali Kaliber, Gimp dan Moneyplex (perangkat lunak perbankan yang sudah saya gunakan selama hampir 20 tahun sekarang, dalam versi yang baik-baik saja di Hardy).
Sunting:
Hari ini saya menemukan salah satu "orang jahat": plasma-desktop KDE4s. Memori yang digunakan lagi hingga 5GB, ketika saya melakukan killall plasma-desktop && plasma-desktop
. Ini membebaskan RAM 1,3GB! ps
mengatakan:
RSS SIZE VSZ
plasma usage before restart 120988 526472 1300816
plasma usage after restart 92352 495972 1263632
Jadi di mana 1.3GB itu? Perbedaan antara nilai-nilai itu, jika ditambahkan, berjumlah 96MB - bukan 1,3GB.
Dan ini hanya bisa menjadi satu bagian, karena masih 3.7GB sedang digunakan (harus kurang dari 2GB). Saya memonitor ini selama 6 hari terakhir menggunakan beberapa alat: memori yang digunakan (tidak berbicara tentang cache dan buffer) meningkat perlahan tapi pasti. Bahkan jika saya tidak di meja saya untuk menjalankan apa pun ...
Mengenai proses pemantauan dengan file terbuka, saat ini saya menggunakan 1-liner berikut (Saya suka shell dan terutama bash) untuk mendapatkan top-5:
echo "$(for pid in $(ls -a /proc|egrep '^([0-9])*$'|sort -n 2>/dev/null); do \
if [ -e /proc/$pid/fd ]; then FHC=$(ls -l /proc/$pid/fd|wc -l); \
if [ $FHC -gt 0 ]; then PNAME="$(cat /proc/$pid/comm)"; \
echo "$FHC files opened by $pid ($PNAME)"; fi; fi; done)"|sort -r -n|head -n5
Perintah di sini dalam 4 baris untuk keterbacaan yang lebih baik. Belum ada banyak hal dari sana - kecuali bahwa Skype tidak suka koneksi Internetnya terputus. Setiap pemutusan menyebabkan sedikit peningkatan pada file yang terbuka, tetapi tidak ada yang dramatis. Di sisi lain, sepertinya plasma juga bertanggung jawab untuk itu:
Lihat setetes pegangan file di akhir? Itu adalah restart plasma.
sumber
sudo bash -c 'sync; echo 3 > /proc/sys/vm/drop_caches'
menghapus ram ekstra? Anda dapat melihat file program terbuka menggunakanlsof
free
. Beralih ke DE yang berbeda sebenarnya sudah saya pertimbangkan; jika KDE3.5 telah tersedia, saya belum berakhir dengan Plasma. Ini hanya bisa sementara untuk melihat apakah Plasma terlibat.Jawaban:
Sejumlah besar file terbuka adalah petunjuk bagus bahwa ada sesuatu yang salah. Dugaan saya adalah daemon sistem KDE.
Buka konsol dan jalankan "atas". Kemudian gunakan <dan> untuk mengubah kolom pengurutan ke VIRT atau RES dan melihat program mana yang menggunakan sebagian besar memori. Kebocoran memori akan muncul sebagai penggunaan memori virtual yang digembungkan secara besar-besaran, karena begitu pointer ke memori yang bocor hilang itu tidak akan digunakan dan akan ditukar. Jalankan juga "lsof" dan cari proses dengan banyak file terbuka, karena ini tampaknya benar-benar menjadi kebocoran deskriptor file.
Lacak program dan laporkan bug.
sumber
apt-get update && apt-get upgrade
ada pembaruan untuk plasma-desktop; orang-orang itu cepat X) Sekarang saya hanya menontonnya sebentar untuk melihat apakah masalah telah terpecahkan, sebelum saya menyatakannya demikian. Hingga kini, semuanya terlihat cukup menjanjikan.lsof
atau tidaktop
menunjuk saya ke "proses jahat", dugaan Anda tentang daemon KDE menunjuk saya ke arah pembuat onar. Jadi terima kasih lagi - uptime mesin saya sekarang sekitar 14d, dan semuanya masih terlihat stabil, meskipun saya bahkan menjalankan hal-hal seperti VirtualBox, mengkompilasi dll secara paralel. Jadi saya menganggap ini terpecahkan, dan menandai pertandingan terdekat :)Saya pikir itu sistem normal behaivor. Kemungkinan besar semuanya baik-baik saja.
Anda dapat membaca makalah yang brilian ini (linux memakan ram saya) untuk memahami, bagaimana linux mengelola ram Anda dan mengapa tidak perlu khawatir:
http://www.linuxatemyram.com/
sumber