У меня есть несколько машин, разделяющих домашний каталог через общий ресурс NFS, который используют 6-10 пользователей. Все машины используются для проведения вычислительных экспериментов, в том числе и с сервером NFS. Хотя это очень редко, но возможно, что какой-то эксперимент может вызвать проблему нехватки памяти (OOM). Хотя в какой-то момент пользовательский процесс может быть убит, я хотел бы знать, как он может повлиять на сервер NFS, таким образом, в свою очередь, затронуть и другие машины. Я попытался найти его, но не смог найти конкретного ответа. Также могу ли я предпринять какие-либо меры, чтобы избежать воздействия OOM на общий ресурс NFS?
Конфигурация сервера NFS: Intel Core i7-9700, 32 ГБ ОЗУ, 32 ГБ SWAP и графика TITAN RTX. На других машинах конфигурации аналогичны.
Я бы ограничил память процесса с помощью ulimit
или с cgroups. Вам нужно ограничить RSS и общую память. Другой подход - запустить его в контейнере или виртуальной машине.
Вероятно, самый простой подход - использовать контейнер: docker, podman, LXC ...
По умолчанию, когда Linux исчерпывает память, он использует эвристический чтобы решить, какие процессы убить, чтобы восстановить достаточно памяти для продолжения. Однако часто это нежелательно. Во многих случаях (включая, вероятно, этот) было бы лучше убить процесс, вызвавший состояние нехватки памяти.
Вы можете установить vm.oom_kill_allocating_task
sysctl, чтобы программа-убийца OOM завершила процесс, в результате которого системе не хватило памяти.