Ubuntu 20.04 不会终止突然使用所有 RAM 的进程,从而导致系统崩溃?

Ubuntu 20.04 不会终止突然使用所有 RAM 的进程,从而导致系统崩溃?

我正在使用 Ubuntu 20.04,如果我没有记错的话,Ubuntu 有一个内置功能,如果一个进程突然使用了所有的 RAM 来阻止系统崩溃,它会终止该进程,我已经看到过这种情况发生(例如,它会终止任何突然使用所有系统内存或其他东西的 python 脚本,并在终端中显示已终止)

问题是很多时候这种机制不起作用,并导致我的系统崩溃(它是一个使用所有内存的 python 脚本),我正在做机器学习的东西,我无法预测我的一些脚本可能会使用多少,我期望 Ubuntu 在突然使用所有系统内存时基本上会杀死一个应用程序,但它不起作用,我的系统崩溃了(一切都挂了,没有鼠标移动或任何东西,但使用 REISUB 我可以重新启动系统)

有时甚至不会突然增加 RAM 使用量,脚本只是不断分配更多的 RAM 和 RAM,当达到限制时,我的系统基本上会冻结,而 Ubuntu 不会停止它!!我以为这种情况有一种防御机制?

所以我的问题是:

我怎样才能告诉 Ubuntu 终止任何突然使用所有可用 RAM 的应用程序?基本上,除了更改脚本之外,对我来说最好的解决方案是什么来阻止崩溃?

编辑:有没有办法告诉操作系统在内存不足的情况下终止 python 进程,无论进程 id 是什么?意思是当内存不足时,终止任何名为 python 的进程。

编辑2:

free -h 的输出:

              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.1Gi       218Mi       469Mi        11Gi        10Gi
Swap:         2.0Gi       946Mi       1.1Gi

编辑3:

sysctl vm.swappiness 的输出

vm.swappiness = 60

答案1

让我们将您的 /swapfile 从 2G 增加到 4G(如果您的 python 脚本需要的话,以后可能会更多)...

笔记:命令使用不当dd可能导致数据丢失。建议复制/粘贴。

在里面terminal...

sudo swapoff -a           # turn off swap
sudo rm -i /swapfile      # remove old /swapfile

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

sudo chmod 600 /swapfile  # set proper file protections
sudo mkswap /swapfile     # init /swapfile
sudo swapon /swapfile     # turn on swap
free -h                   # confirm 16G RAM and 4G swap

确认 /etc/fstab 末尾的 /swapfile 行...并确认没有其他“swap”行...

要编辑,使用sudo -H gedit /etc/fstabsudo pico /etc/fstab

/swapfile    none    swap    sw      0   0

reboot                    # reboot and verify operation

答案2

禁用交换文件并将其删除

sudo swapoff /swapfile
sudo rm  /swapfile

创建所需大小的新交换文件。

sudo fallocate -l 4G /swapfile

在这个命令中,将4G调整为你想要的大小。

相关内容