Saya ingin menjalankan program yang menghabiskan memori dan melacak penggunaan memorinya dari waktu ke waktu. Program berakhir dalam beberapa detik setelah dipanggil.
Pertanyaan sebelumnya ini menyarankan paket sysstat . Sementara pidstat
sebagian utilitasnya melakukan apa yang saya inginkan, ia gagal memenuhi 2 kebutuhan saya:
- Ini menerima interval minimal
1s
, tetapi saya ingin mengukur pada granularity lebih pendek. (0.1s
harus baik-baik saja) - Ini hanya melacak proses yang ada, sementara saya tidak selalu bisa hadir untuk menyalin & menempelkan pid.
Apakah ada beberapa skrip / utilitas alternatif untuk melakukan pekerjaan memanggil dan mengukur dengan lebih baik?
/proc/$PID/statm
), dan kemudian tidur selama 100 ms dan ulangi. Mengapa kau tidak bisa hanya terus melemparkan PID terkaitstatm
melaluicat
, mungkin menggunakan beberapa regex untuk menyaring off ekstra / nilai-nilai yang tidak dibutuhkan, dan hanya melakukansleep 0.01
? Beberapa sistem operasi tidak akan mengizinkan nilai sub-detiksleep
, jadi dalam hal ini, Anda harus mengambil rute Python (dan menggunakantime
pustaka bawaan Python untuk tidur).Jawaban:
Ini harus melakukan apa yang Anda butuhkan. Ia mendapat informasi dari
/proc/$PID/statm
dan mencetak (dariman procfs
):Naskah:
Anda kemudian dapat memanggil skrip, memberinya nama proses sebagai input. Sebagai contoh:
CATATAN:
sumber
man
sana, saya tidak tahu mengapa hasil edit Anda ditolak.Setelah bertahun-tahun saya menemukan bahwa valgrind (juga) memiliki alat untuk ini:
Catatan: valgrind melakukan lebih dari sekedar mengamati: ia perlu menyuntikkan beberapa kode dan mengambil snapshot dari memori. Ini dapat membahayakan ketepatan statistik.
sumber