หลังจากเริ่ม VirtualBox คอมพิวเตอร์เริ่มทำงานช้าลงและหยุดทำงานอย่างสมบูรณ์เนื่องจาก OOM โดยปกติแล้ว OOM ควรเริ่มต้นกระบวนการฆ่าเพื่อเพิ่มพื้นที่ว่าง แต่สิ่งนี้ไม่ได้เกิดขึ้น (นี่เป็นครั้งที่สองที่ฉันมีประสบการณ์นี้)
ฉันมีบางงานที่สำคัญยังไม่ได้บันทึกในโปรแกรมแก้ไขข้อความดังนั้นผมหวังที่จะพบว่ามันกลับมาอยู่ในแรมระบบหลังจากที่ฆ่ากระบวนการทั้งหมดในคอนโซลปัจจุบันใช้+SysRq Kเครื่องดังกล่าวเป็นแล็ปท็อปที่มี 8 GiB RAM ใช้ Linux x86_64 3.7.5 พร้อม SSD เป็นดิสก์เป้าหมาย
ความพยายามครั้งแรกของฉันคือdd if=/dev/mem of=memory
แต่สิ่งนี้ล้มเหลวหลังจากอ่านข้อมูล 1MiB ต่อไปฉันลองdd if=/dev/fmem of=memory bs=1M
แต่สิ่งนี้หยุดลงหลังจากอ่าน 3010461696 ไบต์ (ตรง 2871 MiB) หลังจากดูที่/proc/mtrr
(แสดงด้านล่าง) skip=4096
ฉันตัดสินใจที่จะลองเพิ่ม ในที่สุดสิ่งนี้ก็ช้าลงโดยการอ่านด้วยความเร็วเพียง 3 MiB / วินาทีดังนั้นฉันจึงขัดจังหวะ (ให้ไฟล์ 5.8 GiB) (อย่างน้อย 100 MiB ล่าสุดของไฟล์มีFF
s)
reg01: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg02: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back
reg04: base=0x200000000 ( 8192MB), size= 1024MB, count=1: write-back
reg05: base=0x23c000000 ( 9152MB), size= 64MB, count=1: uncachable
reg06: base=0x0b4000000 ( 2880MB), size= 64MB, count=1: uncachable
reg07: base=0x0b8000000 ( 2944MB), size= 128MB, count=1: uncachable
ฉันไม่พบข้อมูลที่ฉันเปิดมาเป็นเวลาหลายชั่วโมงในเท็กซ์เอดิเตอร์ดังนั้นฉันเชื่อว่าฉันได้ข้ามหน่วยความจำบางส่วนขณะทำการดัมพ์ ดังนั้นด้วยเป้าหมายของฉัน (การกู้คืนข้อมูลจากโปรแกรม userspace) วิธีที่มีประสิทธิภาพที่สุดในการถ่ายโอนข้อมูลหน่วยความจำระบบไปยังไฟล์คืออะไร? มีประเด็นอะไรบ้างที่ต้องพิจารณาขณะทำการดัมพ์
CONFIG_DEVKMEM
ถูกปิดการใช้งานโดยดูที่ซอร์สโค้ดซึ่งดูเหมือนว่าจะอนุญาตการเข้าถึงแบบไม่ จำกัด แต่ฉันก็ยังไม่มั่นใจว่านี่เป็นวิธีที่ดีที่สุดในการทำ (การเข้าถึง IO mem?)