VirtualBoxを起動した後、コンピューターが遅くなり、OOMが原因で完全にハングしました。通常、OOMは領域を解放するためにプロセスの強制終了を開始する必要がありますが、これは発生しませんでした(これが2回目に発生しました)。
テキストエディターで未保存の重要な作業があったため、SysRq+ を使用して現在のコンソールのすべてのプロセスを強制終了した後、システムRAMでそれを見つけたいと思っていましたK。問題のマシンは、ターゲットディスクとしてSSDを備えたLinux x86_64 3.7.5を実行する8 GiB RAMを搭載したラップトップです。
私の最初の試みはでしたが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
テキストエディタで数時間開いていたデータが見つからなかったため、ダンプの実行中に一部のメモリをスキップしたと思います。したがって、私の目標(ユーザー空間プログラムからのデータの回復)を考えると、システムメモリをファイルにダンプする最も効率的な方法は何ですか。このようなダンプを行う際に考慮しなければならない点は何ですか?
CONFIG_DEVKMEM
は無効になっており、ソースコードを見ると無制限のアクセスが許可されているようですが、これが最善の方法であるとはまだ確信していません(IO memアクセス?)