免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2013-01-21 10:40 来自手机 |只看该作者
楼上的这种才是干货,比我等只讲理论的要有价值的多,佩服。不过能把理论讲明白,也是不错的

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
12 [报告]
发表于 2013-01-21 10:40 |只看该作者
windoze 发表于 2013-01-21 10:35
单纯说原理可能观点分歧会很多,其实从现象看更直观。
一个无责任测评:
机器配置:E5649*6+64G内存,使用 ...


为什么第一个cpu  会 78%呢? 负载差太多了, 跟 27% 相比

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
13 [报告]
发表于 2013-01-21 10:43 |只看该作者
回归朴实吧~~~~C版~~~~~,应该向shell版学习啊~~~~~

论坛徽章:
0
14 [报告]
发表于 2013-01-21 10:55 |只看该作者
回复 10# windoze

确实,原理是理解问题的基础,但只了解原理有些时候根本无法解决复杂的问题,实验有时才是理解问题和加深对原理理解的关键。
我现在遇到的困境是这样的:

一个部署在同一服务器上的检索处理过程,有很多的模块组成
问题:如何通过数据分析,来确定我们可以异步化哪几个少量模块,以达到整体系统qps的显著提升。(异步化会不同程度的降低程序的可读性、可维护性)

论坛徽章:
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
15 [报告]
发表于 2013-01-21 10:57 |只看该作者
回复 6# sqfasd


    gvim的回答很有启发性,而且很简练,比我的好多了。他对你的回答也是正确的。

同步并不绝对就意味着进程切换——因为可能填一个缓冲区什么的就好了——系统会妥妥的处理好的然后回来的。当然进程切换线程切换什么的还是可能有。

不过,即使是异步模型,依然也有切换问题的——在得到回应的时候无论如何会做一次切换。当然不一定是线程切换,可能是信号量切换什么的。说白了还是会划不来。

目前真没看到能大量使用的用户层异步模型。我曾经找了很久,不过都没有找到,Win32下面的IOCP本质上和epoll之流一路货色,基本上还是会有上下文切换的。Win32下好像有个overlapped IO,Linux下面有个非标准的AIO,没试过不发表言论。反正总而言之“真正”的异步IO很小众。主要问题可能就是上面说的,切回到接收处时的行为太野蛮,程序不太好写。如果有明确的mainloop的话这不是问题,否则就有点麻烦了。而如果mainloop在客户端,总是可以用poll/select的方案解决的,用不着直接异步支持。

不过在内核层面IO基本上都是异步的。填个表单,做个记录就放行,然后睡了你,执行别人,最后等搞完了再叫醒你继续上。本质上还是因为操作系统自己有mainloop(进程时间片轮转),所以可以完全控制IO发生的时间边缘,不会出现很野蛮的事件= =

看完APUE的时候感叹,奶奶的信号回调什么的,跟线程什么的一样难搞……异步IO也有同样尴尬的问题。

论坛徽章:
0
16 [报告]
发表于 2013-01-21 10:58 来自手机 |只看该作者
唉,这里有几个"权威"人士,喜欢把简单的东西往复杂了说,饶个好几圈才回到主题,以显示自己的文艺范儿,把字多,扯得选当干货,还怎么朴实得了,人家稍微一质疑,就骂别人没智商,看不懂。
真没办法啊

论坛徽章:
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
17 [报告]
发表于 2013-01-21 10:59 |只看该作者
回复 10# windoze


    你说的异步IO是什么意思?poll/select?这其实也是同步IO的。

论坛徽章:
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
18 [报告]
发表于 2013-01-21 11:03 |只看该作者
回复 12# zylthinking

第一个是780%,不是78%,Linux下CPU占用率是按照每个CPU 100%算的。
起了8个thread,CPU占用率的理论上限是800%,使用到780%的CPU,基本可以认为是占满了。

Tomcat的问题是不管你起了多少thread,CPU占用率始终上不去,事实上所有的每连接一个thread/process的模型都有这个问题,thread起多了问题尤为严重。
可见thread/process上下文切换的开销是个大问题。

论坛徽章:
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
19 [报告]
发表于 2013-01-21 11:07 |只看该作者
本帖最后由 windoze 于 2013-01-21 17:13 编辑

回复 17# starwing83

本来异步IO专指Windows下的IOCP overlapped IO或者*nix下的AIO。

这个程序里其实有一个专门的thread用epoll做非阻塞+反应式IO+异步回调,IO线程和主线程相异步,所以勉强算是异步IO吧。

当然,一定要较真的话,这个也不能算是纯粹的异步IO。

论坛徽章:
0
20 [报告]
发表于 2013-01-21 11:11 来自手机 |只看该作者
回13楼的。
我原文说的是同步并发啊。单纯的同步是不意味着进程切换。
要往本质了说,什么同步异步,最终都逃不过一个时钟中断带来的大循环。
但是,要回归朴实啊,不是字越多越干货,字多也浪费时间啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP