Desejo interromper um processo demorado, para que ele não consuma recursos de CPU ou memória física, com a intenção de retomar o mesmo processo no futuro.
Sei que a parte da CPU é possível de usar SIGSTOP
e SIGCONT
sinais, mas é possível sair da página (trocar no caso de páginas sujas do processo) imediatamente a memória RSS privada de um processo (parado)?
linux
process
swap
virtual-memory
idelvall
fonte
fonte
Respostas:
Você pode procurar uma técnica chamada ponto de verificação / restauração. Isso permitirá que você execute um processo em execução e salve seu estado em um conjunto de arquivos e depois restaure-o posteriormente.
Para usá-lo, comece instalando o programa criu [ git , wiki ] (
yum install criu
ouapt install criu
).Para verificar um processo em execução, crie um diretório vazio para armazenar seus arquivos e cd nesse diretório.
Agora verifique o processo em execução. Nesse caso, estou usando o --shell-job, pois tenho meu processo em execução em um shell com um tty associado.
404 é o pid do processo que eu quero checar. Quando faço isso, vejo meu processo em execução ser morto e meu diretório / var / tmp / checkpoint é preenchido com um conjunto de arquivos necessários para restaurá-lo.
Para restaurar o processo, verifique se estou no diretório com os arquivos do ponto de verificação e faço uma restauração.
O processo continuará de onde parou no terminal onde foi executado. Se eu matar esse processo em execução e executar
criu restore --shell-job
novamente, o processo retornará ao ponto de verificação e será iniciado novamente.Espero que isto ajude.
fonte
/tmp
for tmpfs (suportado por memória / espaço de troca). Se você apontar para um sistema de arquivos normal suportado por disco, poderá usarvmtouch -e
para remover as páginas do pagecache, mas ele ainda usará RAM extra temporariamente. (A menos quecriu
tem uma opção para fazer Direct I / O (com O_DIRECT) ...)