AIX系統(tǒng)下的小型計(jì)算機(jī)系統(tǒng)接口性能優(yōu)化
2024-07-21 02:32:49
供稿:網(wǎng)友
本文是講述有關(guān)Oracle數(shù)據(jù)庫磁盤輸入輸出性能和優(yōu)化的各個(gè)不同方面的一系列文章中的一篇。每篇技巧性的文章都摘自即將由Rampant科技出版社出版的圖書《Oracle磁盤輸入輸出性能調(diào)優(yōu)》,作者是Mike Ault。從該系列文章的主頁上能看到其他即將發(fā)布的部分。 AIX系統(tǒng)下的小型計(jì)算機(jī)系統(tǒng)接口(SCSI)性能調(diào)優(yōu) AIX是SCO UNIX的衍生物,如同HP-UX(而Solaris是SRV4 UNIX的衍生物)。盡管如此,AIX早已針對(duì)標(biāo)準(zhǔn)SCO發(fā)布的UNIX做了很多修改,這點(diǎn)又與HP-UX幾乎完全遵照最原始的SCO不同。AIX系統(tǒng)中的小型計(jì)算機(jī)系統(tǒng)接口(SCSI)有一些可以調(diào)整的參數(shù)。一般來說,SCSI可以讀IBM磁盤,并且針對(duì)它進(jìn)行自動(dòng)調(diào)整。類似的其他磁盤驅(qū)動(dòng)器(即,由非IBM生產(chǎn)商提供的),可能需要手工設(shè)置其正確參數(shù)。接下來讓我們看一下AIX系統(tǒng)下可獲得的設(shè)置。設(shè)置AIX SCSI適配器和磁盤驅(qū)動(dòng)器隊(duì)列界限 AIX操作系統(tǒng)和linux,Windows,HP-UX一樣,都能對(duì)SCSI適配器和某個(gè)給定的SCSI總線或磁盤驅(qū)動(dòng)器之間的輸入輸出請(qǐng)求的數(shù)量進(jìn)行限制。進(jìn)行這些限制的目的是充分利用硬件的能力來處理多個(gè)請(qǐng)求,同時(shí)確保磁盤驅(qū)動(dòng)器的最優(yōu)化搜索算法能夠有效運(yùn)行。 對(duì)于非IBM設(shè)備而言,有時(shí)需要修改AIX的默認(rèn)隊(duì)列界限值,從而獲取最高性能,而不是使用那些被選擇處理最壞可能情況的默認(rèn)值。讓我們看一下默認(rèn)值應(yīng)該改變的某些情況,以及這些情況下IBM推薦的新值。針對(duì)非IBM磁盤驅(qū)動(dòng)器的AIX SCSI設(shè)置 在任何特定時(shí)間,AIX系統(tǒng)答應(yīng)IBM磁盤的未完成的請(qǐng)求數(shù)量的設(shè)置值是3(對(duì)于SSA,其值是8)。對(duì)于這個(gè)值,沒有直接的接口可以更改它。對(duì)于非IBM磁盤驅(qū)動(dòng)器,默認(rèn)的硬件隊(duì)列深度值是個(gè)非常低效的設(shè)置。假如這些磁盤能夠接受多個(gè)命令(大部分現(xiàn)代磁盤都可以),你改變對(duì)于非IBM磁盤驅(qū)動(dòng)器的設(shè)置值是非常合適的,從而可以使得這些磁盤驅(qū)動(dòng)器的性能最大化。例如,使用lsattr命令可以顯示某個(gè)非IBM磁盤驅(qū)動(dòng)器的默認(rèn)特性:# lsattr -D -c disk -s scsi -t osdiskpvid none Physical volume identifier False
clr_q no Device CLEARS its Queue on error
q_err yes Use QERR bit
q_type simple Queuing TYPE
queue_depth 3 Queue DEPTH
reassign_to 120 REASSIGN time out value
rw_timeout 30 READ/WRITE time out value
start_timeout 60 START unit time out value 你應(yīng)該使用AIX提供的接口SMIT來按照要求改變這些磁盤參數(shù)。SMIT答應(yīng)從命令行以最快速的路徑到達(dá)SMIT接口中的特定點(diǎn)。得到SMIT磁盤接口扇區(qū)的快速命令是smitty chgdsk。最為另外一種方式,你也可以使用chdev命令行名來來改變這些參數(shù)。 讓我們看一個(gè)使用chdev的例子,假如你的系統(tǒng)包含一個(gè)非IBM SCSI磁盤驅(qū)動(dòng)器,名為hdisk7,下面這個(gè)命令能激活對(duì)這個(gè)設(shè)備的隊(duì)列功能并設(shè)置其隊(duì)列深度為3:# chdev -l hdisk7 -a q_type=simple -a queue_depth=3 這對(duì)單個(gè)磁盤而言非常不錯(cuò),但當(dāng)你對(duì)整個(gè)非IBM磁盤陣列進(jìn)行操作時(shí)又是怎么樣一回事呢?讓我們往下看。針對(duì)整個(gè)非IBM磁盤陣列設(shè)置SCSI參數(shù)值 任何磁盤陣列對(duì)AIX系統(tǒng)而言都是單個(gè)磁盤驅(qū)動(dòng)器,盡管這個(gè)磁盤驅(qū)動(dòng)器比較大。某個(gè)非IBM磁盤陣列,像單個(gè)非IBM磁盤驅(qū)動(dòng)器一樣,看起來是磁盤、子類SCSI磁盤或osdisk(是其他SCSI磁盤驅(qū)動(dòng)器的縮寫)磁盤。盡管如此,我們知道一個(gè)磁盤陣列實(shí)際上包含很多物理磁盤驅(qū)動(dòng)器。每個(gè)物理磁盤都能處理多個(gè)請(qǐng)求,因此,整個(gè)磁盤陣列的隊(duì)列深度應(yīng)該被設(shè)置成某個(gè)非常大的值,從而高效地使用所有這些物理磁盤。例如,假如hdisk8是一個(gè)含有8個(gè)磁盤的IBM磁盤陣列,而且每個(gè)磁盤都支持隊(duì)列深度為3,使用chdev來改變這個(gè)磁盤陣列到某個(gè)合適值的命令如下:
# chdev -l hdisk8 -a q_type=simple -a queue_depth=24 假如磁盤陣列通過一個(gè)SCSI-2快速/高帶寬SCSI適配器總線來連接,對(duì)這樣的總線它或許需要改變未完成請(qǐng)求的界限值。讓我們接著往下看。改變AIX磁盤適配器的未完成請(qǐng)求的界限值 AIX SCSI-2快速/高帶寬適配器支持兩條SCSI總線,一條供內(nèi)部設(shè)備使用,另外一條供外部設(shè)備使用。針對(duì)每條總線的未完成請(qǐng)求的界限值都有一個(gè)限制。這個(gè)限制的默認(rèn)值是40,最大可能值是128。當(dāng)某個(gè)IBM磁盤陣列連接到一個(gè)SCSI-2快速/高帶寬適配器總線時(shí),這個(gè)總線的未完成請(qǐng)求的界限值就會(huì)自動(dòng)增加來容納這個(gè)磁盤陣列的隊(duì)列深度值。盡管如此,對(duì)于一個(gè)非IBM磁盤陣列,這個(gè)改變必須手動(dòng)改變。例如,使用chdev命令設(shè)置scsi2適配器的未完成請(qǐng)求的界限值為80的方法如下:# chdev -l scsi2 -a num_cmd_elems=80 注重,假如你使用SCSI-2高性能控制器,這個(gè)隊(duì)列請(qǐng)求的最大值是30,而且這個(gè)限制不能被改變。為此,你應(yīng)該確保連接到SCSI-2高性能控制器的所有設(shè)備的隊(duì)列深度不超過30。 同時(shí)你應(yīng)該注重到最原始的RS/6000 SCSI適配器不支持隊(duì)列。將一個(gè)磁盤陣列設(shè)備連接到這樣的適配器是不合適的。控制AIX的系統(tǒng)pbufs的數(shù)量 在AIX系統(tǒng)中,邏輯卷治理器(LVM)使用一個(gè)稱為pbuf的結(jié)構(gòu)來控制針對(duì)磁盤的輸入輸出操作。在AIX版本3中,對(duì)每個(gè)正在讀或?qū)懙捻摱夹枰粋€(gè)pbuf。對(duì)于那些進(jìn)行大量順序輸入輸出的系統(tǒng)而言,這將過度損耗pbufs緩沖池。為了補(bǔ)償這種損耗,使用命令vmtune來增加pbufs的數(shù)量。
在AIX版本4中,對(duì)于每個(gè)順序輸入輸出請(qǐng)求只只用單個(gè)pbuf,而不管涉及的頁的數(shù)量。這就顯著減少了用完pbufs的可能性,因而在版本4中,一般不推薦調(diào)整pbufs。在AIX版本5中,不再需要調(diào)整這個(gè)參數(shù)。