Out of memory (已爬文) - Linux

Isabella avatar
By Isabella
at 2014-12-27T11:33

Table of Contents

想請問各位前輩
我在Linux(2.6.36) 上寫了一個"收UART資料 存到SD"的程式

在測試的時候發現擺了約1天後 就發生out of memory 死機
(確認沒有我的程式 不會out of mmemory死機)

使用過 mtrace 來抓程式碼memory leak
但結果並無 memory leak
只有一個link list 沒有free 是我來存設定檔的

我在 開機後一分鐘 和 擺了半天後 各抓了一份 /proc/slabinfo

發現有兩個值相差過大 而且都持續增加不會減少

開機
inode_cache 552 658 272 14 1 : tunables 54 27 0 : slabdata 47 47 0

size-32 7200 7260 128 30 1 : tunables 120 60 0 : slabdata 242 242 0

半天
inode_cache 36246 36246 272 14 1 : tunables 54 27 0 : slabdata 2589 2589 0

size-32 41010 41010 128 30 1 : tunables 120 60 0 : slabdata 1367 1367 0

這兩個項目代表 inode_cache(filesystem) size-32(malloc 使用這個)

網路上查了一下 可下 sync;echo 3 > /proc/sys/vm/drop_caches
手動清除 pagecache、dentry、inode

但用過之後情況並沒有改善

我也有檢查過我的程式 所以malloc 都有 free

想請問

1.inode_cache 除了 用 /proc/sys/vm/drop_caches 手動清除
還有甚麼方法可以清除?
5B
2.size-32 我已確定我的程式有malloc 的地方都有做free
有fopen 的地方 都有fclose
為甚麼 size-32 的 使用數 還是一直往上加??

3.使用thread 會是造成這個問題的原因嗎??

--
Tags: Linux

All Comments

Candice avatar
By Candice
at 2014-12-28T05:50
你寫的東西是driver?
Vanessa avatar
By Vanessa
at 2014-12-29T00:34
不是driver 純粹收uart(從/dev/ttyUSB) 存到sd卡
Delia avatar
By Delia
at 2014-12-29T19:10
感覺還是你的程式本身佔用太多記憶體所以 crash
Valerie avatar
By Valerie
at 2015-01-01T22:12
你可以簡單寫個 script 放在 crontab 內定期執行
Elizabeth avatar
By Elizabeth
at 2015-01-02T00:50
程式碼就是跑 ps aux | grep your_program > result.txt
Kama avatar
By Kama
at 2015-01-06T13:55
然後檢視一下記憶體佔用狀態,可以初步確認是否該問題
Robert avatar
By Robert
at 2015-01-11T11:34
感覺是kernel mmc/sd driver 的問題。
Poppy avatar
By Poppy
at 2015-01-12T10:45
readonly 大大 請問會這樣認為 是因為inode_cache 的原因
嗎?
Jacky avatar
By Jacky
at 2015-01-13T17:34
系統 cache 本身有管理機制,不大可能因為用太多而當掉
Enid avatar
By Enid
at 2015-01-14T11:03
inode_cache不管怎長都無所謂 有需要系統會自己清....
Dora avatar
By Dora
at 2015-01-17T11:06
會不會是跟driver要了什麼東西後沒有放掉? 軟體本身memery
leak頂多就被oom killer砍了,系統一般不會掛點
Catherine avatar
By Catherine
at 2015-01-22T02:07
樓上指出重點,通常只有kernel和driver會搞死系統,user程
William avatar
By William
at 2015-01-26T10:55
式除非是用來專攻os漏洞的,不然幾乎只會死自己不死系統
Catherine avatar
By Catherine
at 2015-01-30T18:51
感覺你是檔案打開後沒有做相對應的關閉動作,導致開
啟的檔案數量太多,超過了系統上限,並不是記憶體洩
漏的問題。
Quintina avatar
By Quintina
at 2015-02-03T08:42
to fourdollar: 寫檔案我採用 開檔>寫入>關閉
Blanche avatar
By Blanche
at 2015-02-04T04:40
每1hr 換一個檔案
Jake avatar
By Jake
at 2015-02-07T15:24
有考慮用 開檔 > 寫檔 (到達換檔案條件1hr)>關檔
這兩種方法會有差別嗎??
Michael avatar
By Michael
at 2015-02-09T17:32
to kdjf : 是發生out of memory 然後開始砍程式 砍完
memory 也沒釋放 最後沒東西砍 就死機了!!
Joseph avatar
By Joseph
at 2015-02-12T17:36
還是你要用 bash 的 ulimit 限制一下當下的資源環境
限制一下 file handle 與 memory 使用最大限制
超過使用量就可以限制住,資源也不會過度被耗費使用
Joseph avatar
By Joseph
at 2015-02-14T20:49
只是你程式可能最後會 crash,但是系統至少不會 crash
Edith avatar
By Edith
at 2015-02-19T20:33
你怎麼讀uart的? 把code放上來吧
Donna avatar
By Donna
at 2015-02-22T23:26
也許可以定期去檢查 /proc/<pid>/ 底下有多少個數字
檔案來驗證是不是我所說的檔案數量過多的問題。
Charlotte avatar
By Charlotte
at 2015-02-23T15:16
https://github.com/choushane/serial.git GITHUB
Donna avatar
By Donna
at 2015-02-24T10:36
to fourdollars : 是看/proc/<pid>/limit 這檔案嗎??
Blanche avatar
By Blanche
at 2015-02-27T16:00
裡面 只有 max stack size = 2088960 Max open file=1024
Max locked memory=65536 Max msgqueue size = 819200
Ingrid avatar
By Ingrid
at 2015-03-03T06:53
這四個有值 其他都是unlimited
Tracy avatar
By Tracy
at 2015-03-07T05:05
to kenduest : 這是個辦法!但是我比較想正解.. 找出問題
所在!

