proc
マニュアルから:
/ proc/kcore
このファイルはシステムの物理メモリを表し、ELFコアファイル形式で保存されます。この疑似ファイルとストリップされていないカーネル(/ usr/src/linux/vmlinux)バイナリを使用すると、GDBを使用して、カーネルデータ構造の現在の状態を調べることができます。
ファイルの全長は、物理メモリ(RAM)に4KBを加えたサイズです。
/proc/kcore
のサイズは、物理メモリ(RAM)に4KBを加えたサイズです。
しかし、私の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
ファイルのサイズが物理メモリサイズよりも大きいのはなぜですか?
kcore
は、カーネルのRAMの仮想割り当てです。64ビットシステムでは、システムが割り当てることができる最大量であるため、そのサイズは128Tの絶対制限になります。