日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

辉哥给rockchip修复了一个内存溢出问题

發(fā)布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 辉哥给rockchip修复了一个内存溢出问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

還是周末

我也不想說周末,但是不是周末的話,可能也沒有特別清凈的時間來處理困難的問題。這周末我是要加班的,加班的前一個晚上,我領(lǐng)導(dǎo)找我們吃了一個便飯,聊了很多東西,這篇文章我就不說了,會在下篇文章來講這個事情,這篇文章就講修復(fù)的內(nèi)存溢出的問題。

問題出現(xiàn)的現(xiàn)象

現(xiàn)象是我們測試發(fā)現(xiàn),晚上在不斷的運行后會出現(xiàn)重啟,而且是每隔1個小時左右就會重啟。

然后我們拿到了日志分析,發(fā)現(xiàn)每次重啟前都會出現(xiàn) Out of memory,這里感謝guanxi同學(xué),我那時候還沒有注意,他給我指出來了。

OOM會導(dǎo)致系統(tǒng)把占用內(nèi)存最大的進程給kill掉,如果連續(xù)3次OOM,就會導(dǎo)致重啟。

當(dāng)然,你也可以設(shè)置閾值來修改這些配置,如下,可以修改觸發(fā)OOM的門限

echo?-100 > /proc/$PID/oom_score_adj

分析問題

因為每次出現(xiàn)后都是會干掉我們的應(yīng)用程序,我們先把應(yīng)用程序分析了一遍,最后發(fā)現(xiàn)把我們的應(yīng)用程序干掉還是會出現(xiàn)內(nèi)存溢出。

export?TERM=linux htop

關(guān)于htop的用法大家可以去自己體驗一下,里面有非常多的配置,可以看到很多關(guān)于系統(tǒng)的內(nèi)容。

在htop界面,可以清晰的看到內(nèi)存一點一點的增加。

所以,不是應(yīng)用的問題。

系統(tǒng)部分分析

然后我回退代碼,發(fā)現(xiàn)是一個HID的修改增加導(dǎo)致的,這個修改是和HID增加mute相關(guān)的。

再觀察日志的時候,在正常的情況下,內(nèi)核不會反復(fù)打印某條日志。

然后就用上了抓包工具wireshark,這個工具不僅可以抓網(wǎng)絡(luò)包,還可以抓USB包。

抓到包后,發(fā)給我的同事輝哥,輝哥分析后是因為代碼里面沒有對這種異常情況進行判斷。

so,加上這部分的判斷就可以了。

非常感謝guanxi給我們提供了另外一種USB抓包工具

如果大家想獲取,可以在公眾號后臺回復(fù)「USB抓包工具

關(guān)于這個問題的一些思考

剛開始我想找到某個線程的內(nèi)存異常,但是線程的內(nèi)存和進程是共享的,所以一個進程開了20個線程,每個線程體現(xiàn)的都是進程的內(nèi)存大小,看起來并沒有差異。而且我在查看進程內(nèi)存的時候,發(fā)現(xiàn)進程的內(nèi)存并沒有增加,這時候我就應(yīng)該轉(zhuǎn)變方向了。

rockchip的很多代碼寫的都很好,但是在實際的應(yīng)用場景上,會遇到各種各樣的問題,我們這次的修改,也是因為在這款設(shè)備上面出現(xiàn)的差異,在其他設(shè)備上是沒有問題的,但是要想去排查所有的硬件差異后根除,那可能比修改代碼更加困難。

抓日志分析一定是最好的解決問題的方式,在遇到問題前,還是要先找出問題差異點,從差異點去分析。

最后還是輝哥,yyds。

總結(jié)

以上是生活随笔為你收集整理的辉哥给rockchip修复了一个内存溢出问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。