前端时间在做isgw的性能测试的时候,发现有一个步骤的延时很大,按照定时器的理论频率值应该是1ms左右,但是通过日志和实际测试发现却有10ms左右,于是需要定位具体问题在哪里。
测试机器配置如下:
[root@... /usr/local/isgw/client]# uname -a
Linux 2.6.32.43 #1 SMP Fri Oct 28 10:40:07 CST 2011 x86_64 x86_64 x86_64 GNU/Linux
先看看本机延时,从结果看延时对性能的影响基本可以忽略不计
从下图看出Ack处理跟上一步的间隔很大 有10ms初步分析在定时器的及时性上有问题
尝试修改框架的定时器间隔无效(框架配置文件也可配置)
配置文件中的
通过查找相关资料和ACE的源码(反应器中管理的事件之一:定时器管理类)确认定时器是有个这个时间调整参数timer_skew_,如下图:
ACE_Timer_Queue_T 内部有下面两个变量:
ACE配置的ACE_TIMER_SKEW默认的为 10ms
修改此参数为1ms 重新编译 ACE 问题得到解决。