跳到主要內容

Oracle performance test

Environment
   
   Fedora 16, Oracle 10.2
   AMD FX-6100 3.3G, 16GB ram
   開啟5個process由data1 table中的資料經運算後,存放至data2 table。
   期望RAID 0的高速可以大幅升運算效能。

Test 1

RAID 0 (SSD1+SSD2), stripe size 128kB , ext4 with OS block size 4k, DB block size 8k


MAX MIN AVG
Read 1.0GB/s 564.9MB/s 803.7MB/s
Write 899.5MB/s 353.1MB/s 533.5MB/s

/u01(RAID 0):temp table,data2 tables, redo log files
/home(7200rpm HD):data1 tables
/opt(7200rpm HD):system table, control files, undo tablespace

Result:data process time 2.68sec

Test 2

變更data1 table的位置,由較慢速的HD改放至RAID 0中。

RAID 0 (SSD1+SSD2), stripe size 128kB , ext4 with OS block size 4k, DB block size 8k

/u01(RAID 0):temp table,data1 tables, data2 tables, redo log files
/opt(7200rpm HD):system table, control files, undo tablespace

Result:data process time 2.79sec
看來資料集中在一個I/O,即便RAID 0快上很多,在這個案例中是比較不利的。

Test 3

設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;

RAID 0 (SSD1+SSD2), stripe size 128kB , ext4 with OS block size 4k, DB block size 8k

/u01(RAID 0):temp table,data1 tables, data2 tables, redo log files
/opt(7200rpm HD):system table, control files, undo tablespace

Result:data process time 2.67sec

Test 4

把RAID 0的stripe size由128k改至512k。

設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;


RAID 0 (SSD1+SSD2), stripe size 512kB , ext4 with OS block size 4k, DB block size 8k
MAX MIN AVG
Read 989.6MB/s 461.5MB/s 859.3MB/s

/u01(RAID 0):temp table,data1 tables, data2 tables, redo log files
/opt(7200rpm HD):system table, control files, undo tablespace

Result:data process time 2.87sec

Test 5


把RAID 0的stripe size由512k改至256k。

設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;


RAID 0 (SSD1+SSD2), stripe size 256kB , ext4 with OS block size 4k, DB block size 8k
MAXMINAVG
Read1.0GB/s693.3MB/s898.9MB/s
Write933.4MB/s336.5MB/s579.3MB/s

/u01(RAID 0):temp table,data1 tables, data2 tables, redo log files
/opt(7200rpm HD):system table, control files, undo tablespace

Result:data process time 2.91sec

Test 6


把RAID 0的stripe size由256k改至32k。

設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;


RAID 0 (SSD1+SSD2), stripe size 32kB , ext4 with OS block size 4k, DB block size 8k
MAXMINAVG
Read 1.0GB/s 459.4MB/s 851.2MB/s
Write 857.7MB/s 354.5MB/s 534.9MB/s

/u01(RAID 0):temp table,data1 tables, data2 tables, redo log files
/opt(7200rpm HD):system table, control files, undo tablespace

Result:data process time 3.0sec



Test 7

綜合以上結論:
在RAID 0中,不管Stripe Size如何設定,都無法提升運算速度,甚至衰退。原因很可能是RAID 0的I/O速度已遠超過整體系統所需。所以在此測試中將檔案分散至不同的I/O,比放在單一卻高速的I/O中有利。且考量RAID 0的資料安全性薄弱,以此基礎作出如下配置:


設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;


SSD1, ext4 no journal with OS block size 4k, DB block size 8k
SSD2, ext4 no journal with OS block size 4k, DB block size 8k

/u01(SSD1):data1 tables, temp table, redo log files, undo tablespace
/u02(SSD2):data2 tables
/opt(7200rpm HD):system table, control files

Result:data process time 2.77sec
得出的結果並不差。


Test 8

最後,以此配置為基礎,對資料庫的index作微調,並且減少程式中不必要的運算,得到的改進效果卻最大。


設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;


SSD1, ext4 no journal with OS block size 4k, DB block size 8k
SSD2, ext4 no journal with OS block size 4k, DB block size 8k

