FSM*_*axB 16 memory linux freeze swap memory-management
到目前为止,我测试过的所有 GNU/Linux 发行版都存在这样一个问题:每当内存被填满并且系统开始交换时,整个桌面和图形用户界面都会变得无响应,有时我必须等待大约 5-10 秒移动物理鼠标直到鼠标指针实际移动。
这是一种令人讨厌的行为,尤其是在内存较低的系统上。
有什么方法可以让某些应用程序/作业(例如桌面环境等)比其他应用程序更优先保留在 ram 中,以便实际占用所有内存的应用程序在桌面环境等之前被交换?
编辑: 我说的是使用整个 RAM 的情况,因此如果未禁用它,它将始终开始交换(我不希望进程被随机终止)。我不仅在低内存环境中遇到了这个问题,而且在我的台式机上有 8GiB 内存时也遇到了这个问题,部分原因是许多虚拟机,部分原因是内存泄漏。ZRAM 也不是解决方案,因为它只会延迟问题。对于这个问题,我能想到的唯一解决方案是一些用户空间实用程序或内核 API,它们允许完全防止某些作业被交换,或者至少使其不太可能发生。有没有人知道其他解决方案,或者对现有或计划中的此类工具或 API 有所了解?
第二编辑: ulatencyd似乎并没有与systemd的较新版本的工作呢,根据https://aur.archlinux.org/packages/ulatencyd-git/和https://wiki.archlinux.org/index.php/Ulatencyd . 如果我理解正确的话,这可能是因为 systemd 从用户空间的角度接管了对 cgroup 的完全控制。
据我所知,这不是 Linux 特有的问题,而是 SWAP(或虚拟内存)的工作方式。如果操作系统需要在硬盘而不是 RAM 中查找数据,速度就会变慢。你对此无能为力,访问磁盘比访问 RAM 慢得多。
\n\n您将无法设置交换进程的优先级,这是由内核决定的,它将尝试最大化效率,您将无法做得更好。您可以做的是设置进程的 CPU 优先级,这可能会有所帮助。由于从 SWAP 读取数据/向 SWAP 读取数据需要时间,您的系统性能下降,这意味着 CPU 必须等待请求它的进程检索到相关数据,然后才能继续。如果您将 DE 设置为具有更高的 CPU 访问优先级,则应将其操作推至顶部并稍微加快速度。
\n\n因此,CPU 优先级是通过nice和renice命令设置的:
Renice alters the scheduling priority of one or more running processes.\n The following who parameters are interpreted as process ID\'s, process\n group ID\'s, or user names. Renice\'ing a process group causes all pro\xe2\x80\x90\n cesses in the process group to have their scheduling priority altered.\n Renice\'ing a user causes all processes owned by the user to have their\n scheduling priority altered. By default, the processes to be affected\n are specified by their process ID\'s.\nRun Code Online (Sandbox Code Playgroud)\n\n优先级从 -20(最高优先级)到 20(最低优先级)。要更改正在运行的进程的优先级,您可以执行以下操作:
\n\nrenice -15 $PID\nRun Code Online (Sandbox Code Playgroud)\n\n其中$PID是要增加其优先级的进程的PID 。您可以使用pgrep它来找出那是哪个。例如:
renice -15 $(pgrep gnome-session)\nRun Code Online (Sandbox Code Playgroud)\n\n另一个选项是设置系统的“交换性”,它决定何时开始交换。swappiness 值为 1 意味着它只会进行交换以避免内存不足错误。较高的值意味着即使仍然有可用的物理内存,它也会开始交换。您可以将其设置为相对较低的值,以使系统交换尽可能少。将此行添加到/etc/sysctl.conf:
vm.swappiness=1\nRun Code Online (Sandbox Code Playgroud)\n\n小心:如果您没有大量 RAM,这不是一个好主意,交换通常是一件好事,您需要稍微调整一下这些值,以找到适合您系统的正确平衡。
\n