免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: humjb_1983
打印 上一主题 下一主题

[网络子系统] skb占用page的释放时机 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2014-03-03 13:56 |只看该作者
回复 16# humjb_1983


    看起来像是一个bug(除非你使用了zerocopy). 进程应该不必等待他发出的skb就可以被关闭.但socket需要等待.

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
22 [报告]
发表于 2014-03-03 14:12 |只看该作者
crspo 发表于 2014-03-03 13:56
回复 16# humjb_1983

crspo兄的意思不是太明白~,进程不必等待skb回收就可以关闭?socket需要等待是什么意思?
socket回收的时候应该会回收skb吧?而进程退出时应会回收其占用的socket吧?

论坛徽章:
0
23 [报告]
发表于 2014-03-03 14:17 |只看该作者
回复 22# humjb_1983


    个人理解进程应该只会put一个引用计数吧。sk_free()里面只有sk->sk_wmem_alloc递减为零的时候才会真正释放这个socket.

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
24 [报告]
发表于 2014-03-03 15:50 |只看该作者
我再抽空看看代码~,谢谢!

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
25 [报告]
发表于 2014-03-03 17:14 |只看该作者
回复 20# humjb_1983


    netif_rx(),会放如网络核心的没处理器一队列中.还没论到进程.

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
26 [报告]
发表于 2014-03-04 08:31 |只看该作者
smalloc 发表于 2014-03-03 17:14
回复 20# humjb_1983

不好意思,这个真没看明白,呵呵~~

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
27 [报告]
发表于 2014-03-04 12:23 |只看该作者
回复 26# humjb_1983


    驱动调用netif_rx(), 会将sbk暂时放在每CPU的一个缓存队列queue中,这个队列的skb在关机并不做释放.
net/core/dev.c
net_dev_init()
queue = &per_cpu(softnet_data, i);

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
28 [报告]
发表于 2014-03-04 12:37 |只看该作者
smalloc 发表于 2014-03-04 12:23
回复 26# humjb_1983

个人理解,skb在整个协议栈的流程中应该只有一份吧,这个队列中缓存的应该只是一个指针而已哦,在进程退出的过程中,skb按理应该在进程关闭-》fd回收-》file关闭-》tcp_close的过程中回收才对哦~
没有详细看相关代码哈~~,见谅

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
29 [报告]
发表于 2014-03-04 18:37 |只看该作者
回复 28# humjb_1983


    刚进协议栈这个queue,和TCP,进程,socket都还没关系,还没进行包处理.

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
30 [报告]
发表于 2014-03-05 09:11 |只看该作者
我再看看~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP