免费注册 查看新帖 |

Chinaunix

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

[C++] [换个地方发]请教大牛:异步io的优点究竟在哪 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2013-01-21 18:21 |只看该作者
本帖最后由 xxxxxxxp 于 2013-01-21 18:28 编辑

各位似乎都在讨论同步连接池的实现模型。利用这个时间简单的做了个实验:

实验1:
一个客户端,向服务器派发短连接压力。
一个服务端,同步处理请求(连接池实现简介:单线程accept,接收到请求后给1000个线程的线程池处理,条件变量来互斥):
场景A中处理线程sleep 5ms
场景B中处理线程sleep 40ms
结果发现99.99%的服务稳定性约束下,A的极限压力为7000~8000qps, B的极限压力位4000~5000qps

这个结论让我颇感意外,因为,本以为两个场景的上下文切换次数一致,性能当没有大的差别

实验B:
一个客户端,向服务器派发短连接压力,8000qps。
一个服务端,同步处理请求。
vmstat查看系统参数
场景A中处理线程sleep 5ms:   cs:68000~72000 中断数:16000~18000
场景B中处理线程sleep 40ms: cs:72000~75000 中断数:14000~17000

哪位大神可以提点一二吗

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
52 [报告]
发表于 2013-01-21 18:22 |只看该作者
本帖最后由 windoze 于 2013-01-21 18:24 编辑

回复 50# starwing83

LF和HSHA是“并发模型(Concurrent Model)”,说的是如何调度一组工作线程/进程,Reactor是一种“IO多路分解模型(IO Demultiplexer)”,说的是如何进行多路IO,这两个东东不在同一个语境里(抱歉又要卖几个名词)
和Reactor在同一个语境里的另外一种模型是Proactor,这个就是我们常说的“正宗AIO”。
Reactor的方式是:发起IO操作->等待结束->干活 -> 发起IO操作->等待结束->干活 -> ……
Proactor的方式是:发起IO操作并设置Completion Callback -> 发起IO操作并设置Completion Callback ->……

Proactor模型可以不用多线程/进程,这个东东和LF/HSHA没有直接关系,但是活总是要干的,多个CPU干活总是比一个快的,所以Proactor模型在实践中一般是起一个线程池(嗯,一堆线程),不需争用,每个线程各干各的就好,如果OS支持异步回调到多个线程就更简单了,如果不支持,那就搞个分配器自己分配到多个工作线程,此时这个分配器可以采用LF或者HSHA方式调度工作线程。

Reactor模型本来和线程/进程也没什么关系,但由于它的IO都是同步的,所以在没有任何事件发生时IO线程会阻塞,所以单独的IO线程是必须的,一般Reactor后面会配合一个工作线程的调度器,这个调度器用LF或者HSHA模式。

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
53 [报告]
发表于 2013-01-21 18:28 |只看该作者
回复 1# xxxxxxxp


    异步用的不是相同的时钟,就和DMA传输一样

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
54 [报告]
发表于 2013-01-21 18:29 |只看该作者
回复 53# 方兆国
谁说DMA是异步的?

   

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
55 [报告]
发表于 2013-01-21 18:32 |只看该作者
回复 52# windoze


    @linux_c_py_php

说白了,Reactor就是coroutine模式。而Proactor是CPS模式。(好吧,我也开始卖名词了……)

前者看上去是阻塞的,但是阻塞的时候我能挂起你,然后去干别的事儿。后者是预先就告诉API如果完成了怎么办,然后放心大胆地把这个请求忘记掉(反正已经把所有后续工作给交出去了)。

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
56 [报告]
发表于 2013-01-21 18:34 |只看该作者
回复 54# windoze


    确实说错的,刚刚边看电视连续剧发的
DMA有三种方式,周期挪用,平分周期,,暂停CPU访问总线三种形式

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
57 [报告]
发表于 2013-01-21 18:36 |只看该作者
方兆国 发表于 2013-01-21 18:28
回复 1# xxxxxxxp


很抱歉

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
58 [报告]
发表于 2013-01-21 18:46 |只看该作者
DMA和同步异步之间没有半毛钱关系。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
59 [报告]
发表于 2013-01-21 18:55 |只看该作者
@方兆国
异步用的不是相同的时钟,就和DMA传输一样

介个。。。 不同时钟还能DMA,这机器牛啊



@starwing83
DMA和同步异步之间没有半毛钱关系。

有五毛的关系:)。

话说说这话要看你站在哪个角度看问题吧

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
60 [报告]
发表于 2013-01-21 18:57 |只看该作者
回复 56# 方兆国

我说方同学啊,有时候承认自己不知道不是什么丢人事儿,真的,子曾经曰过,知之为知之不知为不知是知也……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP