FreeBSD其他核心設定選項(轉)

gugu99發表於2007-08-11
FreeBSD其他核心設定選項(轉)[@more@]

  瞭解了最基本的GENERIC設定檔案的內容,使用者就能根據實際情況,將不必要的設定刪除,配置一個適合自己硬體的核心。然而GENERIC核心並不能包括更豐富的設定,包括很多支援的硬體種類,或者特定的核心特性等。

  除了上面提到的這些較常用到的選項之外,FreeBSD中還支援一些不常使用的裝置和選項,例如一些老式的連線到音效卡上的光碟機、遊戲杆等,FreeBSD甚至也支援IP over ATM協議和ATM網路卡,千兆乙太網卡等最新的網路裝置和協議。

  所有的選項均可以在LINT檔案中找到對應配置的例子,就需要根據具體硬體將配置增加到使用者自己的配置檔案中。

  無論增加哪種硬體裝置之後,都要檢查系統中是否有相應的裝置檔案存在。通用核心中不存在的裝置,預設也沒有生成對應的裝置檔案。因此需要進入/dev目錄中,使用/dev/MAKEDEV命令來產生相應的裝置檔案。

  • 調整核心效能

  當執行一臺高效能伺服器的時候,預設設定並不能充分發揮核心的所有能力。為了調整系統效能,便需要考慮更多的設定選項。

maxusers    256

options     "MAXMEM=(256*1024)"

options     "MAXDSIZ=(256*1024*1024)"

options     "DFLDSIZ=(256*1024*1024)"

options     NMBCLUSTERS=4096    

options     CHILD_MAX=512     

options     OPEN_MAX=512     

options    SMP

options    APIC_IO

options    SOFTUPDATES

  由於伺服器系統執行在高負載下,需要產生數量巨大的程式數目,並開啟相當多的檔案。為了提供更好的支援就需要增加系統中表格的大小,這應該增加maxusers設定引數。

  系統啟動時首先透過BIOS來檢測系統中的記憶體,但是一般的BIOS最多隻能報告64M記憶體,因此FreeB SD需要自己檢測系統中的記憶體數量。然而系統記憶體檢測並不一定檢測到系統中的所有記憶體,因此需要在核心設定中指定記憶體大小,MAXMEM選項就用來指定系統實體記憶體的容量。上例中將系統記憶體設定為256MB。

  此外,預設情況下FreeBSD限制每個應用程式使用128MB的記憶體,這對於一般的應用程式是滿足的。但是對於特定的應用程式的伺服器,如大容量的新聞組伺服器,將佔用大量記憶體,因此就需要增加相應的引數。核心選項MAXD SIZ為最大限制,DFLDSIZ為這個限制的預設值,那麼將應用程式的記憶體使用限制設為256MB的配置項為上例所示。

  為了增加FreeBSD的網路效能,可以增加NMBCLUSTERS的值,這個設定決定網路介面接收資料時的緩衝mbuf的大小,增加這個值就能使系統能同時響應更多的併發請求,這對於Web等高負載伺服器特別重要。CHIL D_MAX定義一個程式能開啟的最多子程式數數目,而OPEN_MAX定義一個程式能同時開啟的檔案描述字的數目,這三個引數為繼承自4.4BSD中的設定引數,在FreeBSD下一般不需要調整,因此並沒有寫在LINT配置檔案中,一般情況下,NMBCLUSTERS的預設值對於高負載伺服器略小一些,而CHILD_MAC和OPEN_MAX的預設值能滿足一般的高負載伺服器的要求。

  通常這些數值引數需要根據實際情況進行調整,而不應該一味的增大。使用vmstat,netstat,top 等系統工具可以觀察系統在實際情況下的執行狀態,以決定需要進行哪些調整。

  SOFTUPDATES選項能增加UFS型別的檔案系統存取速度,對於大部分種類的網路伺服器,系統瓶頸在於磁碟訪問速度,而使用這個選項可以改善檔案系統的存取效能。這個選項之所以沒有被作為預設設定,主要是因為版權原因。然而為了編譯帶有SOFTUPDATES選項的核心,還必須手工建立一些符號連線,因為SOFTUPDATES使用的原始碼並不直接位於正確的編譯路徑下,而是位於一個非標準路徑下,FreeBSD使用這種方法提醒FreeBSD使用者,表示這個部分的版權與BSD版權許可不同,需要單獨處理。

# cd /usr/src/sys/ufs/ffs

# ln -s /usr/src/contrib/sys/softupdates/*.[ch] .

  當建立了上述連線之後,帶有SOFTUPDATES選項的核心才能被正確編譯,然而即使核心支援這個選項,還需要在檔案系統中設定softupdate選項,相應檔案系統才能真正使用這個功能,這需要對相應的檔案系統使用tunefs命令:

# tunefs -n enable /dev/rda0s1d

  這個命令只需執行一次就行了,為了避免出現問題,請在系統的單使用者模式下執行這個命令。同樣可以使用tune fs -n disable可以遮蔽這個功能。

  此外,對於多處理器的伺服器系統,還可以使用SMP選項和APIC_IO選項以支援多處理器。

  可以在編譯核心時開啟更多的最佳化選項,預設情況的只能提供十分基本的最佳化,而且是使用標準版本的gcc 2. 7.2.1來編譯系統的。可以安裝egcc,並指定更高的最佳化選項,如-O6和-mPentium,來獲得更高階別的最佳化和利用Pentium晶片專用指令。由於egcc僅僅支援ELF格式的執行檔案,因此不能用於3.0之前(包括3 .0-REKLEASE)使用a.out格式核心的系統。

  當使用egcc編譯核心時,需要更改執行config後產生的核心目錄下的Makefile,需要重新定義C C選項為/usr/local/bin/egcc,並更改最佳化選項-O為-O -mpentium,但是由於egcc 不支援gcc的編譯選項-fformat_externsion,因此還需要更改Makefile引用的/usr/s rc/share/mk/bsd.kern.mk檔案,刪除這個檔案中這個編譯選項的定義。

  雖然理論上編譯器最佳化不影響編譯結果,但是編譯器本身也會存在問題,使得在某些情況下發生錯誤。尤其對於系統核心,它決定系統的穩定性。因而在編譯時採用過高的最佳化時就要特別小心,極其偶然的情況下會過高最佳化的核心會造成系統崩潰。因此在正式使用一個最佳化核心之前,應該保留一個原有的、使用普通最佳化選項的核心。新核心經過一定時間實際執行的考驗,確認沒有問題之後才能放心用於正式使用。

  • 音效卡裝置

  通常對於SoundBlaster相容的音效卡,可以使用的以下配置選項:

controller   pnp0

controller   snd0

device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr

options SBC_IRQ=5

device  sbxvi0 at isa? drq 5

device  sbmidi0 at isa? port 0x330

device  opl0   at isa? port 0x38a

  其中pnp0控制器是幫助設定ISA介面的PNP音效卡的資源,這主要用於使用BIOS為ISA PNP裝置分配資源的情況下。但如果不是ISA PNP的音效卡,就不需要這個設定,而且如果ISA PNP音效卡能設定為非PNP型別,最好將其設定為非PNP型別,ISA匯流排下的PNP音效卡比較難以設定。

  如果系統中安裝有DOS的話,可以啟動到DOS下,使用該卡的設定程式或一些系統硬體分析軟體尋找BIOS分配給ISA PNP卡的資源。

  snd0提供最基本的音效卡支援程式碼,sb0為SoundBlaster相容音效卡驅動程式,要根據音效卡的配置引數更改sb0驅動程式的IRQ、DMA以及port數值。改變IRQ值的時候,不僅應該在sb0的配置行中改變,還應該使用SBC_IRQ配置選項。

  sbvxi0也是SoundBlaster 16所需的程式碼,大部分聲稱與SoundBlaster相容的音效卡並不能做到完全相容SoundBlaster 16,最多相容SoundBlaster或SoundBlaster Pro,因此就不能支援這個裝置,只有真正的SoundBlaster 16才能使它發揮作用。sbmidi0為So undBlaster音效卡的MIDI介面的驅動程式,很多相容音效卡也不支援這個裝置。opl0為SoundBlast er相容音效卡使用的Yamaha OPL-2和OPL-3晶片使用的驅動。

  使用上面的配置選項,設定正確的資源引數,就可以支援soundblaster相容音效卡。但是不同音效卡對So undblaster的相容性不同,因此係統檢測時就不能檢測到所有的裝置,如midi裝置或sbvxio0裝置,但一般都可以檢測到sb0裝置,這就能提供基本的音效卡裝置支援。

  音效卡裝置還需要相應裝置檔案snd0的支援:

# cd /dev

# ./MAKEDEV snd0

  當使用這些選項重新編譯好核心,並啟動之後,就可以檢視音效卡系統是否工作正常。首先應使用 dmesg命令檢視系統是否偵測出了音效卡裝置,如果沒有偵測出,就可能是硬體引數配置的問題,需要使用 UserConfig更改配置。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-944653/,如需轉載,請註明出處,否則將追究法律責任。

相關文章