請問xrdp編譯的問題

Daniel avatar
By Daniel
at 2014-12-27T11:12
我是使用kali linux但是想在上面裝xrdp 0.6.1 但編譯的時候出現以下訊息,想請問這要如何解? checking for openssl/rc4.h... yes checking security/pam_appl.h usability... yes checking security/p ...

Syslinux Menu Password 求助~~

Andrew avatar
By Andrew
at 2014-12-26T22:28
我搞了半天,還是喬不好~~ 請問一下,在USB的Syslinux要怎麼設定Menu passwd的框框位置和用md5碼加密 我去了Syslinux官網的wiki看了一下,我照他說的,加了$1$進去syslinux.cfg,還是沒辦法用md5加密 請問各位大大要如何設定?? 對了,還有,Menu passwd打 ...

哪裡能租或借Solaris Sparc的機器呢?

Quanna avatar
By Quanna
at 2014-12-26T21:53
大家好, 我最近投稿GNU R的套件,結果在Solaris Sparc上有bug。 由於我完全沒有接觸過這類型的機器, 想請教大家哪裡有機會可以租或借到這種類型的機器呢? 或是有其他方法可以模擬這種環境嗎? 謝謝 --- 我搜尋了相關資源之後,發現不容易找到解答。 由於問題的根源是ENDI ...

Flask running

Eden avatar
By Eden
at 2014-12-25T18:15
※ [本文轉錄自 Python 看板 #1KctcCc1 ] 作者: gn00618777 (非常念舊) 看板: Python 標題: [問題] Flask running 時間: Thu Dec 25 10:42:16 2014 我使用 Flask 寫一個 hello.py script fro ...

dialog和putty顯示

Lucy avatar
By Lucy
at 2014-12-25T17:39
大家好,最近也有發生一樣的問題,不知道各位有沒有解決方案? 我發現如果把Putty編碼從UTF8改成and#34;Use font encodingand#34;邊框有出來 但部分框架還是沒有顯示出來,請各位幫忙解答,謝謝。 ※ 引述《tsaiminghan (nahgnimiast)》之銘言: : 請問一 ...