使用Intel VTune Amplifier工具分析CTP热点

使用Intel VTune Amplifier工具分析了CTPII代交易主机front_idtp组件的热点,以不带流的方式启动,采集数据时长30min(期间无用户登录和交易请求),得到的热点如下图所示:

使用Intel VTune Amplifier工具分析CTP热点

排名第1的是epoll_wait,这是易于理解的,因为front_idtp闲着无事,只好一直在监听端口,CTPII采用的I/O复用方式为epoll,该机制主要涉及三个函数:epoll_create, epoll_ctrl, epoll_wait。其中,epoll_wait用于等待事件触发。

排名第3的是OS_BARESYSCALL_DoCallAsmIntel64Linux,这是个什么鬼?先pass吧。

 

现在,以带流(../flow/CompLog.1的大小为183422812Byte,约175MB)的方式启动front_idtp并采集数据测试,问题是采集数据的时间为多少比较合适呢?以我的经验加判断,估计会重演十分钟左右。

使用Intel VTune Amplifier工具分析CTP热点

使用Intel VTune Amplifier工具分析CTP热点

Average Effective CPU Utilization=CPU-Time/Elapsed-Time=1.138,在这台机器上Target Utilization=4(即Logical CPU Count)。

对比不带流场景下的测试结果,可见差别:

排名第一的是__mktime_internal,该函数是被get_full_second调用的,而后者的主要源头是query_db_command(占比50%)、query_tinit_data(占比25%)、sync_marketdata_offer(占比22%)。