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

作者: xb1015 (Marco)   2013-05-04 23:20:06
先感謝各位大大的建議
經過一些測試建議, 目前還無法解決此問題
以下是後續測試
小弟還有一些疑問在這邊提出
小弟額外拿了一塊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~
作者: askacis (ASKA)   2013-05-05 00:12:00
可以用vmalloc換掉kmalloc,只是效能可能會掉~~或是你就乾脆要32K~~好像都是一些餿主意XD
作者: i386 (i386 cpu)   2013-05-06 10:07:00
目前有問題的似乎都是ram不到128M的環境.可以先確定看看沒問題的環境下,到底會用到多少記憶體.對照每個環境用的memory allocator(slab/slob/slub)?
作者: yuskeb (我想做一個好人)   2013-05-07 21:30:00
echo "3" > /proc/sys/vm/drop_caches 或者while (( 1 ));doecho "3" > /proc/sys/vm/drop_caches; sleep 2;done然後一併開始原來的測試 看看會不會再發生

Links booklink

Contact Us: admin [ a t ] ucptt.com