来自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
比物理内存的大小大这么多?
答案1
kcore
是为内核虚拟分配的 RAM。在 64 位系统上,该大小的绝对限制为 128T,因为这是系统可以分配的最大容量。