ฉันต้องการตรวจสอบการใช้หน่วยความจำของกระบวนการและฉันต้องการให้บันทึกข้อมูลนี้ เครื่องมือดังกล่าวมีอยู่จริงหรือไม่?
ฉันต้องการตรวจสอบการใช้หน่วยความจำของกระบวนการและฉันต้องการให้บันทึกข้อมูลนี้ เครื่องมือดังกล่าวมีอยู่จริงหรือไม่?
คำตอบ:
ฉันได้เขียนสคริปต์เพื่อทำตรงนี้ โดยทั่วไปจะทำการสุ่มตัวอย่างps
ตามช่วงเวลาที่กำหนดเพื่อสร้างโปรไฟล์ของกระบวนการเฉพาะ กระบวนการสามารถเรียกใช้งานได้โดยเครื่องมือตรวจสอบเองหรืออาจเป็นกระบวนการอิสระ (ระบุโดย pid หรือรูปแบบคำสั่ง)
บางครั้งเมื่อความจำเป็นเกิดขึ้นฉันเพิ่งทำ:
$ top -d 1 -b |grep <process> >>somefile
มันไม่ได้เป็นทางออกที่สง่างาม แต่ทำงานให้สำเร็จถ้าคุณต้องการค่าน้ำมันดิบที่รวดเร็วในการตรวจสอบสมมติฐานของคุณ
grep --line-buffered <process> >>somefile
บังคับให้ grep ส่งออกแต่ละบรรทัดโดยไม่ต้องบัฟเฟอร์
sar
( System Activity Reporter ) จากแพ็คเกจsysstatคือเพื่อนของคุณในกรณีเช่นนี้
อีกวิธีหนึ่งคือการตรวจสอบรวมกับข้อมูลในอดีตเช่น Munin, pnp4nagios, rrdtools, ...
sar
เพ่งความสนใจไปที่เพียงกระบวนการเดียว? ส่วนใหญ่ดูเหมือนว่าจะตรวจสอบระบบโดยรวม
pidstat
คำสั่งจากแพคเกจ sysstat มีอินเตอร์เฟซที่เป็นธรรมสำหรับการรายงานสถิติในขั้นตอนเดียว
Valgrind เป็นกรอบเครื่องมือสำหรับการสร้างเครื่องมือวิเคราะห์แบบไดนามิก มีเครื่องมือ Valgrind ที่สามารถตรวจจับการจัดการหน่วยความจำจำนวนมากและเธรดบั๊กโดยอัตโนมัติและโปรไฟล์โปรแกรมของคุณอย่างละเอียด คุณยังสามารถใช้ Valgrind เพื่อสร้างเครื่องมือใหม่
การกระจาย Valgrind ขณะนี้รวมถึงหกเครื่องมือการผลิตที่มีคุณภาพ: การตรวจจับข้อผิดพลาดของหน่วยความจำสองเครื่องตรวจจับข้อผิดพลาดด้ายแคชและสาขาการทำนาย Profiler โทรกราฟสร้างแคชและสาขาการทำนาย Profiler และProfiler กอง
ฉันชอบคำตอบง่ายๆของ Sridhar แต่ฉันจะม้วนเองก่อนที่จะลองเขา:
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)
มันมีประโยชน์โดยทั่วไปถ้าคุณต้องการผลลัพธ์ที่มีโครงสร้าง เปลี่ยน 7274 ตามความเหมาะสม Python 3.5.something ล่ม_asdict()
ดังนั้นให้ใช้ Python 2
ไฟล์ที่ส่งออกดูเหมือนว่า:
["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}]