ฉันจะค้นหาหน่วยความจำทั้งหมดที่จัดสรรสำหรับกระบวนการเฉพาะใน Ubuntu ได้อย่างไร
ฉันจะค้นหาหน่วยความจำทั้งหมดที่จัดสรรสำหรับกระบวนการเฉพาะใน Ubuntu ได้อย่างไร
คำตอบ:
ลอง:
pidof bash | xargs ps -o rss,sz,vsz
เพื่อค้นหาการใช้หน่วยความจำของbashเชลล์ปัจจุบันของคุณ(สมมติว่าคุณกำลังใช้bash) เปลี่ยนbashเป็นสิ่งที่คุณกำลังตรวจสอบ หากคุณอยู่ภายใต้กระบวนการใดกระบวนการหนึ่งให้ใช้ด้วยตัวเอง:
ps -o rss,sz,vsz <process id>
จากmanหน้า:
RSS: ขนาดชุดที่อยู่อาศัย, หน่วยความจำกายภาพที่ไม่ได้สลับที่งานใช้ (เป็นกิโลไบต์)
SZ: ขนาดในหน้าทางกายภาพของภาพหลักของกระบวนการ ซึ่งรวมถึงข้อความข้อมูลและพื้นที่สแต็ค
VSZ: ขนาดหน่วยความจำเสมือนของกระบวนการเป็น KiB (1024- ไบต์หน่วย)
manหน้าpsจะแสดงรายการทั้งหมดข้อโต้แย้งไปได้ที่จะ-oมีตัวเลือก (มีค่อนข้างน้อยให้เลือก) แทนที่จะ-o rss,szใช้vตัวเลือกลักษณะ BSD (ไม่มีเส้นประ) ซึ่งแสดงโครงร่างหน่วยความจำสำรอง
คุณสามารถใช้pmapซึ่งแสดงแผนที่หน่วยความจำของกระบวนการ:
pmap -p pid
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ดูหน้าคนman pmapหรือมีลักษณะที่pmap (1): รายงานแผนที่หน่วยความจำของกระบวนการ - หน้าคนลินุกซ์
วิธีการค้นหาหน่วยความจำทั้งหมดที่จัดสรรสำหรับกระบวนการเฉพาะในอูบุนตู?
คุณไม่ได้กำหนดสิ่งที่เป็นจัดสรรหน่วยความจำสำหรับกระบวนการและจริงว่าเป็นคำถามที่ซับซ้อนสวย (สิ่งที่เกี่ยวกับการแมปหน่วยความจำร่วม - ดูmmap (2)สำหรับรายละเอียด; สิ่งที่เกี่ยวกับหน่วยความจำที่ใช้ร่วมกัน POSIX - ดูshm_overview (7)มานาน สิ่งที่เกี่ยวกับบางหน้าในแคชหน้าใช้สำหรับเปิดไฟล์ ฯลฯ ... )
คุณสามารถใช้/proc/ระบบไฟล์ (ซึ่ง BTW ถูกใช้โดยps, pmap, top, htopฯลฯ .... ) อ่านproc (5)สำหรับข้อมูลเพิ่มเติม โดยเฉพาะอย่างยิ่งสำหรับกระบวนการของ pid 1234 คุณสามารถใช้/proc/1234/status, /proc/1234/statm, /proc/1234/mapsฯลฯ ... พวกเขาเป็นต้นฉบับเดิมหลอกไฟล์ทั้งหมด (บิตเช่นท่อ) ที่คุณสามารถมองเห็นได้ด้วยcat(หรืออ่านตามลำดับภายในโปรแกรมบางส่วน) BTW จากภายในโปรแกรมที่คุณอาจใช้/proc/self (ซึ่งเป็น symlink หลอก) เช่นอ่านตามลำดับ/proc/self/statusฯลฯ ...