Я использую Ubuntu 20. 04, теперь, если я не ошибаюсь, в Ubuntu есть встроенная функция, которая убивает процесс, если внезапно использует всю оперативную память для остановки падения системы, я видел, как это происходило (например, он убивает любые питоновые скрипты, которые внезапно используют всю системную память или что-то в этом роде, и говорит, что они убиты в терминале)
Проблема в том, что во многих случаях этот механизм не работает, и это приводит к падению моей системы (это питоновый скрипт, который использует всю память), Я делаю машинный материал обучения, и я не могу предсказать, сколько из моих скриптов может использовать, и я ожидал Ubuntu просто в основном убить приложение, когда оно вдруг использует всю системную память, но это не работает, и моя система рушится (все зависает, без движения мыши или что-нибудь, но с помощью REISUB я могу перезагрузить систему)
иногда его даже не внезапный всплеск в использовании оперативной памяти, скрипт просто продолжает выделять больше оперативной памяти и оперативной памяти, и когда он достигает предела моя система в основном замирает и Ubuntu не останавливает его! Я думал, что для этой ситуации существует защитный механизм
так что мой вопрос :
Как я могу сказать Ubuntu убить любое приложение, которое внезапно использует всю доступную свободную оперативную память? в принципе, какое лучшее решение для меня, чтобы остановить падения других, которые меняют мои скрипты?
edit : можно ли в любом случае сказать операционной системе убить процесс питона в ситуациях вне памяти, независимо от идентификатора процесса? имея в виду убить любой процесс с именем питона, когда он находится вне памяти.
edit2 :
вывод свободного -h :
total used free shared buff/cache available
Mem: 15Gi 4.1Gi 218Mi 469Mi 11Gi 10Gi
Swap: 2.0Gi 946Mi 1.1Gi
edit3:
out put из sysctl vm.swappiness
vm.swappiness = 60
Давайте увеличим ваш /swapfile с 2G до 4G (может быть, больше позже, если этого потребует ваш скрипт Python)...
Примечание: Неправильное использование dd Команда
может привести к потере данных. Предложите скопировать/вставить.
В терминале
...
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
Подтвердите эту строку /swapfile в конце /etc/fstab... и не подтвердите никаких других строк "подкачки"...
Для редактирования , используйте sudo -H gedit /etc/fstab
или sudo pico /etc/fstab
/swapfile none swap sw 0 0
reboot # reboot and verify operation