產品: AIX , Oracle
平台: pSeries, AIX
版本: ALL
內存訪問的沖突出現在當進程申請的內存超過系統的物理內存總量時,為了處理這種情況,系統將程序與數據在內存和硬盤間進行交換。
控制內存交換操作(Paging)
大量的內存交換操作會極大地影響系統的性能,尤其是在當數據庫文件創建在文件系統上時(JFS and JFS2)。在這種情況下經常訪問的數據,即在SGA中存在,也同樣在文件的緩存中存在。這種相同的數據在內存中緩存兩次的情況,會降低內存的使用效率,從而使內存頻繁進行交換操作,造成系統的I/O瓶頸,降低整個系統的性能。
調整AIX上的文件緩存
在AIX上,可以通過vmtune命令中的MINPERM和MAXPERM參數,調整系統文件緩存來控制內存交換操作,MINPERM和MAXPERM參數的調整應遵照以下的原則:
當內存中的文件緩存頁在MINPERM以下時,內存頁交換算法同時交換文件緩存頁和程序頁(computational pages)。
當內存中的文件緩存頁在MAXPERM以上時,內存頁交換算法只交換文件緩存頁。
當內存中的文件緩存頁在MINPERM和MAXPERM之間時,內存頁交換算法通常只交換文件緩存頁,但如果文件緩存頁的交換率大於程序頁時,程序頁也同樣被交換。
MINPERM和MAXPERM參數的缺省值:
MINPERM = ((number of memory page) - 1024)*0.2
MAXPERM = ((number of memory page) - 1024)*0.8
可以用以下命令將MINPERM設為5%的內存頁,而MAXPERM設為20%的內存頁。
# vmtune -p 5 -P 20
缺省值分別為20%和80%。
在Oracle數據庫應用的環境下,可以將MINPERM和MAXPERM分別設為5%和20%甚至更小,從而使內存更多地被用於Oracle的SGA而不是系統的文件緩存。
配置足夠的交換區
如果交換區空間不足會造成系統響應速度變慢甚至掛起,交換區的大小取決於系統內存的大小以及應用程序對內存的需求。在AIX上可以動態增加交換區,也可以用lsps命令察看交換區的使用狀況,以及用vmstat監視系統內存頁交換的操作。
通常交換區的大小需要大於系統的實際內存,這主要取決於應用程序對內存的需求。用戶需要監視交換區的使用狀況,根據需要增加交換區的空間。對於運行Oracle Application或Oracle development tools可能需要較大的交換空間。