用64位软件做系统测试和自动交易,大家对硬件有何建议?

Discussion in 'General Topics on Software and Data' started by cat, Jul 20, 2010.

  1. VPS其实就是一个完全独立的系统,不存在虚拟路由。你的VPS如果如果放在上海多半要比从广州连上海少一些路由,理论上要快一些。

    可以这样,找到上海的某个vps提供商之后,让他们的技术人员帮你做个测试,让他们从一个vps那里去ping交易服务器,同时多给他们几个无关的ip地址,不必说明用途,让他们给你所有ping的结果。:D
     
  2. 这个IBGATEWAY只不过是一个小一点的软件的名字而已,不是指IB真的开放一个gateway给你login,你的程序仍然是先连接到本机的IBgateway软件,然后由它来做中介帮你传输数据流。IB的所谓FIX,也是这样的思路。
     
  3. 一直有磁盘读写听起来有点奇怪,是不是因为你机器上的物理内存不够用,系统在用硬盘区上的虚拟内存啊?

    一般来说读入10年数据,这个数据量耗费的内存并不算多,比如我自己写的测试系统,一次性读入美国8000个股票15年的数据,大概要10-15分钟,然后挨个backtest一次,需要6-8分钟,如果中间不在gui上逐行输出结果的话,这个速度还可以快30%。
     
  4. 你通过互联网ping对方的服务器,每次路径是不固定的,延时基本上无法保证。要不你每次用tracert命令跟踪一下路径,就可以看到通过每个路由所耗费的时间的详细列表,所以你在上海放一个VPS,在速度上不会有什么区别,想把延时降低到10ms以下,估计你得拉条专线到下单服务器去。
     
  5. 新版tws里带的IBGATEWAY好像增加了一个新的选择(非FIX),就是方便第3方软件不需要再去启动TWS而只启动IBGATEWAY就可以了,这样不启动TWS可以省不少内存空间。
     
  6. 看来你们没明白我在说什么。你的程序不管用是连到tws,ibgateway,还是IBfix,其实都不是直接连接到IB的路由(gateway),连接到IB的数据服务器或者物理路由的活儿,IB用他们自己的软件给你隔开了(可能出于安全考虑,免受恶意攻击)。所以,你和IB打交道,是无法做个软件直接去login类似78.34.55.01这样的物理路由器的。

    而美国有些专业一点的券商和IB不同,他们直接开放物理路由,给个IP地址让你自己做软件去login,而不需要连到其他任何软件,这种做法的稳定性当然要比IB搞个平台把用户和他们的服务器隔开要好很多,处理数据的速度也快得多。
     
  7. 既然你看到你 回测 时 CPU 100%,就说明 IO 根本不是你系统瓶颈,如果你有经验的话。如果 I/O 有瓶颈,则 CPU 会等待数据过来,然后计算,然后再等待。这样的系统,是不会有 100% 利用率的。有也是 peak,不会持续很长。

    BTW,虚拟系统 并不适合 计算密集型 应用。再怎么说,也多了层中间层。

    分页与虚存机制 和 磁盘缓存 有啥关系?完全是两码事。

    这种 General Purpose 的测试平台,是不可能多考虑其他问题的。他只会向系统(OS)请求数据,执行策略。他不关心一次性还是分段。这是 OS 的事情。OS 收到请求,就去读取,缓存,交给程序。下个请求过来也一样。如果缓存空间不够,则根据 LRU/MRU/FIFO 等算法决定丢弃部分老的数据。因此,你内存够的话,只有第一次读的时候才会真正进行硬盘 I/O。对于写,系统也不是一有请求就直接写到硬盘碟片上。也一样有缓存,然后定时 flush 。当然为了减少风险,这个写间隔很短。另外,写的时候,OS 负责向控制界面发请求,一旦收到回复说写完了,OS 就认为写完了。他不关心数据是呆在控制卡的缓存里还是磁盘内部的缓存里还是已经切实地写到了磁碟上。当 OS 收到请求需要读取刚写的数据,他也直接从缓存调,不会 IO,除非内存不够,那部分缓存已被挪用。

    偶不知道你系统如何,正常来讲这种类似 OLAP 的应用,应该读远远多于写操作。

    啰嗦这么多,其实就是一句话,你内存够大的话,系统有非常高的机率能缓存你所有数据。


    欢迎
     
  8. 路径短了,延时一般都会降低。虽说internet是对数据分组发包,但还是会尽量走cost最低的路径(cisco的路由根据这个做的动态路由表)。

    不过当然,公众网的通信质量很难得到保证,拉专线又是我等无法承受的。这不是就在研究有限的预算下的最优选择了吗。

    对了,去了168论坛,潜水看了一点荸荠兄的贴,得益不少,致个意先。
     
  9. cat

    cat

    很高兴看到我的一个菜鸟贴引出了这么多高人发言。

    希望大家在这里继续交流在现有软硬件条件现有网络环境下如何更有效率的为交易服务。




    将来海洋也可开个硬件专版。我可以贡献一点低级贴,如:四屏幕系统的不同用法。
     
  10. 其实你用ramdisk跑虚拟机也是不错的方法,只要内存够大,效果挺好的。因为不存在disk io,只要内存容量够,性能下限就是内存速度。只不过这种用法比较浪费内存而已。

    但是你说错了几个地方,第一是IO是DMA的,不会耗费CPU资源。
    第二是,unix和windows都可以不用swap/page file这种方式。但是设定了会更好。主要作用并不是用虚拟内存扩大内存空间,更主要的作用是更加合理的利用内存。
    linux下的调度算法,哪怕你内存32G只用了200M,也一样有概率把一部分内存swap out出去。
     

  11. 虚拟机挺适合计算密集型应用的,损耗很低,在1%左右。
    虚拟机不适合的是IO密集型应用。
     
  12. 其实网络延迟跟地理位置关系不是十分的大,跟路由跳数关系很大。
    所以网络延迟,跟城市关系很大。

    我觉得网速最好的地方都是些小城市,最好是地级市这种。比如上海周边,就去昆山好了。
    我的想法是,以后如果弄24*7的服务,我才不去机房托管呢。
    万一那个机房的别的服务器有反动内容,整个机房都要被封的。
    天朝的机房是连坐制度,很烦的,到时候欲哭无泪吧...

    我宁可去小城市租/买间小房子,拉根独享带宽的ADSL,或者小区宽带什么的。
    小城市的网络费用超级便宜,速度超级快~~
     
  13. LS,為什么小城市網速快啊?是用的人少流量少?大城市不是線路投入比較舍得嗎?
    還有這網速快是僅只國內嗎?還是包括出國連外盤交易商?
     
  14. 大城市的使用人数远远多于小城市的使用人数。
    这是我自己到处出差的时候总体的使用感觉~
     
  15. 共同学习,共同进步。这几天我看lvsoft和esspreso提出了一些有意思的说法,就多来海洋看了看。

    上面lvsoft说的对,延时主要取决于在路由器上耽误多少时间,信号在光缆或者铜揽里的传输速度是按光速在走的,不考虑噪音引起的丢帧等问题的话,物理距离消耗掉的时间,相对来说很少。所以你要尽量选择通过最少路由器的路径(基本上你个人解决不了这个问题)。你可以用tracert命令查查通过的路由器都是那些,各自消耗多少时间。
     
  16. 很高兴看到大家各抒己见,只有这样的交流才能共同进步,欢迎!

    RAMDisk到底能不能提高回测速度,我看还是测试一下再说。性能方面的东西,各说各有理,现在的系统都很复杂,不是所有的细节大家都很清楚,I/O, CPU, memory, network这些东西,再包括应用本身都可能是瓶颈,并且是互相影响的。

    最有说服力的就是hard cold number,等我测试之后再说。我也需要知道到底快多少。
     
  17. 不用测试啦~~你的方案,如果单单考虑ab的速度,一定是所有方法中最快的。
    但最快和最优是个矛盾,操作系统需要考虑整体的平衡,不会把所有资源让一个进程独占,所以OS通常采取的一个最优的策略。
    但你这里只需要考虑一个软件的最快。当然站在做交易的人的角度,一个软件的最快也就是最优了~~
     
  18. 虚拟化 两者都不适合。只适合两头都不冒尖的,或只是偶尔冒尖的应用整合。

    虚拟说到底是降低成本的一种手段。啥事情碰上降低成本都没好事。


    IO 也不是只有 DMA 一种,DMA 也需要 CPU 参与,比 PIO 少多了就是了。另外一方面,DMA 你数据过不来 CPU 也是空转,是浪费。


    小城市的好处,就是接入带宽大,费用相对低。但小城市的 inet,都要汇聚到上级地市,然后在汇聚到省会骨干和省内备灾节点,然后再到区域交换中心,每个节点都会根据目的地做网内交换或网间路由。另一方面,小城市上行带宽没有你想象的大,你说的昆山之类可能也就几条 G 线路上联到苏州。所以,小城市高峰时段网间访问,一般跨省,是快不到哪里去的,晚上黄金时间,省内都可能慢一些。

    另外,网络延时和经过路由器数量无关。并不一定跳数多,就延时大。
     
  19. 虚拟化 两者都不适合。只适合两头都不冒尖的,或只是偶尔冒尖的应用整合。

    虚拟说到底是降低成本的一种手段。啥事情碰上降低成本都没好事。


    IO 也不是只有 DMA 一种,DMA 也需要 CPU 参与,比 PIO 少多了就是了。另外一方面,DMA 你数据过不来 CPU 也是空转,是浪费。


    小城市的好处,就是接入带宽大,费用相对低。但小城市的 inet,都要汇聚到上级地市,然后在汇聚到省会骨干和省内备灾节点,然后再到区域交换中心,每个节点都会根据目的地做网内交换或网间路由。另一方面,小城市上行带宽没有你想象的大,你说的昆山之类可能也就几条十几条 G 线路上联到苏州。所以,小城市高峰时段网间访问,一般跨省,是快不到哪里去的,晚上黄金时间,省内都可能慢一些。

    另外,网络延时和经过路由器数量无关。并不一定跳数多,就延时大。
     
  20. 要测的,要测的,实践出真知嘛
    尤其是涉及到性能方面的东西,没有绝对的对错,有时候动嘴,动脑筋都没用,
    一个简单的测试最能说明问题。 :)