/u01(SSD1):data1 tables, temp table, redo log files, undo tablespace
/u02(SSD2):data2 tables
/opt(7200rpm HD):system table, control files

Result:data process time 2.31sec
和Test 7相比,效能增加近16.6%。



Test 9

最後的最後,把CPU超頻到4.0G。其它維持不變。

設定FILESYSTEMIO_OPTIONS=SETALL
ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;

SSD1, ext4 no journal with OS block size 4k, DB block size 8k
SSD2, ext4 no journal with OS block size 4k, DB block size 8k

/u01(SSD1):data1 tables, temp table, redo log files, undo tablespace
/u02(SSD2):data2 tables
/opt(7200rpm HD):system table, control files

Result:data process time 1.97sec
和Test 8相比,效能增加近14.7%。

留言

這個網誌中的熱門文章

今天當了一天的豬頭

好久沒有寫, 就要來一篇自幹文.. 早上空出黃金在1776.. 盤中看到已出現10美元以上的獲利. 當下, 心裡明白以短波段的操作要看到10美元的獲利是不太容易的. 但交易系統並沒有給出現平倉訊號, 心中一直掙扎著要不要出場這件事... 結果, 想當然, 會有這文一定是要自宮一下.. 很豬頭的是, 交易的目的是要獲利, 而不只是維持系統的正確性.. 但今天一整天都是在反其道而行. 沒想清楚只是把責任推給系統而已. 這樣是對的嗎?? 我要好好面對這問題.

壓力大到超過我想像

上周是個令人感到高興的一周, 績效還不錯, 以6勝2敗作收. 但這周從一開始就即為不順, 不停地在下跌中買進作多, 也接二連三地的失敗, 到月前為止已經是3勝6敗了. 而且還有二筆是10點以上的損失, 已把上周一半的獲利吐出去了... 壓力實在很大, 雖然我相信最終總是會好轉, 但這過程實在不輕鬆. 我想是該出去跑跑步了.

交易系統的重大突破, "賠多少錢"?

近半年來一直在摸索一套在盤勢轉折時的交易系統. 在昨晚之前, 這交易系統以過去三個月的英磅日K, 共出現了16次的進場訊號. 其中, 有4次失敗, 12次成功. 換言之, 有75%的勝率. 已可說是驚人的準確了, 但我認為仍然不夠, 因為每次的停損仍會吃掉其它次成功的獲利, 這樣下來, 其實帳戶裡的數字實際上並不會增加多少, 而且要是有個萬一, 進出場點不如想像的話(如,快市, 外滙市場是經常發生的), 吃掉一個月或整季的努力不是不可能的. 所以, 我一直思索著如何才能再提高此交易系統的勝率, 但百思仍不得其解. 一直無法取得我所想要的突破. 直到前晚, 睡不著的反覆思考, 才驚覺我的交易中有一個無法動搖的基礎, 卻是我無法突破的唯一障礙, 那就是我都以"賺多少錢"為前提, 我發現我大錯特錯. 雖然, 我對盤勢有著連自己都感到驚訝的領悟力, 但我的交易一直無法取得重大突破的原因很顯然的是在此一點上. 這樣說並不是指我是個隨性進出的交易者, 相反的, 我明確貫徹交易系統. 那就是在下單前我必定清楚的定義, 進場點, 出場點及停損點. 而其中, 最重要的點可能和一般人想的不太一樣, 我的想法是停損點最為重要. 其中的道理要交易者自行思考或體驗出來, 才能真確的明白我想表達的意涵. 而"賺多少錢"的前提卻明顯的影響到停損點的設置. 其實此交易系統中原本即點出了最佳停損. 但因為上述前提而使用我愛用的停損參考, 忽略了原本的最佳停損點. 經過昨晚的徹底悟透後, 全部的難題瞬間豁然開朗. 使得此交易系統馬上由4次失敗, 12次成功變成2次失敗, 14次成功, 87.5的勝率. 這是一個多麼大的差別和勝利. 而關鍵就在於觀念的徹底轉變. "賠多少錢"才是正確的交易系統基礎. 怎麼說呢? 明天再說.