关于/proc/kcore文件

标签:
it |
分类: linux应用 |
http://s1/mw690/005AuxHBzy6Io1TUZji30&690
看我的真实机子:
http://s9/mw690/005AuxHBzy6Io1U0wR2b8&690
结论:不占用存储设备空间,但其大小不等于实际物理内存大小!!
http://s7/mw690/005AuxHBzy6Io1U5VP076&690
上边大意就是 kcore 跟/proc 下的其他文件不同,它是显示大小的,而且它的大小等于已被使用的物理内存的大小 加上 4k,此文件可以使用gdb 、objdump等工具调试。
http://s8/mw690/005AuxHBzy6Io1U81fhd7&690
很明显如果是这样的话 那么kcore的大小应该至少939M,可其大小却是897M:
http://s15/mw690/005AuxHBzy6Io1U9pSuae&690
更诡异的是,上边显示的 897M大小 还不是一直都存在的 :
http://s6/mw690/005AuxHBzy6Io1UbVmB65&690
作为一种特殊FS格式,tmpfs 是直接挂内存空间的,默认是内存空间大小的一半,当然也可以指定。
http://s2/mw690/005AuxHBzy6Io1UgZK901&690
然后进行数据写入:
http://s9/mw690/005AuxHBzy6Io1Uj66458&690
看以看到内存和虚拟空间都基本已经耗尽了,再看 kcore文件
http://s13/mw690/005AuxHBzy6Io1UkP9icc&690
http://s4/mw690/005AuxHBzy6Io1Uolph13&690
http://s8/mw690/005AuxHBzy6Io1V7NFdf7&690
照此方法试了下,结果还是如此- - ||
http://s8/mw690/005AuxHBzy6Io1V9GJxd7&690
上面说kcore这个文件指的的可被内核分配的空间,但根据上边的实验来看,并非如此。其还提示说,在64b的OS中,这个文件大小最大可以达到128T,因为64b的OS最大寻址内存范围局势128T。
http://s11/mw690/005AuxHBzy6Io1Vbq427a&690
大意就是 /proc目录下的文件不真实存在、不占用实际存储设备空间(这个毋庸置疑),/proc/kcore的大小等于内存的大小!
有人也觉得此文的件的大小是真实物理内存大小,看帖
http://s4/mw690/005AuxHBzy6Io1TYF5V83&690看我的真实机子:
http://s9/mw690/005AuxHBzy6Io1U0wR2b8&690
内存大小2g,与文件大小不符!
再看贴:
http://s11/mw690/005AuxHBzy6Io1U3JKG4a&690结论:不占用存储设备空间,但其大小不等于实际物理内存大小!!
http://s7/mw690/005AuxHBzy6Io1U5VP076&690
上边大意就是
http://s8/mw690/005AuxHBzy6Io1U81fhd7&690
很明显
http://s15/mw690/005AuxHBzy6Io1U9pSuae&690
更诡异的是
http://s6/mw690/005AuxHBzy6Io1UbVmB65&690
只不过是使用hexdump(或od)
然后我对内存进行存储数据,以消耗其空间:
http://s3/mw690/005AuxHBzy6Io1UeZgue2&690作为一种特殊FS格式,tmpfs
http://s2/mw690/005AuxHBzy6Io1UgZK901&690
然后进行数据写入:
http://s9/mw690/005AuxHBzy6Io1Uj66458&690
看以看到
http://s13/mw690/005AuxHBzy6Io1UkP9icc&690
其依然是4k。
重启以恢复内存和虚拟空间:
悲剧:
http://s8/mw690/005AuxHBzy6Io1UmvsP27&690http://s4/mw690/005AuxHBzy6Io1Uolph13&690
Swap分区依然存在,fstab中也有字挂在条目,却不能自动挂载(每次开机都是如此)。。。不得不每次都得:
Mkswap
http://s8/mw690/005AuxHBzy6Io1V7NFdf7&690
照此方法试了下,结果还是如此
http://s8/mw690/005AuxHBzy6Io1V9GJxd7&690
上面说kcore这个文件指的的可被内核分配的空间,但根据上边的实验来看,并非如此。其还提示说,在64b的OS中,这个文件大小最大可以达到128T,因为64b的OS最大寻址内存范围局势128T。
http://s11/mw690/005AuxHBzy6Io1Vbq427a&690
看着挺恐怖
用
能阅读的就只有 vmlinux LABELXXXX 你一部分
http://s6/mw690/005AuxHBzy6Io2c0U4J85&690
在64b的 server上查看:
http://s8/mw690/005AuxHBzy6Io2c2QMnf7&690
http://s14/mw690/005AuxHBzy6Io2c4WZv2d&690
从file得到的属性中,我们看以看出此OS的位数等,From后边跟的应该是根分区的 UUID
http://s13/mw690/005AuxHBzy6Io2c7vWY0c&690
在64b的
http://s8/mw690/005AuxHBzy6Io2c2QMnf7&690
http://s14/mw690/005AuxHBzy6Io2c4WZv2d&690
从file得到的属性中,我们看以看出此OS的位数等,From后边跟的应该是
http://s13/mw690/005AuxHBzy6Io2c7vWY0c&690