Apakah ada alat yang memungkinkan pencatatan penggunaan memori?


18

Saya ingin memantau penggunaan memori dari suatu proses, dan saya ingin data ini dicatat. Apakah alat semacam itu ada?


1
Saya pikir tautan ini tentang pemantauan terprogram suatu proses penggunaan memori akan berguna bagi Anda untuk menyelesaikan kebutuhan Anda.
Sen

Jawaban:



12

Kadang-kadang ketika kebutuhan muncul, saya hanya melakukan:

$ top -d 1 -b |grep <process> >>somefile

Ini bukan solusi yang elegan, tetapi menyelesaikan pekerjaan jika Anda ingin nilai mentah cepat untuk memverifikasi hipotesis Anda.


Saya pikir itu adalah elegan dalam kesederhanaan itu. Anda mungkin ingin melakukannya grep --line-buffered <process> >>somefileuntuk memaksa grep untuk mengeluarkan setiap baris tanpa buffering
Ott Toomet

7

sar( System Activity Reporter ) dari paket sysstat adalah teman Anda jika seperti ini.

Cara lain adalah pemantauan yang dikombinasikan dengan data historis, misalnya Munin, pnp4nagios, rrdtools, ...


1
tetapi dapat sardifokuskan hanya pada satu proses? sebagian besar tampaknya memantau sistem secara keseluruhan
xenoterracide

3
The pidstatperintah juga dari paket sysstat menyediakan antarmuka yang cukup bagus untuk melaporkan statistik proses tunggal.
Steven D

@xenoterracide Steven D punya jawabannya. Saya tidak mengetahui perintah ini sebelumnya.
Christian

4

Selain sar yang disebutkan di atas, saya akan merekomendasikan di atas . Ini menyimpan log biner yang dapat Anda teliti setelahnya, dan selain itu memori menyimpan banyak informasi lainnya.


3

Anda dapat mencoba Valgrind .

Valgrind adalah kerangka kerja instrumentasi untuk membangun alat analisis dinamis. Ada alat Valgrind yang dapat secara otomatis mendeteksi banyak manajemen memori dan bug threading, dan membuat profil program Anda secara terperinci. Anda juga dapat menggunakan Valgrind untuk membuat alat baru.

Distribusi Valgrind saat ini mencakup enam alat berkualitas produksi: detektor kesalahan memori , dua detektor kesalahan benang, cache dan profil prediksi cabang, cache panggilan grafik dan profil prediksi cabang, dan profil tumpukan .


Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
saji89

Massif dokumen ini menjelaskan secara rinci.
Shawn Xie

0

Saya menyukai jawaban sederhana Sridhar tetapi saya menggulirkan jawaban saya sendiri sebelum mencoba:

import json, psutil, datetime, time

with open('log.txt', 'w') as f:
  while True:
    json.dump((datetime.datetime.now().isoformat(),
               psutil.Process(7274).memory_info()._asdict()), f)
    f.write('\n')
    f.flush()
    time.sleep(1)

Ini pada dasarnya hanya berguna jika Anda ingin output terstruktur. Ubah 7274 yang sesuai. Juga Python 3.5.sesuatu rusak _asdict(), jadi gunakan Python 2.

File output terlihat seperti:

["2019-03-19T11:21:53.784670", {"rss": 220389376, "vms": 538984448, "shared": 15724544, "text": 303104, "lib": 0, "data": 221364224, "dirty": 0}]
["2019-03-19T11:21:54.786136", {"rss": 220438528, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:55.787555", {"rss": 220495872, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:56.788754", {"rss": 220528640, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.