[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
- [OS/Linux] Linux核心引數:net.core.somaxconn(高併發場景核心引數)Linux
- oracle rac 核心引數詳解Oracle
- linux常用核心引數說明Linux
- histb 引導核心 boot_cmd 引數含義boot
- Yarn生產環境核心引數Yarn
- linux核心引數優化重要項Linux優化
- swoole優化核心引數調整優化
- Oracle中的sysctl.conf核心引數Oracle
- 在Linux中,linux核心引數如何修改?Linux
- 認識Tomcat核心元件及其啟動引數Tomcat元件
- 大資料叢集核心引數調優大資料
- 核心引數kernel.shmall和kernel.shmmaxHMM
- CentOS升級核心與容器執行時核心引數的關係CentOS
- Guava Cache:核心引數深度剖析和原始碼分析Guava原始碼
- Linux核心引數overcommit_memory和OOM killer介紹LinuxMITOOM
- Linux 核心引數 arp_ignore & arp_announce 詳解Linux
- 如何在 Fedora 30 中設定核心命令列引數命令列
- Linux核心版本以及部分引數與效能之二Linux
- 【轉載】Linux核心除錯之使用模組引數Linux除錯
- 大資料學習—Kafka的核心調優引數大資料Kafka
- 【kernel】從 /proc/sys/net/ipv4/ip_forward 引數看如何玩轉 procfs 核心引數Forward
- DBA不可不知的作業系統核心引數作業系統
- Oracle 效能最佳化之核心的shmall 和shmmax 引數OracleHMM
- 用好語言模型:temperature、top-p等核心引數解析模型
- solaris10中安裝oracle核心引數的調整Oracle
- Nginx配置和Linux核心引數的學習與驗證NginxLinux
- 通過原始碼理解 Java 執行緒池的核心引數原始碼Java執行緒
- [轉帖]Redis相關的核心引數解釋與設定Redis
- 什麼是請求引數、表單引數、url引數、header引數、Cookie引數?一文講懂HeaderCookie
- DIY 實現 ThinkPHP 核心框架 (十三)利用反射實現引數繫結PHP框架反射
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- c++11-17 模板核心知識(五)—— 理解模板引數推導規則C++
- c++11-17 模板核心知識(十二)—— 模板的模板引數 Template Template ParametersC++
- Java對比有引數和無引數Java
- 引數配置
- python引數Python