- 論壇徽章:
- 0
|
HP-UX緩沖區(qū)高速緩存的配置可能會令您十分困惑,您可能常常將它配置地過低或過高。了解如何保留和使用HP-UX緩沖區(qū)高速緩存將有助于您為您的應用環(huán)境確定適合的配置。
本文將著重討論關于HP-UX緩沖區(qū)高速緩存的下述問題:
1. 什么是緩沖區(qū)高速緩存?
2. 靜態(tài)緩沖區(qū)高速緩存與動態(tài)緩沖區(qū)高速緩存的區(qū)別何在?
3. 緩沖區(qū)高速緩存的工作原理是怎樣的?
4. 緩沖區(qū)高速緩存及其相關結構需要多少內存?
5. 使用緩沖區(qū)高速緩存的利弊何在?
6. 是否可以繞過緩沖區(qū)高速緩存?
7. 配置緩沖區(qū)高速緩存應遵循什么原則?
什么是緩沖區(qū)高速緩存?
緩沖區(qū)高速緩存是內存中的一個區(qū)域,用于保存二級存儲設備中的頁。緩沖區(qū)高速緩存通過在內存中存儲經常被訪問的頁來減少對二級存儲設備的訪問。
一旦文件數(shù)據被調入內存,就可以在內存中進行隨后的訪問,而無需訪問二級存儲設備。
靜態(tài)與動態(tài)緩沖區(qū)高速緩存
默認情況下,緩沖區(qū)高速緩存是動態(tài)的,因為它可以根據需要擴大或縮小。要調節(jié)動態(tài)緩沖區(qū)高速緩存,可以將內核可調參數(shù)nbuf和bufpages設為零,并將dbc_min_pct和dbc_max_pct分別設為占用內存的最小和最大比例。默認值為:
dbc_max_pct 50
dbc_min_pct 5
注意:dbc_min_pct不能低于2,dbc_max_pct不能高于90。
系統(tǒng)最初啟動時,將按照dbc_min_pct的值(默認為5%)為緩沖區(qū)頁分配相應比例的內存(每頁為4096個字節(jié))。系統(tǒng)還會為每2個緩沖區(qū)頁分配1個緩沖區(qū)頭指針(header)。隨著新頁不斷從磁盤調入,緩沖區(qū)高速緩存的大小將不斷增加。緩沖區(qū)高速緩存可以快速增大,達到dbc_max_pct指定的最高內存比例。大型文件拷貝和備份會使緩沖區(qū)高速緩存迅速達到其最大值。緩沖區(qū)高速緩存增加速度非?,但只有當內存需求緊張時它才會減少。
通過設置nbuf或bufpages可將靜態(tài)緩沖區(qū)高速緩存的大小配置為固定值。設定nbuf的值可以指定應分配的緩沖區(qū)頭指針的數(shù)量。系統(tǒng)將為每個緩沖區(qū)頭指針分配兩個緩沖區(qū)頁,緩沖區(qū)頁總量為nbuf*2。如果設置了bufpages內核參數(shù),且nbuf為0,那么緩沖區(qū)頁的頁數(shù)將被賦值給bufpages,每2個緩沖區(qū)頁將分配到一個緩沖區(qū)頭指針,緩沖區(qū)頭指針的總量為bufpages/2個。如果同時設置了nbuf和bufpages的值,那么nbuf就用于調節(jié)緩沖區(qū)高速緩存的大小。
另外,將dbc_min_pct和dbc_max_pct設為相同值也可以對靜態(tài)緩沖區(qū)高速緩存進行配置。
靜態(tài)和動態(tài)緩沖區(qū)高速緩存都存在折衷。如果出現(xiàn)內存需求緊張,靜態(tài)緩沖區(qū)高速緩存無法減少,很可能會造成比較重要的頁被換出或者進程被釋放。相比之下,在管理動態(tài)緩沖區(qū)高速緩存(如緩沖區(qū)的動態(tài)分配)以及管理緩沖區(qū)高速緩存地址映像或緩沖區(qū)高速緩存虛擬位圖(bufmap和bcvmap將在以下章節(jié)進行詳細討論)方面存在一些系統(tǒng)開銷。另外,動態(tài)緩沖區(qū)高速緩存的增加速度非常快,但降低速度非常慢,只有當內存需求緊張時它才會釋放空間。
緩沖區(qū)高速緩存的工作原理
緩沖區(qū)高速緩存的主要部分有緩沖區(qū)高速緩存哈希表、緩沖區(qū)頭指針和緩沖區(qū)頁。我們至少要為實際緩沖區(qū)的每個緩沖區(qū)頭指針分配1個頁,即使緩沖區(qū)的大小只有1kb。緩沖區(qū)最大為64kb。當需要磁盤上的數(shù)據時,我們可以利用塊設備(特別是塊設備的vnode地址)和塊號來計算哈希索引,并將其存入緩沖區(qū)高速緩存哈希表,該表存放的是一系列緩沖區(qū)高速緩存哈希頭指針。緩沖區(qū)高速緩存哈希頭指針將指向一個緩沖區(qū)鏈表,這些緩沖區(qū)的塊設備和塊號映射到同一哈希頭指針。
如果要從一臺設備訪問一個塊,而它不在相應的哈希鏈中,這時就會出現(xiàn)緩沖區(qū)高速緩存故障,并發(fā)生以下兩種情形之一:
1. 分配一個新緩沖區(qū)(如果使用的是動態(tài)緩沖區(qū)高速緩存)。必須從磁盤讀入數(shù)據。
2. 重復使用現(xiàn)有緩沖區(qū)(如果使用的是靜態(tài)緩沖區(qū)高速緩存,或者該緩沖區(qū)高速緩存已經達到dbc_max_pct值),必須從磁盤讀入數(shù)據。重復使用的緩沖區(qū)或者是無效緩沖區(qū)(即文件已被刪除或文件系統(tǒng)已被卸載),或者是最近沒有訪問過的緩沖區(qū)。
但如果在該緩沖區(qū)高速緩存中找到了需要訪問的緩沖區(qū),那么無需訪問磁盤就可以訪問數(shù)據了。
圖表:HP-UX緩沖區(qū)高速緩存
注意:即使文件關閉后緩沖區(qū)仍保留在緩沖區(qū)高速緩存中。因此,如果一小段時間后重新打開文件,緩沖區(qū)仍然在緩沖區(qū)高速緩存中。例如,如果您的緩沖區(qū)高速緩存大小為500 MB,當您對一個100MB的文件執(zhí)行grep(1)命令時,系統(tǒng)在掃描文件時需要將每個數(shù)據塊都讀入緩沖區(qū)高速緩存。但隨后如果您在同一文件上再執(zhí)行grep(1)命令,系統(tǒng)會通過緩沖區(qū)高速緩存訪問該文件,而無需訪問磁盤設備,即使該文件在執(zhí)行完第一次grep(1)后已經關閉。
緩沖區(qū)高速緩存與內存
緩沖區(qū)高速緩存占用多少內存?這個問題似乎很簡單。如果您在12GB內存的系統(tǒng)上將緩沖區(qū)高速緩存配置為動態(tài)的,最高占物理內存的10%,那么緩沖區(qū)高速緩存最大可為1.2GB。但這只是指緩沖區(qū)頁。用于管理緩沖區(qū)高速緩存的其它結構不在此范圍之列。這些其它結構包括:
• 緩沖區(qū)頭指針。
• 緩沖區(qū)高速緩存哈希表
• 緩沖區(qū)散列鎖(Hash Lock)
• 緩沖區(qū)高速緩存地址映像/緩沖區(qū)高速緩存虛擬映像
緩沖區(qū)頭指針
緩沖區(qū)高速緩存中的每個緩沖區(qū)都需要一個頭指針結構,用于定義塊所代表的內容、它的使用方法及其連接方式。緩沖區(qū)頭指針長度約為600字節(jié)。如果緩沖區(qū)高速緩存是固定的,則系統(tǒng)初始化時將為其分配nbuf緩沖區(qū)頭指針。如果緩沖區(qū)高速緩存是動態(tài)的,則系統(tǒng)將根據需要為其動態(tài)分配緩沖區(qū)頭指針。當需要更多緩沖區(qū)頭指針時,系統(tǒng)將為其分配一個內存頁,該內存頁將被劃分為一個4K頁所能容納的最大數(shù)量的緩沖區(qū)頭指針。
緩沖區(qū)高速緩存哈希表
緩沖區(qū)高速緩存中的塊被映射,以便可以對其進行快速訪問。在啟動時系統(tǒng)將計算哈希表目的數(shù)量,該數(shù)值是空閑內存頁數(shù)的¼,不足¼按最近的2的冪數(shù)計算。因此一個12 GB內存的系統(tǒng)大約有100萬個哈希表目(不考慮緩沖區(qū)高速緩存配置)。一頁為4096字節(jié),因此12GB就有3145728個頁。它的¼為786432個,與它最近的2的冪數(shù)即1,048,576。每個哈希頭指針為40個字節(jié),因此12GB的系統(tǒng)就應該為緩沖區(qū)高速緩存哈希表分配40MB的內存。
緩沖區(qū)高速緩存散列鎖
并非每個緩沖區(qū)高速緩存哈希頭指針都有一個鎖,而是多個哈希頭指針共用一個鎖。這就減少了哈希鎖需要的內存量。以下表2詳細說明了每個哈希鎖覆蓋的哈希鏈數(shù)量。
緩沖區(qū)高速緩存地址映像/緩沖區(qū)高速緩存虛擬映像
在HP-UX 11.00和此前的版本中,緩沖區(qū)高速緩存地址映像(實際上有2個映像 — bufmap/bufmap2。下面提到bufmap時指的是上述兩個映像)是一種資源映像,用于追蹤緩沖區(qū)高速緩存使用的虛擬地址。bufmap包含所有可用于緩沖區(qū)高速緩存的空閑地址范圍的記錄。bufmap的大小視內存大小的不同而不同。在32位系統(tǒng)上,它約占內存的1%,在64位操作系統(tǒng)上約占內存的2%。
緩沖區(qū)高速緩存虛擬映像(bcvmap)是HP-UX 11.11中采用的一種位映像,代表緩沖區(qū)高速緩存中的頁。由于它是位映像(bitmap),因此其內存需求比bufmap要低。默認情況下,位映像的大小(單位:位)與物理內存頁的數(shù)量*內核可調參數(shù)bcvmap_size_factor(默認值為2)一致。管理位映像組需要一些系統(tǒng)開銷,但總的來說,內存使用量非常小。
bcvmap_size_factor的默認值2適用于許多系統(tǒng),尤其是將dbc_max_pct值設為20或更低的系統(tǒng)。但當使用動態(tài)緩沖區(qū)高速緩存時,各種大小的緩沖區(qū)可以根據需要隨時分配和釋放。大小可變的緩沖區(qū)的分配和釋放可以將bcvmap分割開使用。如果沒有任何位映像區(qū)域可以用來表示所需的緩沖區(qū)大小,那么系統(tǒng)可能會震蕩(thrash)。這種現(xiàn)象在dbc_max_pct配置為50%或更高的系統(tǒng)上較為常見,在使用不同大小的緩沖區(qū)的系統(tǒng)上也比較常見。在下述情況下可以使用大小不同的緩沖區(qū):當使用數(shù)據塊大小不同的多個HFS文件系統(tǒng)或使用多個JFS文件系統(tǒng)時,其中部分文件系統(tǒng)將max_buf_data_size設為8 KB,而其他文件系統(tǒng)將max_buf_data_size設為64 KB。在這種高速緩存中,bcvmap_size_factor應至少增加到16。
參見vxtunefs(1M),了解關于max_buf_data_size的更多信息。
注意:bcvmap_size_factor參數(shù)僅用于安裝了PHKL_27808的64位11.11系統(tǒng)。
下表提供的部分實例列舉了具有不同內存大小、不同可調參數(shù)值的系統(tǒng)的內存需求。
系統(tǒng)內存大小 10% BufPages/緩沖區(qū)頭指針 20%BufPages/緩沖區(qū)頭指針 50%BufPages/緩沖區(qū)頭指針
1GB 100MB/7.3MB 200MB/15MB 500MB/36MB
2GB 200MB/15MB 400MB/30MB 1GB/75MB
4GB 400MB/30MB 800MB/60MB 2GB/150MB
8GB 800MB/60MB 1.6GB/120MB 4GB/300MB
12GB 1.2GB/90MB 2.4GB/180MB 6GB/450MB
32GB 3.2GB/240MB 6.4GB/480MB 16GB/1.2GB
256GB 25.6GB/2GB 51GB/4GB 128GB/9.6GB
系統(tǒng)內存大小 哈希表大小 每個鎖的哈希表目數(shù)量 哈希表內存需求
1GB 65536 512 2.5MB
2GB 131072 1024 5MB
4GB 262144 2048 10MB
8GB 524288 4096 20MB
12GB 1048576 8192 40MB
32GB 2097152 16384 80MB
256GB 16777216 131072 640MB
緩沖區(qū)高速緩存的優(yōu)勢
采用緩沖區(qū)高速緩存有以下幾大優(yōu)勢。
1. 順序I/O很少。應用通過各種不同大小的請求從文件系統(tǒng)讀取數(shù)據,這些請求可能與實際的文件系統(tǒng)塊大小不一致。沒有緩沖區(qū)高速緩存的話,每次請求都必須到物理磁盤中訪問整個磁盤塊,即使它們需要的容量可能只有幾個字節(jié)。如果下一次讀操作是讀取同一個物理磁盤塊,那么系統(tǒng)就需要再次讀入該磁盤塊,因為它沒有保存。但如果有緩沖區(qū)高速緩存,第一次讀是與磁盤之間進行物理I/O,但接下來對同一磁盤塊的讀操作就可以通過緩沖區(qū)高速緩存來完成了。
2. 預讀。如果文件系統(tǒng)的訪問是順序的,那么緩沖區(qū)高速緩存將通過預讀來提高性能。當文件系統(tǒng)檢測到對文件的順序訪問時,就開始對后面的塊進行異步讀取(也被稱為預。,因此當應用對數(shù)據發(fā)出請求時該數(shù)據可能已經在(或者正在傳輸中)緩沖區(qū)高速緩存中了。
在HFS文件系統(tǒng)中,一般的順序讀取通過系統(tǒng)可調參數(shù)hfs_ra_per_disk來配置。如果使用LVM條帶化,我們可以將hfs_ra_per_disk的值與條帶的數(shù)量相乘。
在JFS 3.1文件系統(tǒng)中,順序預讀剛開始時讀取數(shù)據很少,隨著順序訪問的不斷進行,JFS預讀的數(shù)據越來越多。
在JFS 3.3/3.5中,預讀區(qū)域是文件系統(tǒng)可調參數(shù)read_pref_io和read_nstream的乘積。當?shù)谝淮螜z測到順序訪問時,系統(tǒng)將把4倍的預讀區(qū)域讀入緩沖區(qū)高速緩存(4 * read_pref_io * read_nstream)。當應用完成了一個區(qū)域的讀取后,系統(tǒng)將異步預取下一區(qū)域。預讀可能非常有益于順序文件存取。但通常進行隨機I/O操作的應用可能會偶爾讀取連續(xù)的數(shù)據塊,從而無意中產生大量的預讀數(shù)據。這種情況下可能不使用預讀,因為文件整體上是隨機讀取的。
在JFS 3.3/3.5中,預讀數(shù)據的大小受vxtunefs參數(shù)read_nstream和read_pref_io的控制,在JFS3.5中可以通過將vxtunefs參數(shù)read_ahead設為0來取消預讀。在JFS 3.1中,預讀數(shù)據的大小不可調節(jié)。
3. 熱數(shù)據塊。如果應用(單進程或多進程)反復讀取文件系統(tǒng)塊,則該塊將保留在緩沖區(qū)高速緩存中,因此系統(tǒng)每次需要訪問該數(shù)據時都無需到磁盤中讀取。當應用反復搜索一個大型目錄(可能要創(chuàng)建一個臨時文件)時緩沖區(qū)高速緩存尤其有用。如果經常使用這些目錄塊,那么它們很可能會被保留在緩沖區(qū)高速緩存中,系統(tǒng)就無需訪問物理磁盤了。
4. 延遲寫。緩沖區(qū)高速緩存支持應用進行延遲或異步寫。應用只需將數(shù)據寫到緩沖區(qū)高速緩存中,系統(tǒng)調用就會返回,而無需等待系統(tǒng)完成對磁盤的I/O操作。隨后系統(tǒng)會通過syncer(1M)、sync(1M)或fsync(2)等操作將臟緩沖區(qū)刷新到磁盤。進行延遲寫有時被稱為后刷新(flush behind)。
使用緩沖區(qū)高速緩存的弊端
每個應用似乎都可以從使用緩沖區(qū)高速緩存中受益,其實使用緩沖區(qū)高速緩存要付出一些代價。
1. 內存。根據緩沖區(qū)高速緩存的配置情況,它可能會是占用內存最厲害的。默認情況下,在8 GB內存的系統(tǒng)中,僅緩沖區(qū)高速緩存頁就會占去4 GB的內存(dbc_max_pct設為50)。即使采用動態(tài)緩沖區(qū)高速緩存,大容量的緩沖區(qū)高速緩存也可能導致總的內存需求緊張。記住,除非內存出現(xiàn)需求緊張,否則緩沖區(qū)高速緩存不會釋放緩沖區(qū)頁。一旦出現(xiàn)內存緊張,緩沖區(qū)頁就像其它用戶頁一樣從時間最長的開始被侵占,因此它的減小速度比擴張速度要慢得多。
2. 刷新緩沖區(qū)高速緩存。
Syncer — syncer(1M)是將延遲寫緩沖區(qū)刷新至物理磁盤的進程。當然,緩沖區(qū)高速緩存越大,syncer就可能完成越多工作。11.0 syncer是單線程進程。它定時被喚醒,并順序掃描整個緩沖區(qū)高速緩存,以查找需要寫到物理設備上的數(shù)據塊。默認的syncer間隔為30秒,也就是說每隔30秒,系統(tǒng)就會對整個緩沖區(qū)高速緩存進行掃描,以查找延遲寫數(shù)據塊。實際上在每次syncer間隔中syncer運行5次,每次掃描1/5的緩沖區(qū)高速緩存。
HP-UX 11.11在刷新臟緩沖區(qū)時更加高效。11.11 syncer是多線程進程,每個CPU有一個線程。每個CPU都有一個臟表(dirty list),每個syncer線程負責從其各自的臟表刷新緩沖區(qū)。這就提高了緩沖區(qū)高速緩存的縮放,因為系統(tǒng)只掃描臟緩沖區(qū),而且每個線程都有自己的臟緩沖區(qū)表,這就避免了對一個表的爭用。
其他Sync操作 — 各種系統(tǒng)操作要求在操作完成前將緩沖區(qū)高速緩存中的臟塊寫到磁盤中。文件的最后一次關閉,文件系統(tǒng)的卸載或一次sync系統(tǒng)調用都屬于此類操作。這些操作獨立于syncer,必須掃描整個緩沖區(qū)高速緩存,以查找需要寫到設備的塊。對于卸載這種情形,一旦操作完成,它必須重新掃描緩沖區(qū)高速緩存,以便使刷新后的緩沖區(qū)無效。緩沖區(qū)高速緩存的這些掃描可能十分耗時,尤其是當出現(xiàn)散列鎖爭奪現(xiàn)象時。
3. 限制IO — 除了檢查哈希鏈和鎖定/打開散列鎖之外,緩沖區(qū)高速緩存越大,在高速緩存中需要刷新到磁盤的臟緩沖區(qū)數(shù)量可能就越多。這可能會導致在sync操作過程中大量寫I/O操作排隊等待磁盤。一個讀請求或異步寫請求可能會滯后于寫操作,從而引起應用延遲。由于限制了每次排隊等待磁盤的緩沖區(qū)數(shù)量,緩沖區(qū)高速緩存的刷新速度可能會受到限制。默認情況下,關閉限制功能。在JFS 3.1中,如果安裝了PHKL_27070,則可以通過將vx_nothrottle設置為0來啟用限制功能。這就通過sync操作(如卸載文件系統(tǒng))減輕了讀饑餓。在JFS 3.3/3.5中,從單個文件刷新到磁盤的數(shù)據量可以通過vxtunefs max_diskq參數(shù)來控制。
限制寫操作 — 設置max_diskq來限制臟緩沖區(qū)的刷新有一個弊端。執(zhí)行sync操作的進程(如umount(1M)或bdf(1M))可能會由于寫操作受到限制而停止。設置max_diskq并不會阻止應用繼續(xù)執(zhí)行異步寫操作。如果對大型文件進行寫,那么臟緩沖區(qū)很有可能會耗盡所有緩沖區(qū),并可能導致其它重要應用的讀或寫延遲。
JFS 3.5中采用了一個新的可調參數(shù) — write_throttle.它可以控制一個文件可以容納的未完成的臟緩沖區(qū)的數(shù)量。如果一個應用的寫速度意欲超過數(shù)據寫到磁盤的速度,并且達到了write_throttle的值,那么該應用將一直等到部分數(shù)據寫到磁盤后,臟緩沖區(qū)中的數(shù)據量重新低于write_throttle值為止。
設置write_throttle能夠減少long sync的次數(shù),同時保持磁盤I/O隊列的可管理性。但是寫到磁盤的應用在其寫數(shù)據時可能會遇到延遲。
4. 大型I/O。一個緩沖區(qū)最大可以為64 Kb。對于高于64 Kb的I/O來說,請求必須分解成多個64 Kb I/O。因此從磁盤讀取256 Kb的數(shù)據就需要4次I/O。但如果繞過緩沖區(qū)高速緩存,就可以直接執(zhí)行一次256 Kb I/O。
5. 只訪問一次的數(shù)據。緩沖區(qū)高速緩存的管理需要額外的代碼和處理。對于只訪問一次的數(shù)據,使用緩沖區(qū)高速緩存在高速緩存中保存數(shù)據沒有任何好處。事實上,將只訪問一次的數(shù)據放入高速緩存,系統(tǒng)可能需要移出那些經常訪問的緩沖區(qū)頁。
6. 系統(tǒng)崩潰。由于許多寫操作都被延遲,當系統(tǒng)崩潰時,系統(tǒng)可能在緩沖區(qū)高速緩存中有許多需要刷新至磁盤的“臟”緩沖區(qū)。緩沖區(qū)高速緩存中在系統(tǒng)崩潰前沒有更新的的數(shù)據就會丟失。
繞過緩沖區(qū)高速緩存
有幾種方法可以避免I/O使用全部緩沖區(qū)高速緩存。繞過緩沖區(qū)高速緩存被稱為直接I/O。對于下面提到的JFS特性來說,要執(zhí)行直接I/O需要HP OnlineJFS授權。
- mincache=direct,convosync=direct
在JFS文件系統(tǒng)中,如果文件系統(tǒng)在安裝時選擇了mincache=direct選項和/或convosync=direct選項,那么將繞過對緩沖區(qū)高速緩存的讀寫 — 參見mount_vxfs(1M)的manpage,了解更多詳細信息。如果文件系統(tǒng)在安裝時選擇了這些選項,那么所有對文件系統(tǒng)的I/O操作將繞過緩沖區(qū)高速緩存。當繞過緩沖區(qū)高速緩存時將無法進行預讀和延遲寫,因為沒有了中間保存區(qū)。
- ioctl (fd,VX_SETCACHE, VX_DIRECT)
在JFS文件系統(tǒng)中,該ioctl調用將把對fd引用的文件的訪問設為直接訪問,并繞過緩沖區(qū)高速緩存。該調用僅用于fd引用的文件實例。其它打開同一文件的應用不受影響。參見vxfsio(7) manpage,了解更多信息。
-discovered direct IO
JFS提供了一種被稱為discovered direct I/O的特性,其中超過一定大小的I/O操作使用直接I/O來完成。只進行一次數(shù)據讀取的應用(如備份或拷貝操作)通常執(zhí)行大型I/O。由于只進行一次數(shù)據存取,因此將數(shù)據調入高速緩存不會帶來任何好處。將數(shù)據調入高速緩存甚至可能會帶來負面效果,因為只訪問一次的數(shù)據可能會占用比較有用的緩沖區(qū)。因此,JFS文件系統(tǒng)上的大型I/O采用“直接”執(zhí)行,繞過緩沖區(qū)高速緩存。在JFS 3.1中,discovered direct I/O的大小固定為128 Kb。在JFS 3.3/3.5中,默認的discovered direct IO的大小為256 Kb,但可以通過設置vxtunefs(1M)的discovered_direct_iosz可調參數(shù)來對其進行設定。
-raw io
如果對數(shù)據的訪問是通過原始設備文件,則不使用緩沖區(qū)高速緩存。
-async driver
一些數(shù)據庫使用async driver(/dev/async)來執(zhí)行異步I/O操作,而繞過緩沖區(qū)高速緩存,直接讀入共享內存段。
HP-UX緩沖區(qū)高速緩存調節(jié)指南。
為調節(jié)緩沖區(qū)高速緩存提供指南非常困難。很多因素要取決于在系統(tǒng)上運行的各種應用。但我們可以提供一些一般性總結。
如果使用數(shù)據庫,數(shù)據庫緩沖很可能比系統(tǒng)緩沖更加高效。數(shù)據庫可能更熟悉I/O模式,從而將相關的緩沖區(qū)留在內存中。因此如果可以選擇的話,內存應分配給數(shù)據庫全局區(qū),而不是系統(tǒng)緩沖區(qū)高速緩存。
我們已經了解到HP-UX 11.11在處理大型緩沖區(qū)高速緩存方面比HP-UX 11.0更加高效。“大型”這一詞是相對而言的,但在本文討論中可以認為它是指大于1 Gb或高于50%內存的緩沖區(qū)高速緩存。總體而言,由于大型高速緩存存在縮放問題,11.0上的緩沖區(qū)高速緩存應配置為1GB或更低,但可以比11.11上的大。但如果您使用的是11.11上的大型緩沖區(qū)高速緩存,那么您應該安裝PHKL_27808或替代補丁,以提高緩沖區(qū)高速緩存的虛擬映像的大小。
緩沖區(qū)高速緩存越大,您的sync操作所用時間就會越長。這尤其會影響文件系統(tǒng)的安裝和卸載次數(shù)。如果需要快速安裝或卸載文件系統(tǒng)(如在SG數(shù)據包交換過程中),那么可以考慮使用較小的緩沖區(qū)高速緩存。
如果緩沖區(qū)高速緩存的配置過低,那么系統(tǒng)可能會不斷搜索可用的緩沖區(qū)。在大多數(shù)系統(tǒng)上應盡可能將緩沖區(qū)高速緩存配置為最低200MB。
最受益于大型高速緩存的應用往往是文件服務器,如NFS或web服務器,其中大量數(shù)據經常要被訪問到。一些不管理自身文件存取的數(shù)據庫應用也可能屬于這一類。請與您的應用廠商聯(lián)系,了解具體廠商的建議。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/12951/showart_113267.html |
|