歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> HPUX核心參數說明

HPUX核心參數說明

日期:2017/2/28 11:26:43   编辑:關於Unix


acctresume 和 acctsuspend
只在啟用 HP-UX 統計時使用。這些變量是統計日志文件所在文件系統(缺省情況下為/var/adm)的百分比。在文件系統自
由空間降到acctsuspend指定的百分比(絕對百分比)時,即終止統計;只有達到分配給acctresume的百分比時才能恢
復。
例如:
acctsuspend 分配 0 (假定缺省的文件系統值)- 當自由空間低於minfree(缺省情況下為10%,在bdf輸出中文件系統將顯
示100%使用)時,統計將被終止。如果acctresume為80,當文件系統的利用率降到80%時(bdf顯示),就會再次啟用統
計。重新啟用統計後,就會產生“Accounting resumed”信息。
欲了解其它信息,請參考/usr/share/doc/doc_map.txt中所列的統計白皮書以及統計幫助信息。
bufpages
這個值以前用於定義為文件系統IO中使用的高速緩沖區分配的物理內存量(以4096字節頁面為單位)。
以前的HP-UX版本一般將 10% 的物理內存用於此任務,但是最近的版本已實現了內存的動態分配。在10.X版中,如果
bufpages是一個非零值,它就成為高速緩沖區可用內存頁面的最大值,實質變成一個限制,盡管可能很少使用,但不會超過這個值。在10.X版中,bufpages經常設為0,它表示請求動態高速緩沖區,dbc_min_pct 和 dbc_max_pct參數將設置一個高速緩沖區允許的可用內存的最小和最大百分比。
在9.X版中,高速緩沖區的內存用bufpages變量明確確定。如果/etc/conf/dfile (700系列)或/etc/conf/gen/S800(800系列)中缺少了這個變量,高速緩沖區就被設為可用內存的10%;否則該值以頁面(4096字節)數填入。
create_fastlinks
允許在HFS文件系統內創建高速符號鏈接。版本注釋中應當包含有關的附加信息。從根本上來說,高速符號鏈接減少了磁盤
塊訪問,從而略微減少磁盤IO。
* 注:在10.0以前的800系統或9.0以前的700系統上沒有這個變量。
dbc_max_pct 和 dbc_min_pct
這兩個變量定義緩沖文件系統頁(也叫做高速緩沖區)可用的內存百分比范圍。適當取值一般可以產生以下效果:
- 低於或等於 95% 的讀緩沖命中率- 低於或等於 70% 的寫緩沖命中率
用sar -b 5 5 (分別為%rcache 和 %wcache)可以對該值進行監視。也許可以保證減少讀緩沖命中。
為高速緩沖分配過多內存的另一個現象可能是用戶響應時間中無法解釋的偶然或間歇性停頓。 dbc_min_pct的缺省值是5,
dbc_max_pct的缺省值是50。在許多情況下,建議為高速緩沖區分配200mb或更少的內存空間。Dbc_max_pct是機器上一個
主要的減少對象,在其中可以觀察到內存壓力,以及剛才所描述的停頓。
default_disk_ir
磁盤即時報告。這個變量確定 write()系統調用是否等待數據實際寫入磁盤,或者只是寫入磁盤緩存。缺省的動作是禁
止,表示write()將寫入磁盤而不是磁盤緩存。版本注釋中提供了有關的附加信息。
fs_async
允許異步文件系統寫操作。盡管在部分情況下這可能會提高文件系統的性能,但文件系統的損壞窗口更大,建議采用其它
的保證數據完整性的方法。請小心改變此變量,這個變量只與文件系統有關,與原始磁盤設備或原始lvols無關。
maxdsiz、maxssiz和maxtsiz
這些參數是所有HP-UX 用戶進程的三個基本的組成部分(數據、堆棧和文本段)。數據段的最大尺寸是1.9 GB,但這個值
要求用EXEC_MAGIC編譯和鏈接可執行代碼(詳情請參考ld(1)幫助選項-N 和版本注釋)。EXEC_MAGIC剔除了幾個進程共享
代碼的同一個內存映像的能力。沒有EXEC_MAGIC,maxdsiz的最大值大約為966 MB。如果每個進程的數據段(maxdsiz)超
過這個值,則二進制代碼必須至少用ld(1)重新鏈接或按EXEC_MAGIC的設置重新編譯。附加的詳細信息參見 ld(1)和當前
版本的版本注釋。
注:10.10版增強了 EXEC_MAGIC,使文本映像可以在多個進程之間共享。詳情請參考幫助信息和版本注釋。
maxfiles & maxfiles_lim
這個變量與進程一次可以打開的最大文件數的軟件、硬限制有關,maxfiles的缺省值是60,但由於所有的交互進程都打開stdin、stdout
和stderr,因此通常只能再打開57個文件。非根系統進程(uid > 0)可以將軟限制增加到maxfiles_lim硬限制,但只能通
過應用setrlimit(2)系統調用來實現,否則,增加軟限制的唯一方法就是改變maxfiles的值。
maxswapchunks
這個值與可用於分配的 swapchunks (swchunk)數有關。由於交換空間以swapchunks分配,此變量必須足夠大,以訪問所
有的交換空間,缺省值256允許分配大約525 MB的交換空間。如果這個值對於已配置的交換空間過小,則無法得到的交換空
間一般標記為保留,不能訪問,這樣就限制了交換空間和總的虛擬內存。這個變量的代價就內存而言並不重要。將
maxswapchunks設為1024和2048將使內核可以尋址比大部分配置的要求大得多的交換區域。
maxuprc
此值確定一個用戶標識能夠產生的進程數,這對於每個UID都是一個限制因素,而不管登錄的數量有多少。較大的maxuprc
值可以產生一個環境,在這個環境中,由於雜亂進程的大量產生,失控的用戶進程消耗大量的處理器時間。它還可能影響
其它的內心變量,導致機器的吞吐率降低。建議增加此變量的值時一定要小心。
maxusers
與一些人的看法相反,這個變量與允許登錄到HP-UX的用戶數毫無關系,這個變量的主要功能與maxuprc類似 - 更大數量核
心公司的輸入變量,通常不需要改變這個變量。明智的做法是將注意力集中在需要修改的具體核心資源上。
maxvgs
這個參數是指在當前的內核配置下可配置的最大卷組數,缺省值是10。如果vgcreate返回無法打開vg組文件的信息,應檢
查新卷組組文件的副編號。如果卷組副編號是0x0a0000或更大,則maxvgs的缺省值將返回一個錯誤。
nbuf
這個參數正在過時。目前,這個值主要在300/400系列平台上使用,用於配置高速緩沖區。它與bufpages一起使用 - 每兩
個bufpages一個nbuf。如果在700或800系列機器上使用,一般會在/etc/dmesg或syslog中出現錯誤,顯示nbufs數被調
整。對於使用HP-UX 9.0或更高版本的700/800系列機器,不建議用這個參數代替bufpages、dbc_max_pct或dbc_min_pct
。如果nbuf被從核心變量列表中完全移走,那麼將來持續使用可能會導致出現錯誤。
ncallout
任意時間內核可以調度的最大超時數。進程數越高,每個進程多個超時的可能性越高,這個值的配置就應當越高。缺省值
是公式 (16+NPROC)。
netmemmax
IP 數據包重新分段組合內存。值-1 表示除了物理內存沒有限制,而0則限制為10%,大於0的值指定可能接近最近頁面邊界
的物理內存量,這個內存不保留,只根據需要進行分配。對這個變量的調整就是在用戶內存和內核網絡內存之間進行平
衡,可能需要做一些實驗才能找到最優值。
nfile
系統上運行的所有進程打開的文件數。盡管每個登錄項相對都比較小,在對這個表進行管理時仍會有一些內核開銷。此
外,每次打開文件時,在nfile中都會消耗一個登錄項,即使該文件已被另外一個進程打開。當nfile登錄項用光時,就會
出現一個控制台和/或syslog錯誤信息,明確說明“File table full”。
在大型系統的使用中,我們會遇到這樣的錯誤,由於系統報錯table full error而引起了oracle數據庫宕機。這種錯誤的引起是由於nfile值太小的緣故。
看看hpdoc的解釋:nfile defines the maximum number of files that can be open simultaneously, system-wide, at any given time.
乍看似乎是我們看得見的文件打開數,其實不是,看得見的是nofile參數來管理的。
It is the number of slots in the file descriptor table. Be generous with this number because the required memory is minimal, and not having enough slots restricts system processing capacity.
nfile缺省值的計算公式如下:((16*(Nproc+16+MaxUsers)/10)+32+2*(Npty+Nstrpty)
那麼這個值應該設置成多大呢?
優先考慮根據sar -v的結果來看,適當增加。觀察一周左右,用lsof
nflocks
系統內文件鎖的數量。與nfile類似,每個鎖都會得到一個登錄項,內存的花費也非常小,每個nflock登錄項使用的內存很
少。
ninode
這個臭名昭著的變量過於龐大,可以對處理器產生過重的負擔(特別是采用多CPU的機器)。對這個表沒有有效的統計,因
此實際的消耗很難監視,最好的方法就是不增加它的值,除非收到控制台/syslog信息,明確規定“Inode table is
full”,否則啟動一段時間後,看起來該表就幾乎或完全充滿。
與 nfile不同,每次打開文件時,ninode中只消耗一個登錄項。通常nfile和ninode之間沒有直接的關聯。此外,過高的
值實際可能導致高可用集群出現網絡超時的情況,經常是在備份例程啟動時。很少有系統真正需要5,000 個以上的登錄
項。如果這個變量很大,散列一個登錄項的初始等待時間就非常大,以便能夠首先快速打開文件。
由於沒有有效的統計,確定這個表中有哪些內容的唯一方法就是順序搜索,這對處理時間的消耗非常大。當處理器“走
過”這個表時,很少執行其它的活動。建議此表稍微小一些,只有在收到inode表已滿的信息時才增加它的值,此時我們建
議增加 10-20%。
DNLC
這個參數不是直接可調,但操作與 ninode類似。它是目錄名查找緩沖,用於目錄名而不是文件,是maxusers影響的參數之
一。如果內核方案失敗,這個變量一般就采用ninode的值。該值設置得很大時,其結果與ninode相似。檢查這個變量的最
簡單的方法是用glance -t命令,然後檢查第二頁,它包含ninode和DNLC。sar不能檢查這個值。同樣,此表中不保留長文
件名(大於14個字符) ,每次引用該表時,都必須全部解釋。
no_lvm_disks
這個變量通知內核檢查 LVM 磁盤。當該變量被設為1時,不進行任何檢查。
nproc
這是maxusers/maxuprc的雜亂設置所影響的另外一個變量,它與系統內的進程數有關,經常在運行ps -ef時,或者使用Glance/GPM
和類似的命令時引用。該值通常應當比為非預期的進程增加預留的最大進程數大10-20%。
shmmax
這是每個共享內存段的最大字節值。在大部分情況下這個最大值是1 GB。PHKL_8327或其之後的換代產品將允許系統內所有
共享段的累積總和,最大值達到2.75 GB,而每個段仍保持1GB的限制。
swapmem_on
這個值允許為進程釋放/還原分配內存,通常在swapinfo命令下可以觀察到,顯示為內存,盡管偽交換的缺省優先級是12,
但內存開始時用於無效的進程,主要結果是I/O減少,因為無效的進程不必遷移到磁盤交換區域或文件系統上。
如果內存壓力增加,需要更多的內存頁,那麼無效的進程就會被移到交換區域。用swapinfo -atm觀察正在使用的交換區域
沒有什麼害處。內存壓力可以用vmstat命令進行觀察,如果swapinfo顯示設備保留行減少、而設備PCT USED欄相應增加,
也可以驗證這一點。

swapmem_on的作用


經驗之談:如果小型機配置的內存比較大,那麼建議將swapmem_on置為1。其作用是打開pseudo-swap(偽交換區)功能。如果swapmem_on的值為0,表明沒有打開pseudo-swap(偽交換區)功能。

以下的內容將會牽涉到兩個概念:
1. 交換區(swap)
2. 偽交換區(pseudo-swap)
如果對這兩個概念不清楚,可以去查找相關資料。這裡就不詳細說明了。

在HP-UX中,有兩個後台守護進程對交換區(swap)進行管理,這兩個守護進程就是vhand和swapper。
簡單來說,vhand這個進程會監控內存的使用狀況,當內存的值低於一個叫做lossfree的臨界值的時候,vhand進程就會開始工作。它會將最近沒有訪問過的內存頁面調度到交換區(swap)中,這就是有名的page-out。
當系統的應用對內存的要求很高的時候,這就可能會產生一個問題:vhand進程可能會經常作page-out的動作,如果太頻繁了,就會影響系統的性能。這個因為頻繁page-out產生的性能大幅度下降的現象,叫做thrashing——此時可以考慮增加內存來提高系統的性能。
而swapper這個守護進程是在系統發生thrashing時或內存的值低於另外一個叫做minfree的臨界值的時候被激活的。此時swapper會將一些進程置為非激活的狀態,來降低系統的繁忙度。當swapper監控到內存的值在minfree之上或系統沒有發生thrashing時,系統才會重新激活那些非激活的進程。

而實際應用當中。用戶的系統可能會遇到這樣的情況:系統要運行一個程序,而這個程序需要內存的大小為10M,此時,內存剩余30M,而swap空間剩下5M,那麼該程序會在這個時候啟動嗎?答案是不會啟動。因為系統發現swap小於程序需要的內存大小,雖然這個時候有足夠的內存,程序仍然不會啟動。
因此,為了解決這樣的問題,就有了偽交換區(pseudo-swap)的概念。那麼偽交換區(pseudo-swap)的大小是如何計算的呢?以下是一個偽交換區(pseudo-swap)最大值的計算公式:
偽交換區(pseudo-swap)=交換區(swap)+(3*內存大小/4)
這樣,系統要啟動一個程序,就會察看內存的大小和偽交換區(pseudo-swap)的大小,由這個公式可以知道,偽交換區(pseudo-swap)始終是大於內存的大小的。只要有足夠的內存,程序就會啟動。這就避免了以上尴尬的情況。
而實際上,偽交換區(pseudo-swap)其實並沒有占用任何硬盤的空間,它僅僅是計算出來的“偽空間”。

回到最初的經驗之談,為什麼對於大內存的系統來說,建議設置swapmem_on為1呢?因為根據經驗來說,swap一般會設定為內存的2倍。而對於現在很多系統來多,都配置了8G、16G的大內存,那麼此時要分配32G的swap空間?此時,一般都會swap的大小等同於內存的大小。此時,打開偽交換區(pseudo-swap)的功能,就非常有必要了。

timeslice
這個值與優先級降低和處理器暫時損失之前每個進程能夠消耗的時間分段信號數有關。一般地,改變這個參數利害此消彼
長,在大部分情況下不建議進行修改,也沒有必要修改。
Copyright © Linux教程網 All Rights Reserved