Re: [問題] CPE出現 page allocation failure(求助)

看板LinuxDev作者 (Marco)時間12年前 (2013/05/04 23:20), 編輯推噓3(308)
留言11則, 3人參與, 最新討論串2/2 (看更多)
先感謝各位大大的建議 經過一些測試建議, 目前還無法解決此問題 以下是後續測試 小弟還有一些疑問在這邊提出 小弟額外拿了一塊Ralink公版進行後續測試的比對 RAM 為 32M 在測試 LTE high traffic, 大約過 5~10分鐘就會出現此問題(use LTE usb module, vendor 提供的driver) 此LTE usb module 已經跟Linux PC 測試過, 長時間測試OK(driver 為相同)(linux 2.6.35) PC 記憶體 很大, 似乎不是很好的參考依據 因此額外有測試 Lantiq platform, 128 M RAM, 長時間測試, ok(linux 2.6.32) [Mon Apr 08 21:46:23.093 2013] # kswapd0: page allocation failure. order:2, mode:0x4020 [Mon Apr 08 21:46:23.890 2013] Normal: 8*4kB 4*8kB 0*16kB 0*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 3072kB 雖然可以看到 16kB page number 數量為0, 但是為何不會從 64kB size 去 allocation 16kB, 是很不解的地方 出現 "page allocation failure" 問題, 乍看為 記憶體 要不到的情況 實際上在使用free 指令看 記憶體還有 8M free 因此在想什麼原因造成kernel 記憶體要不到 已諮詢過 module chip vendor, 得到回覆只有 在其他產品上沒有問題 因此 這問題 需要我們自己去解決 (看來需要找一些tool看是否能觀察到哪個driver 使用過多的記憶體, 但是只知道process 可以用ps觀察, kernel 方面不知有無方式check driver memory 使用狀況 ) 此處已參考過大大建議的文章 http://blog.richliu.com/2009/12/11/822/ echo 8192 > /proc/sys/vm/min_free_kbytes 但是問題還是依然發生 使用 free -m 指令, 似乎也是看到整體memory使用, 而無法看到哪個driver使用過多 memory 詳細 log 如下link https://sites.google.com/site/xb10151983/rt6855 LTE driver 如下 https://sites.google.com/site/xb10151983/ue_cdc ※ 引述《xb1015 (Marco)》之銘言: : 各位Linux 大大 : 目前在工作中遇到一個對我而言非常棘手問題 "page allocation failure" : 目前完全沒方向 : 狀況遇到如下: : AR9341 CPE + Altair LTE module 整合產品, 測試出現問題 : 其 RAM 為 64M : LTE module 搭在 CPE 進行throughput 整機測試(iperf DL 74M / UL 17M) : 出現 page allocation failure(在另一個平台(Lantiq ) 沒有遇到類似問題) : 已諮詢過 module chip vendor, 得到回覆只有 在其他產品上沒有問題 : 因此 這問題 需要我們自己去解決(看來需要找一些tool看是否能觀察到哪個 : driver 使用過多的記憶體, 但是只知道process 可以用ps觀察, kernel 方面不知有無 : 方式check driver memory 使用狀況 ) : 詳細 log 如下link : https://sites.google.com/site/xb10151983/dni_1 : 請大大協助, 感激不盡 ~~ : THX~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.217.116.193

05/05 00:12, , 1F
可以用vmalloc換掉kmalloc,只是效能可能會掉~~
05/05 00:12, 1F

05/05 00:15, , 2F
或是你就乾脆要32K~~好像都是一些餿主意XD
05/05 00:15, 2F

05/06 10:07, , 3F
目前有問題的似乎都是ram不到128M的環境.
05/06 10:07, 3F

05/06 10:07, , 4F
可以先確定看看沒問題的環境下,到底會用到多少記憶體.
05/06 10:07, 4F

05/06 10:09, , 5F
對照每個環境用的memory allocator(slab/slob/slub)?
05/06 10:09, 5F

05/07 21:30, , 6F
echo "3" > /proc/sys/vm/drop_caches 或者
05/07 21:30, 6F

05/07 21:30, , 7F
while (( 1 ));
05/07 21:30, 7F

05/07 21:32, , 8F
do
05/07 21:32, 8F

05/07 21:32, , 9F
echo "3" > /proc/sys/vm/drop_caches; sleep 2;
05/07 21:32, 9F

05/07 21:33, , 10F
done
05/07 21:33, 10F

05/07 21:35, , 11F
然後一併開始原來的測試 看看會不會再發生
05/07 21:35, 11F
文章代碼(AID): #1HXISeFb (LinuxDev)
文章代碼(AID): #1HXISeFb (LinuxDev)