proc
マニュアルから:
/proc/kcore
このファイルはシステムの物理メモリを表し、ELFコアファイル形式で保存されます。この疑似ファイルと削除されていないカーネル(/usr/src/linux/vmlinux)バイナリにより、GDBはすべてのカーネルデータ構造の現在の状態を確認するために使用できます。
ファイルの合計長は、物理メモリ(RAM)サイズに4 KBを加えたサイズです。
私が見ることができるサイズは、/proc/kcore
物理メモリ(RAM)サイズに4 KBを加えたサイズです。
しかし、私の場合SuSE Linux
:
# ls -lt --block-size=M /proc/kcore
-r-------- 1 root root 134217727M Nov 15 21:09 /proc/kcore
# cat /proc/meminfo
MemTotal: 792680 kB
MemFree: 79960 kB
MemAvailable: 351664 kB
Buffers: 40 kB
Cached: 246588 kB
SwapCached: 212 kB
Active: 282992 kB
Inactive: 292896 kB
Active(anon): 122652 kB
Inactive(anon): 214164 kB
Active(file): 160340 kB
Inactive(file): 78732 kB
Unevictable: 100 kB
Mlocked: 100 kB
SwapTotal: 1532924 kB
SwapFree: 1531088 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 329148 kB
Mapped: 71888 kB
Shmem: 7556 kB
Slab: 63088 kB
SReclaimable: 46300 kB
SUnreclaim: 16788 kB
KernelStack: 1888 kB
PageTables: 0 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1929264 kB
Committed_AS: 1451492 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7580 kB
VmallocChunk: 34359726080 kB
HardwareCorrupted: 0 kB
DirectMap4k: 867568 kB
DirectMap2M: 0 kB
ファイルサイズが/proc/kcore
実際のメモリサイズよりはるかに大きいのはなぜですか?
答え1
kcore
カーネルにRAMが仮想的に割り当てられていますか? 64ビットシステムでは、このサイズの絶対的な制限は128Tです。これは、システムが割り当てることができる最大容量であるためです。