對於 root 用戶安裝,數據庫管理器使用公式來自動調整內核參數設置,從而再也不須要手動更新這些設置。html
必須具備 root 用戶權限才能修改內核參數。數據庫
要在 Red Hat 和 SUSE Linux 上更新內核參數:服務器
運行 ipcs -l 命令以列示當前的內核參數設置。ide
分析命令輸出,以經過將當前值與下表中的最低加強設置比較來肯定是否必須更改內核設置。性能
IPC 內核參數 | 最低加強設置 |
---|---|
kernel.shmmni (SHMMNI) | 256 * <RAM 大小,以 GB 計> |
kernel.shmmax (SHMMAX) | <RAM 大小,以字節計>1 |
kernel.shmall (SHMALL) | 2* <缺省系統頁大小中的 RAM 大小 >2 |
kernel.sem (SEMMNI) | 256 * <RAM 大小,以 GB 計> |
kernel.sem (SEMMSL) | 250 |
kernel.sem (SEMMNS) | 256 000 |
kernel.sem (SEMOPM) | 32 |
kernel.msgmni (MSGMNI) | 1 024 * <RAM 大小,以 GB 計> |
kernel.msgmax (MSGMAX) | 65 536 |
kernel.msgmnb (MSGMNB) | 65 536 3 |
下列文本是 ipcs 命令輸出的示例,註釋添加在 // 後面以顯示參數名稱:spa
# ipcs -l ------ Shared Memory Limits -------- max number of segments = 4096 // SHMMNI max seg size (kbytes) = 32768 // SHMMAX max total shared memory (kbytes) = 8388608 // SHMALL min seg size (bytes) = 1 ------ Semaphore Limits -------- max number of arrays = 1024 // SEMMNI max semaphores per array = 250 // SEMMSL max semaphores system wide = 256000 // SEMMNS max ops per semop call = 32 // SEMOPM semaphore max value = 32767 ------ Messages: Limits -------- max queues system wide = 1024 // MSGMNI max size of message (bytes) = 65536 // MSGMAX default max size of queue (bytes) = 65536 // MSGMNB
MSGMNI 參數將影響能夠啓動的代理程序數;MSGMAX 參數將影響隊列中能夠發送的消息的大小,MSGMNB 參數將影響隊列的大小。操作系統
應該將 MSGMAX 參數更改成 64 KB(即,65536 個字節),而且應該將 MSGMNB 增大到 65536。代理
建議將 SHMMAX 值設置爲等於系統上的物理內存量。然而,x86 系統上須要的最小內存量爲 268435456 (256 MB),對於 64 位系統,須要的最小內存量爲 1073741824 (1 GB)。code
從有關「共享內存限制」的第一部分開始,SHMMAX 限制是 Linux 系統上共享內存段的最大大小。SHMALL 限制是系統上共享內存頁的最大分配。orm
下一部分包括可用於操做系統的信號量。內核參數 sem 由如下四個標記組成:SEMMSL、SEMMNS、SEMOPM 和 SEMMNI。SEMMNS 是 SEMMSL 乘以 SEMMNI 的結果。數據庫管理器要求在必要時增大陣列數 (SEMMNI)。一般狀況下,SEMMNI 應該是系統上須要的最大代理程序數乘以數據庫服務器計算機上的邏輯分區數再加上數據庫服務器計算機上的本地應用程序鏈接數的和的兩倍。
第三部分包括系統上的消息。
在 32 位 Linux 操做系統上,SHMMAX 的最低加強設置限制爲 4,294, 967,295 個字節。
SHMALL 限制在系統上可分配的虛擬共享內存總量。每一個 DB2 數據服務器有效地管理其使用的系統內存量(也稱爲已落實內存)。DB2 數據服務器會分配比其落實的內存更大的虛擬內存,以支持內存預分配和動態內存管理。內存預分配可提升性能。動態內存管理是增長或減小單獨虛擬共享內存區域中的真實內存使用的過程。爲了有效地支持內存預分配和動態內存管理,數據服務器經常必須在系統上分配大於物理 RAM 量的虛擬共享內存。內核須要此值做爲頁數。
負載性能可從更大的消息隊列大小(由 MSGMNB 指定,以字節計)限制獲益。可經過運行 ipcs -q 命令查看消息隊列使用狀況。若是在裝入操做期間,消息隊列達到或接近容量,請考慮增大消息隊列大小限制的字節數。
經過編輯 /etc/sysctl.conf 文件來修改必須調整的內核參數。若是此文件不存在,那麼應建立它。 下列各行是該文件中應包含的內容的示例:
#Example for a computer with 16GB of RAM: kernel.shmmni=4096 kernel.shmmax=17179869184 kernel.shmall=8388608 #kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI> kernel.sem=250 1024000 32 4096 kernel.msgmni=16384 kernel.msgmax=65536 kernel.msgmnb=65536運行 sysctl 時附帶 -p 參數,以從缺省文件 /etc/sysctl.conf 中裝入 sysctl 設置: sysctl -p可選: 使更改在每次從新引導以後仍然有效:
(SUSE Linux) 激活 boot.sysctl。
(Red Hat) rc.sysinit 初始化腳本將自動讀取 /etc/sysctl.conf 文件。
本文來自:https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.1.0/com.ibm.db2.luw.qb.server.doc/doc/t0008238.html