onconfig中對CPU 記憶體的利用率影響的引數
Online 配置檔案onconfig中的下列引數對CPU的利用率有明顯的影響
• NUMCPUVPS
• SINGLE_CPU_VP
• MULTIPROCESSOR
• AFF_NPROCS
• AFF_SPROC
• NUMAIOVPS
• OPTCOMPAND
• NETTYPE
NUMCPUVPS、MULTIPROCESSOR和SINGL_CPU_VP
NUMCPUVPS引數規定了Online 開始啟動的CPU VP的數量。分配的CPU VP的個數不要超過可以為它們服務的CPU的個數。
• 對於單處理器的計算機系統,Informix 建議使用一個CPU VP。
• 對於有4個以上CPU,主要用做資料庫伺服器的多處理器系統,Informix 建議設定NUMCPUVPS的值等於處理器總數減一。
• 對於雙處理器系統,執行兩個CPU VP可能會改善效能。這需要監控作業系統的CPU使用情況。可以使用作業系統命令sar 或 vmstat。
如果執行多個CPU VP,應將MULTIPROCESSOR 設定為1,當設定MULTIPROCESSOR為1時, Online 以對應於多處理器的方式執行鎖定。否則,設定該引數為0。
注意:如果設定SINGLE_CPU_VP引數為,則NUMCPUVPS 引數的值也必須是1,如果後者大於1,Online就不能初始化並顯示下面的錯誤資訊: Cannot have 'SINGLE_CPU_VP' now-zero and 'NUMCPUVPS' greater than 1
AFF_NPROCS 和 AFF_SPROC
在支援Online和客戶應用的系統上,可以透過作業系統把應用連線到某些特定的CPU。這樣做可以有效地保留剩餘的CPU給Online CPU VP使用,它們是用AFF--NPROCES和AFF_SPROC配置引數連線到剩餘CPU的。
AFF_NPROCS指定了連線到Online的CPU VP上的CPU的個數。連線一個CPU VP到一個CPU 會引起該CPU VP在這個CPU上的排它性執行。AFF_SPROC指定了Online把CPU VP連線到CPU上時所啟動的CPU。
AFF_NPROCS規定了計算機上可以幫定CPU VP的CPU的數目。NUMCPUVPS引數指定了 Online將啟動的CPU VP的數目,AFF_SPROC引數指定了Online連線第一個CPU序號。例如,某個Online 系統所在的硬體平臺有8個CPU,AFF_NPROCS設定為8(即可用於幫定CPU VP的CPU有8個),NUMCPUVPS設定為3,AFF_SPROC設定為5,則3個CPU VP需要幫定到CPU上,是從第五個CPU開始,幫定到第五、六、七個CPU上。需要注意的是,AFF_SPROC的取值是在0和(AFF_NPROCS - NUMCPUVPS + 1)這兩個值之間的,不能大於後者。
NUMAIOVPS
引數NUMAIOVPS指定最初產生的AIO VP的數目。如果所在的作業系統不支援核心非同步I/O(KAIO),Online使用AIP VP來處理所有資料庫I/O請求。
推薦的AIP VP數目取決於Online 使用的硬碟個數。如果所在作業系統不支援或沒有使用KAIO,則Informix建議對包含資料庫表的每一個磁碟分配一個AIO VP。可以對Online 頻繁訪問的每六塊增加額外的AIO VP。如果所在的作業系統使用KAIO VP,CPU VP將直接向作業系統發出原始的I/O請求。在這種情況下,可以只配置一個AIO VP,此時AIO VP只處理檔案系統方式的chunk。如果檔案系統方式的chunk有增加時,可以增大AIO VP的數目。
分配AIO VP的目的是要分配足夠的AIO VP以便I/O請求佇列的長度保持很短,即佇列中保持儘可能少的I/O請求。
OPTCOMPIND
OPTCOMPIND引數幫助最佳化程式為應用選擇合適的訪問方法。
• 如果OPTCOMPIND等於0,最佳化程式給予現存索引優先權,即使在表掃描比較快時。
• 如果OPTCOMPIND設定為1,給定查詢的隔離級設定為Repeatable Read時,最佳化程式才使用索引。
• 如果OPTCOMPIND等於2,最佳化程式選擇基於開銷選擇查詢方式。,即使表掃描可以臨時鎖定整個表。
NETTYPE
NETTYPE引數為Online例項支援的每個連線型別配置輪詢線索。如果sqlhosts檔案中支援一個以上的介面或協議的連線,就必須對每個連線型別規定獨立的NETTYPE引數。每個與資料庫伺服器名字有關的連線型別都需要單獨指定一個NETTYPE引數。
每個用NETTYPE表項配置或動態加入的輪詢線索在不同的VP上執行,輪詢線索可以在兩類VP上執行:NET VP和CPU VP。為得到最佳效能,Informix建議使用NETTYPE表項為CPU VP類只分配一個輪詢線索,將其餘輪詢線索輪詢線索分配給NET VP。分配給任何一種連線型別的輪詢線索不得超過NUMCPUVPS的取值。
單CPU計算機上每個輪詢線索的最佳連線個數不超過300,多CPU機上可多達350個。但一個輪詢線索最多支援1,024甚至更多的連線。NETTYPE的配置格式如下:
NETTYPE connection_type,poll_threads,c_per_t,vp_class
• connection_type 標識輪詢線索分配的連線協議。
• poll_threads 是分配給該連線型別的輪詢線索數目。對任何連線型別,這個值不能超過NUMCPUVPS值。
• c_per_t 是每個輪詢線索的連線數目。可以用如下公式計算這個值:
c_per_t = connections / poll_threads
connections 是所希望指定的連線型別支援的最大連線數。對於共享記憶體連線(ipcshm),該值應該加倍以獲得最好的效能。
• vp_class 是可執行輪詢線索的VP類。如果CPU VP上只執行一個輪詢線索,那麼指定為CPU VP。為了達到最好效能,當要求多個輪詢線索時應該指定為NET VP。
如果c_per_t的值超過了350,而當前連線的輪詢線索數小於NUMCPUVPS,可以增加輪詢線索數目,但不能超過NUMCPUVPS,然後重新計算c_per_t的取值。
注意:每個ipcshm連線需要一個訊號量。當c_per_t的值很大時,對於某些作業系統要相應增加訊號量。
如何監控系統CPU的使用情況
1. 使用UNIX的監控工具sar或vmstat來監控CPU的使用情況。例:sar 5 10
%usr %sys %wio %idle
10:06:22 34 1 0 65
10:06:27 34 2 0 64
10:06:32 34 1 0 65
10:06:37 17 1 0 82
10:06:47 1 1 0 98
連續監控%idle來確認CPU沒有超載。如果%sys的值很大則可能應用有問題。
2. 監控CPU vp的方法
onstat -g glo
Individual virtual processors:
vp pid class usercpu syscpu total
可以透過該監控看出CPU忙佔用的時間(隔60秒分別監控結果)。如果非常忙,則需要增加CPU VP。
onstat -g rea
Ready threads
tid tcb rstcb prty status vp-class name
如果有大量的線索在等待佇列中,則說明需要增加CPU VP。
影響記憶體使用效率的Online配置引數
• SHMVIRTSIZE
• SHMADD
• BUFFERS
• RESIDENT
• STACKSIZE
• LOCKS
• LOGBUFF
• PHYSBUFF
SHMVIRSIZE
SHMVIRTSIZE引數規定了初始分配給Online的共享記憶體的虛擬區的大小。共享儲存器的虛擬區儲存與會話、請求有關的資料及其它資訊。雖然Online按處理大型查詢或高峰負荷的需要增加共享記憶體給虛擬區,但共享記憶體的分配增加事務處理的時間,Informix建議設定SHMVIRTSIZE以提供一個滿足一般日常操作需要的虛擬介面。
SHMADD
SHMADD引數規定Online自動加到虛擬區的共享記憶體增量的大小。在決定該值的大小時有些折中因素。增加共享記憶體要佔用CPU週期:每次的增加量越大,增加次數就越少,留給其它的程式的記憶體也越少。通常採用大增加量,但當記憶體負荷很重時,少量增加使其他程式更好的共享記憶體資源。Informix 有如下建議:
記憶體大小 SHMADD
<=256MB 8192KB(default)
256--512MB 16,384KB
>=512 32,768KB
BUFFERS
BUFFERS是可以用於Online的資料緩衝區數。這些緩衝區駐留在駐留區,用來快取主存中的資料庫的資料頁。可用的緩衝區越多,所需的資料頁就越可能用於前一次請求而已經在記憶體裡。這個引數對資料庫I/O和事務處理吞吐量有明顯的影響。但是,分配過多的緩衝區會影響記憶體系統並導致過多的頁面活動。
Informix建議設定BUFFERS為實體記憶體(以MB為單位)的20%到25%。實際BUFFERS的單位為頁,不同作業系統的頁大小是不同的,因此需要計算。使用onstat -p監控讀快取的頻率。這個頻率代表一個查詢請求的資料庫頁已經在共享記憶體裡的百分比。(還沒有存在的頁必須從磁碟複製到記憶體中)。如果此值很低,可增加BUFFERS並重新啟動Online。在增加BUFFERS值時,到達某一點後,增加BUFFERS也不再明顯改善讀快取的頻率,或者達到作業系統共享記憶體分配的上限。 如果讀快取記憶體的比率很高,則應下調BUFFERS並重啟動Online。
RESIDENT
RESIDENT 引數規定是否強制共享記憶體駐留作為Online共享記憶體駐留區。這個引數只對支援強制駐留的機器有效。Online中的駐留區,包含用於資料庫讀寫作業的LRU佇列。
LOCKS
引數LOCKS設定任意時刻可用的鎖的最大數量。Online中每個鎖需要佔用駐留區段的44個位元組,分配共享記憶體時要考慮鎖所用的資源。一般鎖可以分配的大些,對應用比較忙的系統可以到800萬以上。
LOGBUFF
引數LOGBUFF指定為三個用來儲存邏輯日誌記錄的緩衝區分別保留的共享記憶體的數量。這些緩衝區儲存著邏輯日誌記錄,直到它們被重新整理到硬碟上的邏輯日誌檔案。緩衝區的大小決定了它被添滿的頻率,從而決定了它必須被重新整理到硬碟上的邏輯檔案中的頻率。
PHYSBUFF
引數PHYSBUFF指定為兩個用來暫時儲存將被修改的資料頁的緩衝區分別保留的共享記憶體的數量。緩衝區的大小決定了它被添滿的頻率,從而也決定了它被寫到硬碟上的物理日誌的頻率。
如何監控記憶體使用情況
1. 使用onstat -g seg命令監控共享記憶體的segments。
onstat -g seg
Segment Summary
(resident segments are not locked)
id key addr size ovhd class blkused blkfree
這裡三行分別代表了駐留記憶體段(class為R)、虛擬記憶體段(class為V)、訊息記憶體段(class為M)。blkused和blkfree 分別代表使用空間和空閒空間。如果虛擬記憶體段的blkused 頻繁增加,則需要將SHMVIRTSIZE和SHMADD相應調大,調整後重新啟動Online。
2. 使用onstat -p
1)ovlock指出分配的locks的不足量,如果該值持續增長,則需要增大引數 LOCKS的值。
2)ovbuf指出分配的buffers的不足量,如果該值持續增長,則需要增大引數 BUFFERS的值。
3)lockwaits/lockreqs * 100應該小於1%,如果這個計算值比較高,則應有如下考慮:
a. 是否用了太多的page level locks。如果是,可以考慮用row level locks。
b. 考慮用了table level lock的應用是否可以用其它型別的lock。
c. 是否有太多的isolation設定為Repeatable Read 和Cursor Stability。確定是否可以使用更多的Dirty Read來替代。
4)bufreads %cached的值指出buffer讀的百分比,該值建議大於95%,否則增大BUFFERS,bufwrits %cached的值指出buffer寫的百分比,該值建議大於85%,但太大如大於97%則可以將BUFFERS 相應減少些。
影響I/O的配置引數
• CKPTINTVL
• PHYSFILE
• CLEANERS
• LRUS
• LRU_MAX_DIRTY
• LRU_MIN_DIRTY
CKPINTVL,PHYSFILE
CKPINTVL引數指定檢查點之間的時間間隔。當檢查點間隔到了,則系統執行檢查點操作。但如果這期間的所有資料物理上是一致的,Online可以跳過檢查點操作。另外,一旦物理日誌(PHYSFILE)的75%已滿,檢查點也會發生。透過設定CKPTINTVL為長時間間隔,可以利用物理日誌容量來觸發基於實際資料庫活動而不是任意時間單位的檢查點操作。但是,使用長檢查點間隔回增加失敗事件之後的恢復時間。
LRUS、LRU_MAX_DIRTY和LRU_MIN_DIRTY
LRUS引數指示共享記憶體緩衝池中設定的最近最少使用(LRU)佇列數目。配置較多的LRU佇列將允許有更多的頁清除器操作,並減少每個LRU佇列的大小。對於單CPU系統,Informix建議設定LRUS引數為最小值4。對於多CPU系統,Informix建議設定LRUS為最小值4和NUMCPUVPS的取值之中較大的一個。
可以用LRUS和LRU_MAX_DIRTY及LRU_MIN_DIRTY來控制在滿的檢查點之間頁被重新整理到磁碟的頻度。在某些情況下,透過設定這些引數,使得在檢查點發生時需要重新整理的修改的頁數量很少,可以達到高的吞吐量;這樣,檢查點的主要功能是更新物理日誌和邏輯日誌檔案。
CLEANERS
CLEANERS引數指定執行的頁清除線索的數目。對於少於20磁碟的系統,Informix推薦CLEANERS的取值為磁碟的個數。對於20至100的磁碟的系統,Informix推薦每兩個磁碟分配一個CLEANERS。對於更多的磁碟系統,Informix推薦每四個磁碟分配一個CLEANERS。
如何監控系統的I/O情況
使用onstat -g ioq,onstat -g iof, onstat -d 監控磁碟的負載情況:
onstat -g ioq
AIO I/O queues:
class/hvp-id len maxlen totalops dskread dskwrite dskcopy
如果aio佇列很大,則可增加一個AIO VP。如果某些class 為gfd 所對應的len 和maxlen 非常大,則需要考慮你的資料分佈是否合理,記住這些gfd 所對應的hvp-id的值,再透過onstat -g iof 查出是那幾個裝置,
onstat -g iof gfd pathname totalops dskread dskwriteio/s
這裡gfd的值等於onstat -g ioq 中那幾個hvp-id的值所對應的pathname就是I/O負載較大的裝置。用onstat -d可確定是哪個dbspace。則可以考慮重新分配磁碟或給表分片。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11134849/viewspace-733677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- max_connections引數對mysql初始化記憶體的影響MySql記憶體
- 記憶體故障對電腦的影響記憶體
- 虛擬記憶體對 OI 的影響記憶體
- 雙下劃線開頭的記憶體引數對Oracle AMM行為的影響記憶體Oracle
- JavaScript 事件對記憶體和效能的影響JavaScript事件記憶體
- ASP中函式呼叫對引數的影響 (轉)函式
- mysql中CPU或記憶體利用率過高問題MySql記憶體
- db_files對於oracle使用記憶體的影響Oracle記憶體
- JVM 引數調整對 sortx 的影響JVM
- oracle實驗記錄 (predicate對cpu cost的影響)Oracle
- 從 CPU 角度理解 Go 中的結構體記憶體對齊Go結構體記憶體
- table_open_cache引數對mysql效能的影響MySql
- 瞭解 ignore_above 引數對 Elasticsearch 中磁碟使用的影響Elasticsearch
- JDBC記憶體管理—varchar2(4000)的影響JDBC記憶體
- Kafka之acks引數對訊息持久化的影響Kafka持久化
- Oracle exp中compress引數的影響測試Oracle
- innodb的幾個記憶體引數記憶體
- 在K8s中調整JVM提高CPU和記憶體利用率 - AnuragK8SJVM記憶體
- Oracle 10g中,記憶體引數Oracle 10g記憶體
- 【原創】ARM平臺記憶體和cache對xenomai實時性的影響記憶體AI
- hashCode竟然不是根據物件記憶體地址生成的?還對記憶體洩漏與偏向鎖有影響?物件記憶體
- linux下的記憶體共享引數Linux記憶體
- mysql用於分配記憶體的引數MySql記憶體
- JVM記憶體引數配置JVM記憶體
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- MySQL:slave_skip_errors引數對MGR可用性的影響MySqlError
- 11g MEMORY_TARGET 引數對SGA 和PGA的影響
- 11g MEMORY_TARGET 引數對SGA 和PGA的影響
- 記憶體屏障在CPU、JVM、JDK中的實現記憶體JVMJDK
- 方法(函式)中傳入的引數有新的記憶體地址函式記憶體
- 關於RAC每個節點更改對應的記憶體引數記憶體
- Java教程:影響MySQL效能的配置引數JavaMySql
- jvm的記憶體引數配置(skycto JEEditor)JVM記憶體
- 【CDB】怎樣修改PDB的記憶體引數記憶體
- 各平臺影響oracle Process數的引數(轉)Oracle
- AIX 5L 記憶體效能優化,第 1 部分: AIX Version 5.3 中記憶體的概述以及記憶體引數的優化AI記憶體優化
- HDU4920 Matrix multiplication (CPU cache對程式的影響)
- Oracle記憶體引數調優Oracle記憶體