免费注册 查看新帖 |

Chinaunix

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

关于两种网络server的模型优劣的讨论!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-05-29 13:54 |只看该作者
怎么就扯到嵌入式了?人家说的明显是服务器!用嵌入式做服务器,啥时候开始流行了?

论坛徽章:
0
12 [报告]
发表于 2012-05-29 16:31 |只看该作者
回复 10# jetking


我的理解啊:
不管多路复用还是多线程,因为你只有一个CPU,所以根本上是对CPU做时分复用。从一个链接切换到另一个链接,不管线程还是多路复用,都要一次系统调用吧。不同的是,多路复用你可以控制一次处理多少数据,多线程时间片一到就切换线程了。

个人觉得,降低负载的关键在于对CPU时分复用的方法,比如1、2、3三个任务
123123123123 性能肯定差,12次系统调用吧
111222333111 性能可定要好一些,3次系统调用吧

所以,加大发送缓冲区可能是一个比较直接的解决方案。当然,会增加视频延迟了。

论坛徽章:
0
13 [报告]
发表于 2012-05-29 17:33 |只看该作者
回复 12# reiase


说得真好

我给你提炼一下:
多线程有2个目的
1.提高响应
2.提高性能

论坛徽章:
0
14 [报告]
发表于 2012-05-29 19:02 |只看该作者
回复 10# jetking

请问你是怎么测试得出这样的结果?
   

论坛徽章:
0
15 [报告]
发表于 2012-05-29 20:59 |只看该作者
回复 13# walleeee


    这个貌似和12楼说的不太一样吧。

论坛徽章:
0
16 [报告]
发表于 2012-05-29 21:10 |只看该作者
回复 11# aychxm
楼主问2种模式在5~6路视频连接的时候那个更好,我觉得在“服务器”上5~6路是体现不出差距的,只能在一个cpu比较弱的时候才能有明显差别


   

论坛徽章:
0
17 [报告]
发表于 2012-05-29 21:45 |只看该作者
回复 12# reiase

线程切换也会占用cpu,多路复用没有这部分开销。
你说的这个模型,按照我的理解,是每个连接缓存若干帧再发送,以减少实际发送(write系统调用)次数,但实时性没办法保证,人为的增加视频延时。
而且对内核来说,对同样多的数据进行tcp/ip压栈处理,同样多的数据从网卡发送出去,所以我觉得对cpu效率没有太大帮助。

我在arm11 200Mhz的cpu上做的实验,tcp多线程发送8Mbps的码流数据,5~6路连接会占用70%~80%的cpu。每个连接有自己的缓存队列,一帧数据来了之后,塞入每个连接的缓存队列,每个连接有自己的线程负责从队列取数据发送。
随着连接数的增多,cpu的user和sys占用增大,sirq也相应增大,sys增大的特别多,分析下来应该是线程切换占用的,sirq也增大,应该是增加了连接和队列后,也增加了锁的开销。




   

论坛徽章:
0
18 [报告]
发表于 2012-05-29 21:52 |只看该作者
之后采用多路复用,我是用了libevent,仍旧每个连接一个队列,socket为非阻塞,视频帧来了之后塞入队列,置各自的write事件,在每个连接的write事件中发送数据。
这样的方式比多线程少占用5%~7%的cpu,仍旧是5~6路8Mbps的负载。

论坛徽章:
0
19 [报告]
发表于 2012-05-30 07:57 |只看该作者
回复 17# jetking


我是照你的实验结果给的分析....

多路复用也有开销的,因为select也是系统调用嘛。
多线程负载高,是因为你没办法控制处理多个链接的时序,造成频繁的线程切换。

最好的,是你能做个剖析(profile),找到开销最大的地方。

论坛徽章:
0
20 [报告]
发表于 2012-05-30 13:56 |只看该作者
一个server端,服务5-6个链接请求
这种模式下,每线程服务一个连接就好了。IO复用主要用来处理大规模并发,比如成百上千同时来访问你的网络,但每一个链接数量大不大。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP