到目前为止,我测试过的所有GNU / Linux发行版都存在一个问题,即当填满ram且系统开始交换时,整个桌面和图形用户界面都变得无响应,以至于有时我不得不等待大约5-10秒移动了物理鼠标,直到鼠标指针实际移动为止。
这是一种令人讨厌的行为,尤其是在低内存的系统上。
有什么方法可以赋予某些应用程序/作业(例如桌面环境等)比其他应用程序更高的优先级,使其在ram中停留,从而使实际占用所有内存的应用程序在桌面环境等之前被交换?
编辑: 我说的是使用整个RAM的情况,因此如果未禁用它,它将始终开始交换(我不希望进程被随机杀死)。我不仅在低内存环境中遇到此问题,在台式机上还存在内存8GiB的问题,部分原因是由于许多虚拟机,部分原因是内存泄漏。ZRAM也不是解决方案,因为它只会延迟问题。对于这个问题,我能想到的唯一解决方案是某些用户空间实用程序或内核API,该实用程序或内核API可以防止某些作业完全被交换,或者至少使其变得不太可能。是否有人知道其他解决方案或对现有或正在计划中的此类工具或API有所了解?
第2次编辑: 根据https://aur.archlinux.org/packages/ulatencyd-git/和https://wiki.archlinux.org/index.php/Ulatencyd的说法,ulatencyd似乎不适用于较新版本的systemd 。这可能是因为,如果我正确理解的话,systemd从用户空间的角度接管了cgroup的完全控制权。
cgroup_enable=memory swapaccount=1
在内核命令行上;请注意,这会降低性能成本)。示例实现:ulatencyd。