正在看的ORACLE教程是:Oracle效能究極最佳化 下。 我們有理由相信採用新的核心版本(2.2.16-3 smp)也應該有效能的提升:
OS2: Newer minor version kernel TPC Results
Load Time (Seconds) 9.40
Transactions / Second 11.522
目前已經有 2.4 版本的核心,和 2.2 相比,效能上有了很大的提升,我們採用 2.4.1 smp:
OS3: Newer major version kernel TPC Results
Load Time (Seconds) 8.32
Transactions / Second 12.815
Linux 預設讀操作時更新最後一次讀的時間,但是這個對我們來說並不重要,因此我們關閉這個選項,通過設定 noatime 的檔案屬性來實現。(對於 Windows NT 和 2000 有相似的設定)
如果只是相對 Oracle 的資料檔案設定,我們的命令是
chattr +A file_name
對整個目錄的實施辦法:chattr -R +A directory_name
最好的辦法是修改 /etc/fstab ,針對每個檔案系統入口,添加 noatime 關鍵字。
OS4: noatime file attribute
TPC Results
Load Time (Seconds) 5.58
Transactions / Second 13.884
另外一個調整 Linux I/O 的辦法是虛擬記憶體子系統的調整,修改 /ect/sysctl.cong 檔案,增加下面一行:
vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
根據 /usr/src/Linux/Documentation/sysctl/vm.txt 的說法:
第一個參數100 %:控制緩衝區中最大的髒緩衝資料,增加這個值意味著 Linux 可以延遲磁碟寫。
第二個參數 1200 ndirty:給出 bdflush 一次能夠寫入磁碟的最大髒緩衝。
第三個參數 128 nrefill:當調用 refill_freelist() 時,bdflush 添加到自由緩衝區中的最大緩衝數目。
refill_freelist() 512:當這個數目超過 nref_dirt 髒緩衝時,將喚醒 bdflush。
第五個 15 和最後兩個參數 1884 和 2,系統未使用,我們不做修改。
age_buffer 50*HZ, age_super 參數 5*HZ:控制 Linux 把髒緩衝寫到磁碟的最多等待時間。數值用時鐘滴答數(jiffies)表示,每秒為 100 個 jiffies 。
OS5: bdflush settings TPC Results
Load Time (Seconds) 4.43
Transactions / Second 14.988
經過以上一系列調整後,我們得到的最終載入時間減少了 1015.35%,TPS 增加了 45.61%。