茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1672361 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
HoneyMoon_Day4_0107.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [轉貼]/proc 下的 kcore 文件過大,能變小嗎?

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]/proc 下的 kcore 文件過大,能變小嗎?
/proc下的kcore文件過大,能變小嗎?

今天服務器很慢,所以我在機器上搜大於800M的文件: find . -type f -size +800M
結果搜出了一個「大」文件:/proc/kcore,有18個G,趕緊找文檔看,似乎這個文件/proc/kcore的大小就是機器的物理內存,就是系統內存的一個map,並不真正占物理內存那麼大的硬盤空間。下面是查到的關於該文件的描述:
/proc/kcore is like an "alias" for the memory in your computer. Its
size is the same as the amount of RAM you have, and if you read it as
a file, the kernel does memory reads.

如果內核不能識別全部內存,即"ll /proc/kcore"(查看kcore的真實大小:du -h /proc/kcore)後顯示的大小不等於實際的物理內存大小,可以用 cat /proc/meminfo 命令來校驗.如果所顯示的數量與系統的物理內存不同,則在 /boot/grub/grub.conf 文件中添加:
mem=xxM

==========================================

但是,我的服務器內存只有16G,為什麼這個文件比內存還大,網上查了一下,還有多少T的,這還不是關鍵,關鍵是我另一台新服務器,同樣的文件只有8192個字節,而這台機器的內存是64G。由此可見這個文件可能不佔用存儲設備空間,但其大小並不等於實際物理內存大小,而且其大小似乎和內存也沒多大關係!!!

那麼大看著總是不爽,那麼這個文件怎麼變小呢?

刪除不行,拷貝覆蓋也不行,沒辦法,用vi打開,刪除內容再保存,只讀文件當然不能保存,但是可以加「!」保存啊,保存後再看這個文件,只有4096個字節了。

文件變小後系統似乎沒什麼影響,重啟後發現文件又變成原來的18G了。真沒辦法,呵呵。

後來又看了一篇關於這個文件的文章(點擊打開鏈接),說是用hexdump命令查看一下就變小,一試果然如此,只是重啟之後,一切都還原了,唉!

難道這個文件的大小和服務器的年齡有關,運行時間越長,文件越大?,在此留個記錄,以便今後比較:
DL580G7(16G RAM): -r-------- 1 root root 18253611008 Nov 11 12:56 kcore

DL580G9(64G RAM): -r-------- 1 root root 8192 Nov 11 13:26 kcore

===================================================


原文出處:/proc下的kcore文件过大,能变小吗? - 驽马十驾 才定不舍 - CSDN博客
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]/proc/kcore 文件特別大,感覺很不正常,有人能解釋一下麼?

/proc/kcore文件特別大,感覺很不正常,有人能解釋一下麼?

偶然發現這個問題,執行這個命令,網上說是內存的映射,是不佔用實際空間的,可是還是感覺怪怪的,希望專業人士解釋一下。


# ll /proc/kcore -h
-r-------- 1 root root 128T Mar 15 14:40 /proc/kcore

clipboard.png

摘自一段原文解釋:
/proc/kcore is like an "alias" for the memory in your computer. Its
size is the same as the amount of RAM you have, and if you read it as
a file, the kernel does memory reads.
其大致意識就是 kcore 相當於內存的別名,變相代表著內存,可以當做內存文件執行內存讀取,其實通過不同的命令查看該文件所顯示的大小也是不一致的,例如:
ls -lh /proc/kcore
du -hs /proc/kcore
你可以試試。

實際並不佔用硬盤。說明你的內存很大……


原文出處:linux - /proc/kcore文件特别大,感觉很不正常,有人能解释一下么? - SegmentFault 思否
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]關於 /proc/kcore 文件

關於/proc/kcore文件

關於 /proc/kcore  文件:

 

首先看來自: http://unixguide.net/linux/faq/04.16.shtml 的原貼:

關於/proc/kcore文件

大意就是 /proc目錄下的文件不真實存在、不佔用實際存儲設備空間( 這個毋庸置疑 /proc/kcore 的大小等於內存的大小!

有人也覺得此文的件的大小是真實物理內存大小,看帖


關於/proc/kcore文件
看我的真實機子:
關於/proc/kcore文件



關於/proc/kcore文件

內存大小 2g ,與文件大小不符!

再看貼:

關於/proc/kcore文件
結論:不佔用存儲設備空間,但其大小不等於實際物理內存大小!!

關於/proc/kcore文件

上邊大意就是   kcore  /proc  下的其他文件不同,它是顯示大小的,而且它的大小等於已被使用的物理內存的大小 加上 4k ,此文件可以使用 gdb  objdump 等工具調試。
關於/proc/kcore文件
很明顯  如果是這樣的話 那麼 kcore 的大小應該至少 939M ,可其大小卻是 897M

關於/proc/kcore文件
更詭異的是 ,上邊顯示的 897M 大小 還不是一直都存在的 
關於/proc/kcore文件

只不過是使用 hexdump (或 od ) 查看了下,然後其就變成了 4k
,重新開機,恢復 897M ,再查看一次 又變成了 4k

然後我對內存進行存儲數據,以消耗其空間:

關於/proc/kcore文件
作為一種特殊 FS 格式, tmpfs  是直接掛內存空間的,默認是內存空間大小的一半,當然也可以指定。

關於/proc/kcore文件

然後進行數據寫入:
關於/proc/kcore文件
看以看到 內存和虛擬空間都基本已經耗盡了,再看 kcore 文件

關於/proc/kcore文件

其依然是 4k

重啟以恢復內存和虛擬空間:

悲劇:

關於/proc/kcore文件


關於/proc/kcore文件


Swap 分區依然存在, fstab 中也有字掛在條目,卻不能自動掛載(每次開機都是如此)。。。不得不每次都得:

Mkswap /dev/sda9 swapon /dev/sda9  來啟用。


關於/proc/kcore文件
照此方法試了下,結果還是如此  ||

關於/proc/kcore文件
上面說 kcore 這個文件指的的可被內核分配的空間,但根據上邊的實驗來看,並非如此。其還提示說,在 64b OS 中,這個文件大小最大可以達到 128T ,因為 64b OS 最大尋址內存範圍局勢 128T

關於/proc/kcore文件

看著挺恐怖  || (不過不用關心它)

 

 hexdump 查看下此文件:

關於/proc/kcore文件
能閱讀的就只有  vmlinux LABELXXXX  你一部分

關於/proc/kcore文件
64b 的  server 上查看:
關於/proc/kcore文件


關於/proc/kcore文件

file得到的屬性中,我們看以看出此 OS 的位數等, From 後邊跟的應該是 根分區的 UUID
關於/proc/kcore文件

原文出處:关于/proc/kcore文件_lydygly_新浪博客
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|