Я хочу остановить длительный процесс, чтобы он не потреблял ресурсов ЦП или физической памяти с намерением возобновить тот же процесс в будущем.
Я знаю , что часть CPU достижима с использованием SIGSTOP
и SIGCONT
сигналами , но возможно на страницу-ауте (своп-в случае процесс грязных страниц) сразу же частный RSS память о (остановленном) процессе?
linux
process
swap
virtual-memory
idelvall
источник
источник
Ответы:
Вы можете изучить технику, называемую контрольная точка / восстановление. Это позволит вам запустить запущенный процесс и сохранить его состояние в виде набора файлов, а затем восстановить его позднее.
Чтобы использовать его, начните с установки программы criu [ git , wiki ] (
yum install criu
илиapt install criu
).Чтобы проверить запущенный процесс, создайте пустой каталог для хранения его файлов и перейдите в этот каталог.
Теперь проверьте работу запущенного процесса. В этом случае я использую --shell-job, так как мой процесс выполняется в оболочке со связанным tty.
404 pid процесса, который я хочу проверить. Когда я делаю это, я вижу, что мой запущенный процесс уничтожается, а в моем каталоге / var / tmp / checkpoint заполняется набор файлов, необходимых для его восстановления.
Чтобы восстановить процесс, я должен убедиться, что нахожусь в каталоге с файлами контрольных точек и выполнить восстановление.
Процесс запустится с того места, где остановился в терминале, где он был запущен. Если я остановлю этот запущенный процесс и запустлю
criu restore --shell-job
снова, процесс вернется к контрольной точке и запустится снова.Надеюсь это поможет.
источник
/tmp
это tmpfs (поддерживаемый памятью / пространством подкачки). Если вы установили контрольную точку на обычную файловую систему на диске, вы можете использовать ееvmtouch -e
для удаления страниц из кэша страниц, но она все еще временно использует дополнительную оперативную память. (Если только у васcriu
нет возможности сделать прямой ввод / вывод (с O_DIRECT) ...)