为什么“/proc/kcore”文件的大小比物理内存大小大?

为什么“/proc/kcore”文件的大小比物理内存大小大?

来自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,因为这是系统可以分配的最大容量。

相关内容