SysV IPC 包括 Semaphore、Shared Memory 和 Message Queue 這 3 類進(jìn)程間通信手段,雖然 POSIX.1-2001 實(shí)時(shí)接口標(biāo)準(zhǔn)規(guī)定了另一套提供相同手段但更一致化的接口(POSIX IPC),但 SysV IPC 仍然有相當(dāng)數(shù)量的用戶。
通過調(diào)整一些內(nèi)核參數(shù),可以更改 SysV IPC 對(duì)數(shù)據(jù)的固有限制,相關(guān)參數(shù)對(duì)應(yīng)的控制文件可在 /proc/sys/kernel/
目錄下找到,也可以通過 sysctl 更改,現(xiàn)羅列如下:
控制文件路徑 | 內(nèi)核參數(shù)(通過 sysctl 更改時(shí)使用) | 含義 |
/proc/sys/kernel/shmmax | kernel.shmmax | 共享內(nèi)存中最大內(nèi)存塊尺寸(byte),默認(rèn)為 33554432,即 32MB |
/proc/sys/kernel/shmall | kernel.shmall | 整個(gè)系統(tǒng)中共享內(nèi)存的最大尺寸,以頁(yè)(4KB)為單位,默認(rèn)為 2097152,即 2M 個(gè)頁(yè),共計(jì) 8GB |
/proc/sys/kernel/shmmni | kernel.shmmni | 整個(gè)系統(tǒng)中共享內(nèi)存塊的最大數(shù)量,默認(rèn)為 4096 |
/proc/sys/kernel/msgmax | kernel.msgmax | 消息隊(duì)列中單條消息的最大尺寸(byte),默認(rèn)為 8192 |
/proc/sys/kernel/msgmnb | kernel.msgmnb | 默認(rèn)的每個(gè)消息隊(duì)列的最大尺寸(byte),默認(rèn)為 16384 |
/proc/sys/kernel/msgmni | kernel.msgmni | 整個(gè)系統(tǒng)中消息隊(duì)列的最大數(shù)量,默認(rèn)為 16 |
/proc/sys/kernel/sem | kernel.sem | 信號(hào)量的 4 個(gè)控制參數(shù),從前向后分別是: 1. 單個(gè)信號(hào)量集合中容納的最大信號(hào)量數(shù)量,默認(rèn)為 250 2. 整個(gè)系統(tǒng)中信號(hào)量的最大數(shù)量,默認(rèn)為 32000 3. 每個(gè) semop 調(diào)用中允許的最大操作數(shù)量,默認(rèn)為 32 4. 整個(gè)系統(tǒng)中信號(hào)量集合的最大數(shù)量,默認(rèn)為 128 |
以上參數(shù)及含義都可以從 linux kernel 源碼樹的 SRCROOT/ipc/
子目錄下 SysV IPC 對(duì)應(yīng)的實(shí)現(xiàn)文件中找到,其相關(guān)宏定義在 SRCROOT/include/linux/
子目錄下的相關(guān)頭文件中。
聯(lián)系客服