Semua distribusi GNU / Linux yang saya uji sejauh ini memiliki masalah bahwa setiap kali ram diisi dan sistem mulai bertukar, seluruh antarmuka pengguna desktop dan grafis menjadi tidak responsif sekali, sehingga kadang-kadang saya harus menunggu sekitar 5-10 detik setelah Setelah memindahkan mouse fisik sampai pointer mouse benar-benar bergerak
Ini semacam perilaku yang mengganggu, terutama pada sistem dengan ram rendah.
Apakah ada cara untuk memberikan beberapa aplikasi / pekerjaan, seperti lingkungan desktop dll., Prioritas yang lebih tinggi untuk tetap bertahan daripada aplikasi lain, sehingga aplikasi benar-benar memonopoli semua memori yang ditukar sebelum lingkungan desktop dll?
EDIT: Saya sedang berbicara tentang kasus ketika seluruh RAM digunakan sehingga akan selalu mulai bertukar jika tidak dinonaktifkan (Saya tidak ingin proses dibunuh secara acak). Saya punya masalah ini tidak hanya di lingkungan ram rendah, tetapi juga dengan 8GiB ram di mesin desktop saya, sebagian karena banyak VMs sebagian karena kebocoran memori. ZRAM juga bukan solusi karena hanya menunda masalah. Satu-satunya solusi yang dapat saya pikirkan untuk masalah ini adalah beberapa utilitas userspace atau API API yang memungkinkan untuk mencegah pekerjaan tertentu untuk ditukar sama sekali atau setidaknya membuatnya sangat tidak mungkin. Adakah yang tahu solusi lain atau tahu apa-apa tentang alat atau API semacam itu yang ada atau sedang direncanakan?
2nd EDIT: ulatencyd tampaknya tidak berfungsi dengan versi systemd yang lebih baru, menurut https://aur.archlinux.org/packages/ulatencyd-git/ dan https://wiki.archlinux.org/index.php/Ulatencyd . Ini mungkin karena systemd mengambil alih kendali penuh cgroup dari perspektif userspace jika saya memahaminya dengan benar.
cgroup_enable=memory swapaccount=1
pada baris perintah kernel; perhatikan ini memiliki biaya kinerja kecil). Contoh implementasi: ulatencyd .Jawaban:
Sejauh yang saya tahu ini bukan masalah khusus untuk Linux, itu cara SWAP (atau memori virtual) bekerja. Jika OS perlu mencari data dalam hard drive sebagai lawan dari RAM, itu akan melambat. Tidak ada yang dapat Anda lakukan tentang itu, mengakses disk jauh lebih lambat daripada mengakses RAM.
Anda tidak akan dapat menetapkan prioritas proses pertukaran, yang ditentukan oleh kernel yang akan mencoba memaksimalkan efisiensi, Anda tidak akan dapat melakukannya dengan lebih baik. Yang dapat Anda lakukan adalah mengatur prioritas CPU dari suatu proses dan itu mungkin membantu. Sistem Anda sedang diturunkan karena waktu yang diperlukan untuk membaca dari / ke SWAP, ini berarti bahwa CPU harus menunggu data yang relevan untuk diambil oleh proses yang meminta itu sebelum dapat melanjutkan. Jika Anda mengatur DE Anda untuk memiliki prioritas yang lebih tinggi untuk akses CPU, itu akan mendorong operasinya ke atas dan sedikit mempercepat.
Jadi, prioritas CPU diatur dengan
nice
danrenice
perintah:Prioritas beralih dari -20 (prioritas tertinggi) ke 20 (prioritas terendah). Untuk mengubah prioritas proses yang berjalan, Anda dapat melakukan:
di mana
$PID
adalah PID dari proses yang prioritas Anda ingin meningkatkan. Anda dapat menggunakannyapgrep
untuk mencari tahu mana itu. Sebagai contoh:Pilihan lainnya adalah mengatur 'swappiness' sistem yang menentukan kapan akan mulai bertukar. Nilai swappiness 1 berarti hanya akan bertukar untuk menghindari kesalahan memori. Nilai yang lebih tinggi berarti akan mulai bertukar bahkan ketika masih ada memori fisik yang tersedia. Anda dapat mengatur ini ke nilai yang relatif rendah untuk membuat sistem Anda bertukar sesedikit mungkin. Tambahkan baris ini ke
/etc/sysctl.conf
:HATI-HATI: Itu bukan ide yang baik jika Anda tidak memiliki banyak RAM, swap adalah Good Thing secara umum, Anda perlu sedikit bermain-main dengan nilai-nilai untuk menemukan keseimbangan yang tepat untuk sistem Anda.
sumber