开拓者期货期权程序化系统交易论坛

标题: 小米请看,TBdatabase.exe占用率高的问题测试完了 [打印本页]

作者: 215600292    时间: 2020-4-4 11:21:01     标题: 小米请看,TBdatabase.exe占用率高的问题测试完了

本帖最后由 215600292 于 2020-4-4 11:22 编辑

测试完了,先上结论:当一个TB打开图表过多时,TBdatabase.exe会莫名占用cpu过高,估计存在类似死锁的问题,请提交后台开发人员好好检查下代码。

下面说一下测试流程:
1.机器配置全部一样:e5 2680v2 * 2,20核40线程,64g内存,nvme协议固态256G,100m宽带,共54个图表,每个图表5000跟K(一分钟周期),每个图表加载5个公式应用,开启自动交易,以下所说cpu占用率都指TBdatabase.exe的占用率,其他进程cpu占用率太低,忽略不计。用FileAppend输出txt观察公式执行情况。

2.第一个实验:4台主机,其中前三台每台开18个图表,最后一台开54个图表。午后,最后一台电脑cpu占用率逐步升高,14:15后稳定在50%-60%,峰值80%。同一时刻内,前三台电脑的cpu占用率都不超过3%。收盘后,查看输出文档,前三台电脑输出正常,2tick/s,而第四台电脑输出不正常,经常5s输出一个tick,TradeBlazer.exe这个进程占用率没有超过5%过,说明公式执行并不消耗大量cpu,但现在5s才1个tick输出,结合TBdatabase.exe高占用率,说明问题出在TBdatabase.exe推送数据给TradeBlazer.exe不及时。
第一个实验结论:可能是机器算力不够,带不动54个图表,也可能是TBdatabase.exe底层代码有问题。

3.第二个实验:一台电脑,开三个虚拟机,每个虚拟机开一个TB,18个图表。全天交易下来,每个虚拟机的TBdatabase.exe占用率平均在3%左右;宿主机的cpu占用率峰值在50%左右,但会迅速降下来,午后行情激烈时稳定在5%-15%左右,行情不激烈时稳定在5%左右,没有出现占用过高情况。收盘后,查看文档输出情况,输出正常,2tick/s。
第二个实验结论:TBdatabase.exe底层代码有问题。

4.第三个实验:cpu换成撕裂者3990x,64核128线程。开1个tb,54个图表。cpu占用率25%-30%,峰值50%,查看文档输出,也是经常5s才一个tick。3990x共128个线程,打开54个图表的话TBdatabase.exe使用线程数大概在50-60间,所以占用率25%-30%基本上可以认为TBdatabase.exe把所占用的线程的算力都吃光了。
第三个实验结论:TBdatabase.exe底层代码有问题。存在类似死锁的问题,造成线程死等,推送数据给TradeBlazer.exe不及时。

这个是底层的bug了,请小米转交开发人员测试。

这个必须要解决才行,我们交25%手续费,不是想体验这种类似死锁的快感的
作者: qh2019    时间: 2020-4-8 21:40:05

旗舰版还是TBQuant ?
作者: 215600292    时间: 2020-4-9 16:00:21

qh2019 发表于 2020-4-8 21:40
旗舰版还是TBQuant ?

旗舰版
作者: wsjtry    时间: 2020-4-9 21:45:47

本帖最后由 wsjtry 于 2020-4-9 21:48 编辑

我用旗舰版这么久,也经常遇到 ”TB数据中心“ 卡死收不到数据,需要重启软件或结束进程才能解决。
一直都怀疑TBdatabase.exe,TBDataCenter.exe有问题,今天楼主认真测试了,辛苦了。

另外,在TB服务器关闭时启动旗舰版,软件一直卡死在界面,需要结束进程才能解决。
服务器关闭时,应该在登录界面就进不去或者自动返回。
作者: wsjtry    时间: 2020-4-9 21:52:51

