免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2767 | 回复: 4
打印 上一主题 下一主题

路由器USB占内存问题!请教!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-11 14:23 |只看该作者 |倒序浏览
背景描述:系统是基于ARM架构,Route kernel是linux2.6.18的,内存大小为64M,usb driver有升级到标准kernel中2.6.29版本。系统中安装了samba(版本3.0.32),通过samba可以直接访问插在router上的U盘(将PC接在router的LAN口,并通过DHCP获取IP后,在Windows xp的“运行”中直接输入:\\192.168.0.1)。当系统运行起来后大概有20M左右的memory剩余(可以通过串口在shell下用free命令查看)。之前遇到一个问题是当从pc上通过samba copy大文件(百M级别甚至更大超过1G)到U盘上时,在SMB包交互阶段内存就会耗尽导致系统重启,后来查到是samba中一个函数有问题,在vfs_default.c中有一个函数vfswrap_ftruncate(),有如下代码:
        result = sys_ftruncate(fd, len);
        if (result == 0)
            goto done;
运行到sys_ftruncate时系统会内存耗尽而重启导致copy无法进行,可以去掉这行代码:
        /*result = sys_ftruncate(fd, len);
        if (result == 0)*/
        result = 0;
        goto done;
具体原因在此不多描述。

    新问题:解决以上的问题后,可以顺利的读写U盘。插上U盘后USB driver正常运行,此时系统内存并没有减少多少(大概有少1-2M),然而当我在copy时(还是比较大的文件),发现memory立刻从之前剩余的20M左右降低至1M左右。copy完成后这部分内存也释放不了!!!
    但也不是memory leak,因为我做过实验持续上传文件(大小1G)到U盘(通过脚本传输完成后删除,因为我的u盘只有4G)该实验运行了一天持续上传了200G以上的数据到U盘且系统运行状况良好(没有因内存耗尽而重启),如果是存在memory leak,相信这个实验不会持续那么久。在此过程中,系统内存剩余始终在1M左右。
    之前怀疑是samba占了内存,把samba进程kill掉后内存依然没有释放,只有拔掉U盘20M的空间立刻释放出来了。USB占据如此多的资源会严重影响Router的性能!

    希望大侠们能耐心的看完我的描述并帮我分析一下其中的原因。为什么数据传输完成后内存不释放又不是内存有泄漏?问题究竟出在哪里?如果觉得我描述的不够明白可以发问,任何讨论和交流都感激不尽!

论坛徽章:
0
2 [报告]
发表于 2010-01-12 23:09 |只看该作者
经过查找资料,发现这是linux系统使用内存的一种机制。不存在内存泄漏的问题,当系统频繁读写数据后,物理内存很快被用光,当程序结束后,也不会被释放出来,而是一直作为caching。详情可以搜索“linux 内存占用”获取一些信息

论坛徽章:
0
3 [报告]
发表于 2010-01-13 10:50 |只看该作者
內存是用來用的. 不是用來看的.. linux 會盡量把內存來使用, 它是會自我釋放的. 不用怕. 當內存用了差不多時, 最多系統只是慢了起來. 對整體沒有什么大影響的. 除非內核/系統在內存控制得不好才會出錯. 但一般來說是沒有問題的.

特別是一些live的系統, 食內存也較多呢!! 因為除了系統使用外, live 的暫存也需要內存空間.

[ 本帖最后由 惠繪洋 于 2010-1-13 10:52 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2010-01-18 14:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2010-01-19 09:20 |只看该作者
学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP