tingkatkan respons desktop pada linux saat bertukar

15

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.

FSMaxB
sumber
3
cgroups, jika Anda memiliki cgroup memori diaktifkan, dan swap akuntansi diaktifkan ( cgroup_enable=memory swapaccount=1pada baris perintah kernel; perhatikan ini memiliki biaya kinerja kecil). Contoh implementasi: ulatencyd .
derobert
@derobert Hebat sepertinya ini yang saya cari. Saya akan mulai bereksperimen dengan ini segera setelah saya punya waktu.
FSMaxB
Hebat, ulatencyd bahkan memiliki paket AUR, kira saya beruntung menjadi pengguna Archlinux.
FSMaxB
Bahkan ada artikel wiki wiki.archlinux.org/index.php/Ulatencyd
FSMaxB
Jika saya dapat memilih Q ini lebih banyak saya akan! Apakah benar-benar tidak ada cara langsung untuk memberi tahu GUI dan beberapa program utama untuk tetap menggunakan RAM sehingga tetap responsif? Maksudku, apa skenario terburuk dari memberikan pengguna linux opsi ini? Komputer macet? SIAPA YANG TIDAK DILAKUKAN SEBELUM? :) Kadang-kadang maksud saya, saya secara tidak sengaja memulai terlalu banyak VM karena saya tidak dapat menambahkan (nomor RAM) dengan benar dan kemudian SELAMANYA untuk mengendalikan keadaan. Memberitahu GUI dan mungkin terminal untuk tetap di RAM akan memperbaikinya ?! Tolong, seseorang menjawab ini!
Damon

Jawaban:

1

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 nicedan reniceperintah:

 Renice alters the scheduling priority of one or more running processes.
 The following who parameters are interpreted as process ID's, process
 group ID's, or user names.  Renice'ing a process group causes all pro‐
 cesses in the process group to have their scheduling priority altered.
 Renice'ing a user causes all processes owned by the user to have their
 scheduling priority altered.  By default, the processes to be affected
 are specified by their process ID's.

Prioritas beralih dari -20 (prioritas tertinggi) ke 20 (prioritas terendah). Untuk mengubah prioritas proses yang berjalan, Anda dapat melakukan:

renice -15 $PID

di mana $PIDadalah PID dari proses yang prioritas Anda ingin meningkatkan. Anda dapat menggunakannya pgrepuntuk mencari tahu mana itu. Sebagai contoh:

renice -15 $(pgrep gnome-session)

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:

vm.swappiness=1

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.

terdon
sumber
Ketika Anda menyatakan ini mungkin diselesaikan dalam ruang kernel, yang berarti akan sangat spesifik linux. Mengubah swappiness tidak akan mengubah apa pun karena ketika seluruh RAM digunakan, sistem akan bertukar. Dan afak prioritas suatu proses tidak akan mengubah apa pun tentang manajemen memori itu tetapi hanya perilaku scheduler cpu dan waktu cpu tidak benar-benar membantu untuk mempercepat akses disk.
FSMaxB
@FSMaxB Prioritas CPU mungkin membantu karena akan memprioritaskan DE, itu tidak akan membantu jika DE itu sendiri bertukar tetapi itu akan terjadi jika ada hal lain yang menahan CPU dan karenanya memperlambat mesin.
terdon
Ketika DE menganggur selama beberapa waktu, dalam pengalaman saya DE selalu tertukar ketika memori habis.
FSMaxB
@ FSMaxB ya, itu masuk akal karena DE adalah babi memori. Namun, meningkatkan prioritasnya mungkin membantu, setidaknya penjadwal tidak akan menahannya.
terdon