Quiero detener un proceso de larga ejecución para que no consuma recursos de CPU o memoria física, con la intención de reanudar el mismo proceso en el futuro.
Sé que la parte de la CPU se puede lograr usando señalesSIGSTOP y SIGCONT señales, pero ¿es posible extraer (intercambiar en el caso de páginas sucias del proceso) inmediatamente la memoria RSS privada de un proceso (detenido)?
linux
process
swap
virtual-memory
idelvall
fuente
fuente

Respuestas:
Puede buscar una técnica llamada punto de control / restauración. Esto le permitirá realizar un proceso en ejecución y guardar su estado en un conjunto de archivos, y luego restaurarlo en otro momento.
Para usarlo, comience instalando el programa criu [ git , wiki ] (
yum install criuoapt install criu).Para verificar un proceso en ejecución, cree un directorio vacío para guardar sus archivos y cd en ese directorio.
Ahora revise el proceso de ejecución. En este caso, estoy usando --shell-job ya que tengo mi proceso ejecutándose en un shell con un tty asociado.
404 es el pid del proceso que quiero verificar. Cuando hago esto, veo que mi proceso en ejecución se anula y mi directorio / var / tmp / checkpoint se llena con un conjunto de archivos necesarios para restaurarlo.
Para restaurar el proceso, me aseguro de estar en el directorio con los archivos de punto de control y hacer una restauración.
El proceso continuará donde lo dejó en la terminal donde se ejecutó. Si elimino este proceso en ejecución y
criu restore --shell-jobvuelvo a ejecutarlo , el proceso volverá al punto de control y se iniciará nuevamente.Espero que esto ayude.
fuente
/tmpes tmpfs (respaldado por memoria / espacio de intercambio). Si selecciona un sistema de archivos con respaldo de disco normal, puede usarlovmtouch -epara expulsar las páginas del caché de página, pero aún usa RAM adicional temporalmente. (A menos quecriutenga una opción para hacer E / S directas (con O_DIRECT) ...)