[20210826]核心引數kernel.sem.txt
[20210826]核心引數kernel.sem.txt
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI
where
semmsl: The number of semaphores per set 每組訊號量
semmns: The total number of semaphores available 可用訊號量的總數
semopm: The number of operations which can be made per semaphore call 每個訊號量呼叫可以執行的運算元。
semmni: The maximum number of shared memory segments available in the system 系統中可用的最大共享記憶體段數
--//注:以上資訊出處我已經無法找到,不過semmni的解析應該不正確,這個引數的設定應該與訊號量相關,而不應該與最大共享記憶體段
--//有關係。
--//說句老實話,我對OS這方面知識瞭解很少,甚至不理解,安裝配置僅僅是照抄別人推薦的設定。
--//我記得我第一次安裝oracle 8i是在soalris伺服器,當時配置這些引數是就卡在那裡,不理解這些引數的具體含義,只能上新聞組問這
--//些問題。實際上你如果問現在許多安裝N多次oracle資料庫的人,基本也就是機械的copy and paste,具體表示什麼未必清楚。
--//首先轉抄連結:http://blog.itpub.net/26736162/viewspace-2147273/,並加入我對這些引數的理解。
重要的幾個引數如下所示:
kernel.shmall = 2097152
kernel.shmmax = 1054472192
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
其含義分別如下所示:
(一)kernel.shmall = 2097152
# kernel.shmall引數是控制共享記憶體頁數。Linux 共享記憶體頁大小為4KB,共享記憶體段的大小都是共享記憶體頁大小的整數倍。如果一個共
# 享記憶體段的最大大小是16G,那麼需要共享記憶體頁數是 16GB/4KB = 16777216KB/4KB = 4194304(頁),也就是64Bit系統下16GB實體記憶體
# ,設定kernel.shmall = 4194304才符合要求(幾乎是原來設定2097152的兩倍)。簡言之,該引數的值始終應該至少為:
# ceil(SHMMAX/PAGE_SIZE)。這個值太小有可能導致資料庫啟動報錯(ORA-27102: out of memory)。
(二)kernel.shmmax = 1054472192
# 定義一個記憶體段最大可以分配的記憶體空間,單位為位元組。如果定義太小,那麼會導致啟動例項失敗,或者SGA就會被分配到多個共享內
# 存段。那麼記憶體中的指標連線會給系統帶來一定的開銷,從而降低系統效能。這個值的設定應該大於SGA_MAX_TARGET或
# MEMORY_MAX_TARGET的值,最大值可以設定成大於或等於實際的實體記憶體。如果kernel.shmmax為100M,sga_max_size為500M,那麼啟動
# Oracle例項至少會分配5個共享記憶體段;如果設定kernel.shmmax為2G,sga_max_size為500M,那麼啟動Oracle例項只需要分配1個共享
# 記憶體段。
(三)kernel.shmmni = 4096
# 設定系統級最大共享記憶體段數量,該引數的預設值是4096。這一數值已經足夠,通常不需要更改。。
(四)kernel.sem = 250 32000 100 128
# 訊號燈的相關配置,訊號燈semaphores是程式或執行緒間訪問共享記憶體時提供同步的計數器。可以透過命令"cat /proc/sys/kernel/sem"
# 來檢視當前訊號燈的引數配置,如下所示:
# cat /proc/sys/kernel/sem
250 32000 100 128
其4個值的含義分別如下:
① 250表示SEMMSL,設定每個訊號燈組中訊號燈最大數量,推薦的最小值是250。對於系統中存在大量併發連線的系統,推薦將這個值設
置為PROCESSES初始化引數加10。
--// 實際上對於linux 設定為PROCESSES初始化引數加4就可以了。
② 32000表示SEMMNS,設定系統中訊號燈的最大數量。作業系統在分配訊號燈時不會超過LEAST(SEMMNS,SEMMSL*SEMMNI)。事實上,如果
SEMMNS的值超過了SEMMSL*SEMMNI是非法的,因此推薦SEMMNS的值就設定為SEMMSL*SEMMNI。Oracle推薦SEMMNS的設定不小於32000。
--//SEMMSL*SEMMNI=250*128 = 32000
③ 100表示SEMOPM,設定每次系統呼叫可以同時執行的最大訊號燈操作的數量。由於一個訊號燈組最多擁有SEMMSL個訊號燈,因此有推薦
將SEMOPM設定為SEMMSL的值。Oracle驗證的10.2和11.1的SEMOPM的配置為100。
④ 128表示SEMMNI,設定系統中訊號燈組的最大數量。Oracle10g和11g的推薦值為142。
--//一直也不理解小麥苗為什麼推薦設定142,不知道出處再那裡,對引數SEMMNI的解析是設定系統中訊號燈組的最大數量。也就是最大
--//有128訊號組,感覺這個解析比較正確。
--//補充我測試環境的設定:
$ cat /proc/sys/kernel/sem
2600 332800 2600 128
--//2600*128 = 332800
--//再次看了ipcs的文件,發現加入引數-ls 就可以檢視semaphore Limits。
$ ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 2600
max semaphores system wide = 332800
max ops per semop call = 2600
semaphore max value = 32767
--//kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI,很明顯解析如下:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI
where
SEMMSL max semaphores per array
SEMMNS max semaphores system wide ,SEMMSL*SEMMNI=2600*128 = 332800
SEMOPM max ops per semop call, SEMOPM=SEMMSL?
SEMMNI max number of arrays
--//SEM 表示 Semaphore.
--//我想透過一些測試說明以上問題,加深理解,太長另外寫一篇blog
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2789797/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 核心引數Oracle
- ORACLE核心引數Oracle
- 核心引數(轉)
- linux 核心引數Linux
- Linux核心引數Linux
- 談談ORACLE核心引數Oracle
- oracle核心引數意義Oracle
- 核心引數意義(轉)
- Linux核心引數以及Oracle引數調整(updated)LinuxOracle
- oracle rac 核心引數詳解Oracle
- Linux核心引數調優Linux
- linux核心啟動引數Linux
- Oracle和SUN Solaris核心引數Oracle
- Linux 核心引數 和 Oracle相關引數調整LinuxOracle
- Linux 核心引數及Oracle相關引數調整LinuxOracle
- (轉)Linux 核心引數及Oracle相關引數調整LinuxOracle
- histb 引導核心 boot_cmd 引數含義boot
- linux常用核心引數說明Linux
- swoole優化核心引數調整優化
- Yarn生產環境核心引數Yarn
- Linux 核心引數優化(for oracle)Linux優化Oracle
- LinuxSysctl調整核心引數Linux
- HP-UX調整核心引數UX
- HP-UX核心引數詳解UX
- Oracle和SUN Solaris核心引數(轉)Oracle
- [OS/Linux] Linux核心引數:net.core.somaxconn(高併發場景核心引數)Linux
- linux核心引數優化重要項Linux優化
- linux和aix核心引數檢查LinuxAI
- 在Solaris10上配置核心引數
- linux核心引數最佳化(七)Linux
- linux核心引數最佳化1Linux
- 系統核心引數 設定 systemv (ipc)
- AIX作業系統核心引數配置AI作業系統
- oracle相關的linux核心引數OracleLinux
- Linux核心引數(如kernel.shmmax)及Oracle相關引數調整LinuxHMMOracle
- linux核心命令列引數速查手冊Linux命令列
- Oracle中的sysctl.conf核心引數Oracle
- linux /proc/sys/vm下核心引數解析Linux