找回密码
 用户注册

QQ登录

只需一步,快速开始

楼主: sugar

ACE_Dev_Poll_Reactor(5.7.0)导致CPU占有率高?

[复制链接]
发表于 2010-5-17 16:07:36 | 显示全部楼层
(1)ACE_Dev_Poll_Reactor dev_reactor;在这里推荐使用ACE_Dev_Poll_Reactor dev_reactor(xxx);这样的方法。控制打开socket的数量。
(2)你的Open似乎有点问题。我的写法是:
int nRet = pConnectAcceptor->open(listenAddr, 0, 1, ACE_DEFAULT_ASYNCH_BACKLOG, 1, pProactor);
if(-1 == nRet)
{
        OUR_DEBUG((LM_INFO, "[CProServerManager::Start] pConnectAcceptor->open[%d] is error.\n", i));
        OUR_DEBUG((LM_INFO, "[CProServerManager::Start] Listen from [%s:%d] error(%d).\n",listenAddr.get_host_addr(), listenAddr.get_port_number(), errno));
        return false;
}

[ 本帖最后由 freeeyes 于 2010-5-17 16:09 编辑 ]
发表于 2010-5-17 16:11:32 | 显示全部楼层
当然,如果你用默认的Proactor,最后的参数可以不设置。
我这里开启以后,CPU一直在0%左右,当有链接的时候,CPU会和数据处理的线程的繁忙度成正比。
 楼主| 发表于 2010-5-18 11:18:44 | 显示全部楼层
to freeeyes:
经过比较我发现我用的是Reactor(反应器)及ACE_Acceptor, 而你所说的是Proactor(前摄器)和ACE_Asynch_Acceptor.
经过测试我觉得可能的确5.7.0版本的ACE_Dev_Poll_Reactor会导致CPU占有率高. 因为其它什么都没有变.只是把ACE_Dev_Poll_Reactor改成ACE_TP_Reactor后CPU就相对比较正常. 我问了其它人用5.6.5版的似乎还比较正常.

[ 本帖最后由 sugar 于 2010-5-18 11:24 编辑 ]
发表于 2010-5-18 11:36:51 | 显示全部楼层
欢迎大家试用我的epoll proactor啊,
http://acejoy.com/bbs/viewthread.php?tid=1517&extra=page%3D1

这几天在实现ACE_Asynch_Read_File和ACE_Asynch_Write_File,估计本周可以完成发上来
计划在下一个实际项目中采用这个epoll proactor,所以我会努力保证质量的
 楼主| 发表于 2010-5-18 13:29:49 | 显示全部楼层

回复 #14 wishel 的帖子

支持wishel. 因为最近自己变动比较大. 并且正在学习一些东西,所以太忙了. 等闲暇一点. 我会帮你测试的.

[ 本帖最后由 sugar 于 2010-5-18 13:31 编辑 ]
发表于 2010-5-18 14:12:25 | 显示全部楼层

回复 #15 sugar 的帖子

谢谢!:handshake

[ 本帖最后由 wishel 于 2010-5-18 14:14 编辑 ]
发表于 2010-6-2 15:44:53 | 显示全部楼层
LZ 我也曾经碰到这个问题,
5.7.0的ACE_Dev_Poll_Reactor是存在这个问题,在多线程并发下,CPU占100%.
但单线程是正常的.
程序debug下貌似是Token锁的释放出了问题.
5.7.7已经发布了吧.我记得邮件列表里都在讨论5.7.8了
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-22 02:22 , Processed in 0.019095 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表