免费注册 查看新帖 |

Chinaunix

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

[内核模块] “零拷贝”技术在多用户模式下的实现 [复制链接]

论坛徽章:
6
季节之章:冬
日期:2015-01-20 17:18:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2015-12-20 06:20:00程序设计版块每日发帖之星
日期:2016-06-09 06:20:00每日论坛发贴之星
日期:2016-06-09 06:20:002016科比退役纪念章
日期:2017-01-12 14:08:57
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-12 12:18 |只看该作者 |倒序浏览
本帖最后由 liklstar 于 2014-02-12 12:22 编辑

我准备采用这样一个网卡到用户态的“零拷贝”方案:(假设单用户接收方向)
1、在用户进程空间分配一个较大的user_buff,比如:128KB,并按照2KB切分;
2、在内核空间分配一个有64个描述符的环型缓冲区kr_buff,并将其使用mmap映射到用户态,以便用户读取控制信息;
3、对user_buff进行地址翻译,将其物理地址一一对应地存入kr_buff[nth_desc]的phy_addr字段,指明第n个描述符所代表的那个2KB用户缓冲区的物理地址;
这样网卡上的数据就可以顺序DMA传入用户缓冲区user_buff了。

我的问题是:如何推广至多用户模式?如果是多用户,那岂不是要为每个用户分配一个user_buff吗?kr_buff又如何与user_buff一一对应呢?

论坛徽章:
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
2 [报告]
发表于 2014-02-12 13:52 |只看该作者
本帖最后由 humjb_1983 于 2014-02-12 13:52 编辑

你这里说的“多用户”具体指啥?是“多接收进程”吧?

论坛徽章:
6
季节之章:冬
日期:2015-01-20 17:18:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2015-12-20 06:20:00程序设计版块每日发帖之星
日期:2016-06-09 06:20:00每日论坛发贴之星
日期:2016-06-09 06:20:002016科比退役纪念章
日期:2017-01-12 14:08:57
3 [报告]
发表于 2014-02-12 15:29 |只看该作者
humjb_1983 发表于 2014-02-12 13:52
你这里说的“多用户”具体指啥?是“多接收进程”吧?


是的,准确地说:是多个用户进程。

我怀疑使用这种“内存映射”方式的零拷贝技术不能实现端到端的多用户进程间多对多的通信?因为无法将一块内核区域映射到多个用户进程中,就比如我的kr_buff恐怕只能映射到一个用户空间。如果映射到多个用户,那么如何管理呢?

论坛徽章:
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
4 [报告]
发表于 2014-02-12 16:45 |只看该作者
理论上应该是可以将同一段内存区域映射到多个进程的地址空间中的,不知你具体需要达到怎样的目的,具体我没实际的捯饬经验~~,供参考。

论坛徽章:
6
季节之章:冬
日期:2015-01-20 17:18:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2015-12-20 06:20:00程序设计版块每日发帖之星
日期:2016-06-09 06:20:00每日论坛发贴之星
日期:2016-06-09 06:20:002016科比退役纪念章
日期:2017-01-12 14:08:57
5 [报告]
发表于 2014-02-12 16:56 |只看该作者
humjb_1983 发表于 2014-02-12 16:45
理论上应该是可以将同一段内存区域映射到多个进程的地址空间中的,不知你具体需要达到怎样的目的,具体我没 ...


哦。如果一段内核区域可以映射到多个应用进程空间,那不是要使用互斥锁来管理了吗?这个上下文切换就多了?

我就是希望一张网卡上的多个用户的数据流可以不通过内核直接分发到相应进程手中,实现零拷贝。这样消除了多次拷贝的开销,频繁上下文切换的开销以及大量中断的开销,岂不甚好?但是,我估计用内存映射的方式恐怕很难做到。是不是?

论坛徽章:
0
6 [报告]
发表于 2014-02-12 17:30 |只看该作者

论坛徽章:
6
季节之章:冬
日期:2015-01-20 17:18:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2015-12-20 06:20:00程序设计版块每日发帖之星
日期:2016-06-09 06:20:00每日论坛发贴之星
日期:2016-06-09 06:20:002016科比退役纪念章
日期:2017-01-12 14:08:57
7 [报告]
发表于 2014-02-12 20:48 |只看该作者
lenky0401 发表于 2014-02-12 17:30
参考一下netmap:
http://info.iet.unipi.it/~luigi/netmap/


我觉得这位Luigi Rizzo先生能够提出这样一个网络子系统架构,即解决了很多突出的问题,又能较好地适应各种需要并能比较容易实现,真是不容易!可以说他改变了传统网络子系统的处理方式。着实令我辈汗颜。

论坛徽章:
6
季节之章:冬
日期:2015-01-20 17:18:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2015-12-20 06:20:00程序设计版块每日发帖之星
日期:2016-06-09 06:20:00每日论坛发贴之星
日期:2016-06-09 06:20:002016科比退役纪念章
日期:2017-01-12 14:08:57
8 [报告]
发表于 2014-02-12 20:59 |只看该作者
我能不能把一块内核区域映射成几个进程的共享内存?

论坛徽章:
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
9 [报告]
发表于 2014-02-13 08:38 |只看该作者
请问是如何区分数据流是属于哪个用户的呢?在不使用零拷贝的方案中,是怎么实现的呢?

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2014-02-13 09:41 |只看该作者
回复 5# liklstar

搞一个中间进程,由它再分发。我是这么想的。:wink:

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP