k_ewell

k_ewell

0个粉丝

1

问答

0

专栏

0

资料

k_ewell  发布于  2016-04-08 16:38:30
采纳率 0%
1个问答
6606

HI3798M加载驱动后需要100MB内存NEED删减

 
#
# uname -a
Linux (none) 3.10.0_s40 #4 SMP Tue Jun 30 16:35:36 CST 2015 armv7l GNU/Linux
# lsmod
Module                  Size  Used by
# free
             total         used         free       shared      buffers
Mem:        505388        25092       480296            0         1880
-/+ buffers:              23212       482176
Swap:            0            0            0
#
#
##################################### ADD ALMOST ALL 3798 DRIVERS #####################################
#
#
# ls /dev/hi*
/dev/hi_adec      /dev/hi_hdmi      /dev/hi_pdm       /dev/hi_tde
/dev/hi_adsp      /dev/hi_i2c       /dev/hi_pm        /dev/hi_userproc
/dev/hi_aenc      /dev/hi_ir        /dev/hi_png       /dev/hi_vdec
/dev/hi_ai        /dev/hi_jpge      /dev/hi_pq        /dev/hi_venc
/dev/hi_ao        /dev/hi_keyled    /dev/hi_pvr       /dev/hi_vi
/dev/hi_avplay    /dev/hi_log       /dev/hi_pwm       /dev/hi_vo
/dev/hi_cipher    /dev/hi_mce       /dev/hi_stat      /dev/hi_vpss
/dev/hi_demux     /dev/hi_mem       /dev/hi_svdec
/dev/hi_disp      /dev/hi_module    /dev/hi_sync
/dev/hi_gpio      /dev/hi_otp       /dev/hi_sys
#
# lsmod
Module                  Size  Used by
hi_pmoc                56716  0
hi_vi                  97413  0
hi_keyled              66729  0
hi_aenc                 7264  0
hi_venc               113877  0
hi_png                 25043  0
hi_jpge                17244  0
hi_jpeg                33382  0
hi_ir                  80358  0
hi_fb                 167997  0
hi_pwm                  3214  0
hi_mce                  4126  0
hi_avplay               9840  0
hi_pvr                  2409  0
hi_sync                46560  0
hi_vou                402155  0
hi_aiao               244168  0
hi_adsp               221165  0
hi_hdmi               240377  0
hi_cipher             103538  0
hi_vdec              1035193  0
hi_vpss               190895  0
hi_pq                 212115  2 hi_vou,hi_vpss
hi_pdm                 22307  0
hi_svdec             1145891  0
hi_vfmw              1049845  2 hi_vdec,hi_svdec
hi_adec                 8179  0
hi_demux              286068  0
hi_otp                 44204  0
hi_tde                111880  0
hi_i2c                221375  0
hi_gpio_i2c            12809  1 hi_i2c
hi_gpio                13112  0
hi_common              77557 33 hi_pmoc,hi_vi,hi_keyled,hi_aenc,hi_venc,hi_png,hi_jpge,hi_jpeg,hi_ir,hi_fb,hi_pwm,hi_mce,hi_avplay,hi_pvr,hi_sync,hi_vou,hi_aiao,hi_adsp,hi_hdmi,hi_cipher,hi_vdec,hi_vpss,hi_pq,hi_pdm,hi_svdec,hi_vfmw,hi_adec,hi_demux,hi_otp,hi_tde,hi_i2c,hi_gpio_i2c,hi_gpio
hi_mmz                 21034 19 hi_vi,hi_aenc,hi_venc,hi_png,hi_jpeg,hi_fb,hi_avplay,hi_sync,hi_vou,hi_aiao,hi_cipher,hi_vdec,hi_vpss,hi_pq,hi_vfmw,hi_adec,hi_demux,hi_tde,hi_common
hi_media                8516  6 hi_png,hi_jpge,hi_jpeg,hi_tde,hi_common,hi_mmz
#
# free
             total         used         free       shared      buffers
Mem:        505388       125912       379476            0         2076
-/+ buffers:             123836       381552
Swap:            0            0            0
#
我来回答
回答6个
时间排序
认可量排序

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-08 21:39:14
认可0
感觉不是驱动用了100多兆,驱动用不了那么多吧,是hi_mmz 预分配占用的吧,这个东西通常是内存占用大户,多了解hi_mmz  ,这没事的,必须要用的,但可以根据实际需求调整。3798我还没弄过,不多都差不多

主要就是开了视频输入输出缓冲,不过话说回来,hi_mmz分配的应该是另外的512M内存吧,不是系统的才对呀,难道这些模块有些还占用了操作系统里面的内存。

你的总内存应该是1G吧?

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-08 22:14:04
认可0
突然想到一种可能,这些驱动里面不会开了线程吧,如果有注意系统默认线程堆栈大小,你可以尝试一下

另外df看看是不是开了虚拟内存盘啥的

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-09 22:01:45
认可0
本帖最后由 ngswfx 于 2016-4-9 22:30 编辑

哎,我也遇到类似的情况了,不过是3520D,我的现象和你不同,我的是由于程序多次重启(每次都没有释放完毕),大部分时间程序被终止后,内存是正常的,但有些时候,几率,大概10次有一次,内存稀里糊涂少了10M,怎么都出不来了,只能重启系统。

我还在分析查找呢,估计啥东西占用了。

哎,系统总内存才64兆,稀里糊涂少了10兆,不是要命吗。


  968 root         0 DW   [HDMI_kthread]                                                                                                                           
  969 root         0 DW   [HDMI_kCEC]                                                                                                                              
  970 root         0 SW   [VideoDec]                                                                                                                                


我感觉要么是被系统 /DEV  /proc占用了,要么就是被上面的三个东东占用了,没释放掉


/////////////////////////////////////////////////

最新发现的现象为:开机软件执行后,什么都不动,内存剩余25M

只要跑到根目录执行du -sh 查看系统文件空间占用 显示20M结果, free内存就少了,成了18M了。而且怎么都降低不下来了。

我只能设想:是不是某些文件没有被用到,其实没有装载到内存,即便flash被整体影射到了内存中,没有用到的部分其实还没完全装载?
当使用du查询时,文件系统会将所有都解压拷贝到内存中,所以....,仅仅假设而已,不得不这么设想,我的rootfs大概10M,解压后实际20M,正好相差10M,哎,博大精深.....继续瞎想........

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-09 22:45:04
认可0
本帖最后由 ngswfx 于 2016-4-10 00:46 编辑

管他呢,在开机SH中,先执行个ulimit -s 512             //设置线程堆栈默认512K,基本够用了,不够再单独设置,(注:好像这个是最大限制,程序内部即便大于这个也不管用,按这个走,所以自己按照实际情况配置吧,我自己的程序512K完全够用了,小的线程通常只用32K,都够用,没干啥复杂的事情,就几个变量,几个函数而已)

以前我也没测试过,仅仅知道而已,系统默认是8192,程序占用内存好看点,呵呵,程序内存占用成了12M了(看起来很美,心里也美),开始25M左右(我自己的程序,每个线程都单独考虑可能分配的内存大小,制定不同的堆栈大小,否则程序虚拟内存占用早就300多兆了,虚拟内存占用比例700%,心里有些痛苦,看来还有其他不是我开的线程存在,估计是海斯模块开的)。free内存无变化

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-04-09 23:43:03
认可0
本帖最后由 ngswfx 于 2016-4-10 00:40 编辑

呵呵,又有进展了,最新baidu研究

控制台输入执行: sync
然后再输入执行:echo 3 > /proc/sys/vm/drop_caches
释放了系统的各种缓存后,我的free内存正常了

我现在的做法是,主程序在启动完毕后(我考虑我的程序启动过程中,也可能让操作系统产生不少cache 和 log,至于运行当中,暂不去考虑了,以后再说),执行这2个动作,这样就不怕操作系统层面对内存的侵蚀了,因为应用程序都重启了,整个系统需要统一净化一次。



# free                                                                          
              total         used         free       shared      buffers         
  Mem:  60176        26456        33720            0            0         
Swap:        0            0               0                                   
Total:     60176        26456        33720

呵呵,看着程序完全正常工作后,操作系统总共60M内存,竟然有33M free,心里美美的。

没搞这些动作之前,弄不好free内存就成3M -5M了,那个心虚呀,程序总觉得卡卡的,随时崩溃似的。

goodman

2个粉丝

30

问答

18

专栏

17

资料

goodman 2016-04-11 08:51:16
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28197&ptid=10912]ngswfx 发表于 2016-4-9 23:43[/url]
呵呵,又有进展了,最新baidu研究

控制台输入执行: sync
[/quote]

Linux系统会最大化的使用内存来缓冲,尤其是在询文件的时候,系统会在必要的时候进行内存刷新,这个一点不需要担心的,一旦你的程序需要大量连续的内存,你就需要定期的 刷/proc/sys/vm/drop_caches了
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区