跳到主要內容

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美元的獲利是不太容易的. 但交易系統並沒有給出現平倉訊號, 心中一直掙扎著要不要出場這件事... 結果, 想當然, 會有這文一定是要自宮一下.. 很豬頭的是, 交易的目的是要獲利, 而不只是維持系統的正確性.. 但今天一整天都是在反其道而行. 沒想清楚只是把責任推給系統而已. 這樣是對的嗎?? 我要好好面對這問題.

三、有時要相信眼睛,有時要相信耳朵。

一般進場投資的方法依據大約是二種,技術線圖派或者基本面派。不管你是哪一派,我要表達的是不要太相信你眼睛所看見的。有時要聽聽你自己心理的聲音。 不管你是否曾和我有一樣的經驗,下列這些的確是我曾發生的例子。KD是很多人都會用的一種技術指標,我也是其一。曾經我只靠著KD線進出台指期貨,而那些日子我的每月報酬率達到60%,每個月都是如此固定,以致我以為是理所當然,也以為我可以靠著這半招過日子。最終我沒能保持著戒慎恐懼去檢視我的交易系統是否會有問題?結果當然是問題來找上我。在某種我沒考慮過的盤勢中我的半招完全失靈,在很短的期間內損失異常慘重。就像是突然間,我所熟悉的KD完全陌生得好像我從不認識它一樣。之後,我反省了這個事件,老實說,問題發生的過程我的確有要完全檢視交易系統的想法出現在我腦中,只是自己不願意去面對,因為我所熟悉的那半套曾經帶給我成功,因此我不願意承認它有錯。那時的我只執著在我眼中所看到的歷史成績,而不願去傾聽心理要求自己修正的心聲,所以我必須付出鉅額的代價。 另一個例子,時間點比較近一點。是2008年農作物大漲前,我一直在觀察農作物的價格,尤其是小麥、玉米和黃豆。當然我也參考了由CBOT發佈的觀察報告。農產品的價格一直在很小的區間中遊走,而官方觀察報告一直報告著作物生長的情況,基本上都是收成即將大好,生長狀況也極為良好。照理說,價格應會下跌才是。理性的那一面,告訴自己要進場放空。但不知為何?我對這樣的想法感到強烈的不安。於是,我控制自己,什麼都不作只是觀察。最後的結果,想當然我是對了一半,沒有因為這波大漲而損失一分錢,也沒有因為這波大漲而賺到一分錢。不過,這樣就很好了。 "投資"這檔事很妙,其實常常只是基於某種"相信"而進場買進或賣出。不管你相信的是什麼?只要記住,相信自己是很重要而且健康的。

何謂交易系統?為何需要它?

不管是投資還是投機,所有的過程只有二個動作,一個是買,另一個就是賣囉。但這一買一賣或是一賣一買就足以出版數以百萬計的書或文章,或者更多....當然包括這篇也是。而這一切只是為了幫助投資人或投機客了解該在何時買進何時賣出,但有人想過你自己想怎麼買進怎麼賣出嗎?不管你相信的是什麼:歷史線圖,技術指標,基本分析,外資分析師,解盤老師,同事,八卦,雜誌,內線...還是以上全部? 所謂的交易系統並不是教你去網路找一套在20%的交易筆數中準確率達80%的軟體。交易系統指的是適合你自己的習慣、交易頻率、最重要的是"你真的相信的"一組買進賣出的準則,而你準備確實的依交易系統所給你的訊號去買進賣出。這可不是我隨便說說,幾乎所有靠交易賺到大錢的知名投資人都有一套自己相信的準則並且確實遵守自己的準則,只要花點時間看看書,這並不難發掘。但請不要嚐試把每一套準則都放入你自己的交易系統,相信我,那會是一埸災難。 然而真的有必要用交易系統來買賣嗎?當然,如果你可以在長達數十年的投資生涯中都靠靈感來進出的話。那,真是恭禧你。