GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mencegah pertukaran program tertentu?

Saya pikir masalah cegukan belum tentu disebabkan oleh pertukaran. Jika suatu program memainkan sesuatu, Linux harus memperhatikan ini dan tidak menukarnya. Program yang tidak melakukan banyak hal adalah yang pertama ditukar. Anda dapat memeriksa apakah program benar-benar ditukar dengan melihat RSS /RES bidang dari ps atau atas . RSS adalah ukuran tetapan residen, memori fisik yang tidak ditukar yang digunakan tugas (dalam kiloBytes).

Saya pikir masalah Anda kemungkinan besar disebabkan oleh penjadwalan CPU dan I/O yang tidak tepat dan sedikit ketidakefisienan Rhythmbox yang membuatnya sensitif terhadap beban sistem yang tinggi. Prioritas CPU dapat diubah dengan perintah bagus dan renice . Prioritas I/O dapat diubah dengan ionice memerintah. Hanya pengguna super yang dapat menggunakan prioritas tinggi. Anda juga harus tahu bahwa orang-orang kernel Linux mencoba meningkatkan daya tanggap sistem desktop dengan berbagai tambalan latensi rendah, jadi Anda dapat mempertimbangkan untuk menggunakannya. Salah satunya adalah tambalan ~200 baris yang ditulis oleh Mike Galbraith yang bahkan mengesankan Linus. Alternatif untuk patch ini adalah trik cgroups Lennart Poettering yang menurut saya akan menjadi default di Fedora 15.

Lagi pula, tanpa tambalan itu ada dua opsi:memulai program dengan prioritas tinggi atau mengubahnya setelah itu. Untuk opsi pertama, Anda dapat menggunakan skrip pembungkus di sekitar Rhythmbox:

#!/bin/sh
# Run Rhytmbox with high CPU and I/O priorities
nice -n -10 ionice -c 1 -n 1 su -l -c rhythmbox alexei

Anda harus menjalankannya sebagai root. Jika Anda tidak ingin masuk sebagai root hanya untuk memulai ini, Anda dapat menggunakan su atau sudo .

Untuk mengubah prioritas setelahnya, jika Anda terlalu malas untuk login sebagai root untuk mengubahnya, Anda dapat mencoba menggunakan cron job yang berjalan setiap 5 menit dan menetapkan prioritas rhythmbox proses, tetapi saya tidak akan merekomendasikan melakukan ini:

#!/bin/sh
renice -n -10 -p `pidof rhythmbox`
ionice -c 1 -n 1 -p `pidof rhythmbox`

Jawaban singkat:Anda tidak bisa, dan tidak boleh.

Dahulu kala, file yang dapat dieksekusi menghargai bit lengket +t yang akan memberi tahu kernel untuk tidak bertukar, tetapi hari ini diabaikan.

Jika kernel memutuskan untuk menukar, itu pasti memiliki alasan yang sah. Linux sangat agresif dalam penggunaan memori, karena RAM yang tidak digunakan adalah sumber daya yang terbuang percuma.

Jika Anda benar-benar tidak ingin menukar, dapatkan lebih banyak RAM, atau cukup # swapoff -a (tidak disarankan, dapat membuat sistem Anda tidak dapat digunakan jika Anda sudah mengalami masalah).

Shouldn't berlaku saat Anda mengembangkan beberapa aplikasi dan tidak ingin aplikasi tersebut ditukar sama sekali. Lihatlah posting ini di stackoverflow.


Ada beberapa cara untuk melakukannya. Anda dapat mencoba untuk mencoba "mengatakan" agar Linux bekerja lebih sedikit dengan swap (umumnya):

echo 10 > /proc/sys/vm/swappiness

Dari :https://www.kernel.org/doc/Documentation/sysctl/vm.txt

pertukaran

Kontrol ini digunakan untuk menentukan seberapa agresif kernel akan menukar halaman memori. Nilai yang lebih tinggi akan meningkatkan agresivitas, nilai yang lebih rendah akan mengurangi jumlah swap.

Nilai defaultnya adalah 60.

Pilihan lainnya adalah menggunakan cgroups kernel manager , ini khusus per proses tetapi Anda akan memiliki beberapa "pekerjaan" yang harus dilakukan:Dijawab di sini:https://unix.stackexchange.com/questions/10214/per-process-swapiness-for -linux#10227


Linux
  1. Bagaimana cara memuat modul kernel Linux dari kode C?

  2. Bagaimana cara mengakses (jika mungkin) ruang kernel dari ruang pengguna?

  3. Bagaimana saya bisa menghapus aturan khusus dari iptables?

  1. Bagaimana cara menghentikan pesan kernel membanjiri konsol saya?

  2. Bagaimana mencegah proses dari menulis file

  3. Bagaimana cara mematikan Linux pada waktu tertentu dari terminal?

  1. Bagaimana Membuat Program Dapat Dieksekusi Dari Mana Saja?

  2. Journalctl:Bagaimana Mencegah Teks Terpotong Di Terminal?

  3. Bagaimana Mencegah `ls` Dari Menyortir Output?