e5 2680v2 , 3990x 这2个CPU超牛X
作者: 215600292    时间: 2020-4-15 00:01:21

wsjtry 发表于 2020-4-9 21:45
我用旗舰版这么久,也经常遇到 ”TB数据中心“ 卡死收不到数据,需要重启软件或结束进程才能解决。
一直都 ...

对,以前我也没有在意,但多次程序没有按规定动作平仓,造成我损失差不多6位数,我决定好好观察,终于被我发现cpu占用过高,顺藤摸瓜,发现是database的问题,只要它一占用过高,就会漏掉很多个TICK,你的程序基本上就没有在跑。起初我以为是机器算力的问题,有一次,甚至cpu占用100%,这是不可思议的。后来想想,不对,按照现代cpu的算力,除了渲染和超大量计算,应该没有程序能够吃满cpu的,500ms一次执行不应该有问题,后来一路测下来,才发现是底层代码可能存在死锁。
作者: 215600292    时间: 2020-4-15 00:03:00

wsjtry 发表于 2020-4-9 21:52
e5 2680v2 , 3990x 这2个CPU超牛X

我现在没得办法,只能把54个图表分开运行在5个虚拟机上,这样就不卡了
作者: cyqh090    时间: 2020-4-15 11:48:57

215600292 发表于 2020-4-15 00:01
对,以前我也没有在意,但多次程序没有按规定动作平仓,造成我损失差不多6位数,我决定好好观察,终于被 ...

我也是差不多情况,明明图表交易信号出现了但是没有发单,有次是延迟到收盘才发出交易指令,导致交易指令失效。出现不止一次两次了,损失也不小。论坛发帖也没什么用,顶多让重启软件,重置数据。策略用了这么多年也基本验证了不是策略的问题,就是软件本身出现的风险。所以用TB是绝对不能无人值守的,天天得看看,现在TB的软件风险呈逐年递升的趋势。
作者: 215600292    时间: 2020-4-16 09:51:27

cyqh090 发表于 2020-4-15 11:48
我也是差不多情况,明明图表交易信号出现了但是没有发单,有次是延迟到收盘才发出交易指令,导致交易指令 ...

“有次是延迟到收盘才发出交易指令,导致交易指令失效”,这个症状就是我测试的问题了,我也是这个问题,一摸一样,database类死锁,造成推送数据给TradeBlazer.exe不及时,TradeBlazer.exe因此无法按时执行策略,收盘后,因为没有新数据到来,database的死锁解开了,把以前的数据瞬间推送给TradeBlazer.exe,TradeBlazer.exe再执行,不过此时已经收盘了。

建议你上虚拟机,每个tb打开图表控制在10个左右,我现在没有出问题
作者: 215600292    时间: 2020-4-16 09:53:28

cyqh090 发表于 2020-4-15 11:48
我也是差不多情况,明明图表交易信号出现了但是没有发单,有次是延迟到收盘才发出交易指令,导致交易指令 ...

用过其他程序化软件吗?看来朋友是同道中人,我有点想换软件了,本来打算自己写,但是复盘数据源不方便找,哎……
作者: cyqh090    时间: 2020-4-18 12:15:50

215600292 发表于 2020-4-16 09:53
用过其他程序化软件吗?看来朋友是同道中人,我有点想换软件了,本来打算自己写,但是复盘数据源不方便找 ...

没有用过,其他软件收费更低,门槛也不高,只是不确定稳定性如何,如果稳定性比TB更差那也没什么意思。做程序化交易软件还是需要一个团队的力量的。不过还有一种方法就是自己做分析策略,出信号再手工下单。
作者: 215600292    时间: 2020-5-20 07:40:47

这么久了,修改好了吗
作者: 小米    时间: 2020-5-20 16:51:51

215600292 发表于 2020-5-20 07:40
这么久了,修改好了吗

试一下最近的beta版,看看是否有所提升?




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2