MultiCharts多數列CPU效能瓶頸
本帖最後由 萬年船 於 16-8-4 17:37 編輯目前MultiCharts版本存在一個已驗證過、確實存在的CPU效能瓶頸
對於同一個圖表視窗,如果以下條件同時成立的話
(請注意,是同時,任一條件不符合,就可跳脫此效能瓶頸的暴風圈)
1.【使用多數列】
2.【勾選即時歷史吻合】
3.【即時Ticks累計已高達數十萬筆】
4.【出現連續多秒的快市】
CPU核心將會容易出現滿載現象
CPU滿載會出現何種延遲,相信不難想像(當然不會是幾百個毫秒可以計算的)
當然台指期一定是安全的,因為縱使是完整ticks也跳脫第(3)個條件
但對ES, GE就未必是安全的了
所以在MultiCharts原廠修復此問題前,如果有交易到ES, GE這種成交量巨大的商品
可能就要小心以下問題了:
1.CPU核心時脈高低
(選VPS時要特別考量此點,別降低了網路延遲,但增加了運算延遲
低時脈但多核心是無法幫助一個存在效能瓶頸的MC圖表視窗)
2.商品單日總Ticks量
3.一台電腦同時執行多少這類大量tick商品的策略
以下為驗證環境與條件
MultiCharts版本:9.0x86
作業系統:Vista
CPU:E8400雙核心兩條執行緒、核心時脈3G
記憶體:4G
模擬快市報價:MonitorQuote_v2.02內建的sQuote
首先圖表視窗使用多數列,如下圖所示
訊號需要使用到多數列,不用複雜的運算
只需兩行程式即可測出此效能瓶頸,如下圖所示
策略要勾選【即時與歷史數列資料吻合。】,如下圖所示
接下來開始模擬快市報價
每秒產生1000筆Ticks(ES商品每秒1000筆的快市還蠻容易看到的)
如下圖所示
等到累計的Tick數達到10幾萬時,就快看到CPU核心出現滿載的時候了
如下圖所示
上圖是用PerfMon軟體偵測的,可以看到MultiCharts這個程式CPU已吃到100%
而PerfMon的【Process】的【%Processor Time】計數器100%指的是一個CPU核心的100%
對應到【工作管理員】就是50%,如果是雙核心的話
而一個圖表視窗使用一條執行緒,所以其他核心是幫不上忙的
所以上圖的使用率永遠無法跳到200%(雙核心)
當然是否一定是10幾萬之後開始出現,會取決於
1.CPU核心時脈高低
2.快市每秒的tick數多寡
不同條件下,有所不同
這狀況不單單出現在MC
也同樣出現在 E-LEADER 之類的看盤策略軟體
這些軟體對於低時脈多核心的優化不夠強
挑選電腦時,高時脈比多核心對於看盤重要多了 難怪,MC如果一個禮拜沒關,當的機率90%+
所以是要採用高時脈,而不是多核心嗎? 目前已知的,只有那四個條件全部滿足,才會有效能瓶頸
其他條件是否也會有效能瓶頸,可能就要再試試了
原則上
如果策略只有一個,肯定是高時脈優先
如果有效能瓶頸,肯定是高時脈優先
如果有多個策略,又沒有效能瓶頸,多核心優先
頁:
[1]