Saya ingin menghentikan proses yang berjalan lama sehingga tidak mengkonsumsi CPU atau sumber daya memori fisik, dengan maksud untuk melanjutkan proses yang sama di masa depan.
Saya tahu bagian CPU dapat dicapai menggunakan SIGSTOP
dan SIGCONT
sinyal tetapi apakah mungkin untuk keluar (swap-out jika proses halaman kotor) segera memori RSS pribadi dari proses (berhenti)?
linux
process
swap
virtual-memory
idelvall
sumber
sumber
Jawaban:
Anda mungkin melihat teknik yang disebut checkpoint / restore. Ini akan memungkinkan Anda untuk mengambil proses yang sedang berjalan dan menyimpan statusnya ke satu set file, lalu mengembalikannya di lain waktu.
Untuk menggunakannya, mulailah dengan menginstal program criu [ git , wiki ] (
yum install criu
atauapt install criu
).Untuk memeriksa proses yang sedang berjalan, buat direktori kosong untuk menyimpan file dan cd-nya ke direktori itu.
Sekarang periksa proses yang sedang berjalan. Dalam hal ini saya menggunakan --shell-job karena saya memiliki proses saya berjalan dalam shell dengan tty terkait.
404 adalah pid dari proses yang ingin saya periksa. Ketika saya melakukan ini, saya melihat proses saya berjalan terbunuh dan direktori / var / tmp / checkpoint saya diisi dengan satu set file yang diperlukan untuk mengembalikannya.
Untuk memulihkan proses, saya memastikan saya berada di direktori dengan file pos pemeriksaan dan melakukan pemulihan.
Proses akan mengambil di mana ia tinggalkan di terminal tempat ini dijalankan. Jika saya menghentikan proses yang berjalan ini dan menjalankannya
criu restore --shell-job
lagi, prosesnya akan kembali ke pos pemeriksaan dan mulai lagi.Semoga ini membantu.
sumber
/tmp
tmpfs (didukung oleh ruang memori / swap). Jika Anda memeriksa titik ke sistem file yang didukung disk biasa, Anda dapat menggunakanvmtouch -e
untuk mengusir halaman dari pagecache, tetapi masih menggunakan RAM tambahan untuk sementara. (Kecuali jikacriu
ada opsi untuk mengarahkan i / o (dengan O_DIRECT) ...)