我們有理由相信采用新的內核版本(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%。