今天从IBM网站上找到了IPC的限制文档,很全的。记录在这里,以备后查。
操作系统:AIX
下表总结了 IPC 机制的信号量限制。
信号量 | 4.3.0 | 4.3.1 | 4.3.2 | 5.1 | 5.2 | 5.3 |
---|---|---|---|---|---|---|
32 位内核的信号量标识的最大数量 | 4096 | 4096 | 131072 | 131072 | 131072 | 131072 |
64 位内核的信号量标识的最大数量 | 4096 | 4096 | 131072 | 131072 | 131072 | 1048576 |
每个信号量标识的最大信号量 | 65535 | 65535 | 65535 | 65535 | 65535 | 65535 |
每个 semop 调用的最大操作数量 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 |
每个进程的最大撤销条目数量 | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 |
撤销结构的大小(B) | 8208 | 8208 | 8208 | 8208 | 8208 | 8208 |
信号量的最大值 | 32767 | 32767 | 32767 | 32767 | 32767 | 32767 |
退出时调整的最大值 | 16384 | 16384 | 16384 | 16384 | 16384 | 16384 |
下表总结了 IPC 机制的消息队列限制。
消息队列 | 4.3.0 | 4.3.1 | 4.3.2 | 5.1 | 5.2 | 5.3 |
---|---|---|---|---|---|---|
最大消息大小 | 4 MB | 4 MB | 4 MB | 4 MB | 4 MB | 4 MB |
队列上的最大字节数 | 4 MB | 4 MB | 4 MB | 4 MB | 4 MB | 4 MB |
32 位内核的消息队列标识的最大数量 | 4096 | 4096 | 131072 | 131072 | 131072 | 131072 |
64 位内核的消息队列标识的最大数量 | 4096 | 4096 | 131072 | 131072 | 131072 | 1048576 |
每个队列标识的最大消息数量 | 524288 | 524288 | 524288 | 524288 | 524288 | 524288 |
下表总结了 IPC 机制的共享内存限制。
共享内存 | 4.3.0 | 4.3.1 | 4.3.2 | 5.1 | 5.2 | 5.3 |
---|---|---|---|---|---|---|
段的最大大小(32 位进程) | 256 MB | 2 GB | 2 GB | 2 GB | 2 GB | 2 GB |
32 位内核的段的最大大小(64 位进程) | 256 MB | 2 GB | 2 GB | 64 GB | 1 TB | 1 TB |
64 位内核的段的最大大小(64 位进程) | 256 MB | 2 GB | 2 GB | 64 GB | 1 TB | 32 TB |
段的最小大小 | 1 | 1 | 1 | 1 | 1 | 1 |
共享内存标识的最大数量(32 位内核) | 4096 | 4096 | 131072 | 131072 | 131072 | 131072 |
共享内存标识的最大数量(64 位内核) | 4096 | 4096 | 131072 | 131072 | 131072 | 1048576 |
每个进程的段的最大数量(32 位进程) | 11 | 11 | 11 | 11 | 11 | 11 |
每个进程的段的最大数量(64 位进程) | 268435456 | 268435456 | 268435456 | 268435456 | 268435456 | 268435456 |
Linux内核参数 共享内存 限制的查看与设置
共享内存:
可以通过ipcs -lm命令查看目前系统共享内存的参数限制:
# ipcs -lm
—— Shared Memory Limits ——–
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (pages) = 2097152
min seg size (bytes) = 1
这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALL
SHMMAX
含义:单个共享内存段最大字节数
设置:比SGA略大
查看:cat /proc/sys/kernel/shmmax
$ cat /proc/sys/kernel/shmmax
1073741824
修改:
sysctl -w kernel.shmmax=1073741824
echo “kernel.shmmax=1073741824″ >> /etc/sysctl.conf
SHMMNI
含义:共享内存段最大个数
设置:至少4096
查看:cat /proc/sys/kernel/shmmni
# cat /proc/sys/kernel/shmmni
4096
修改:
# sysctl -w kernel.shmmni=4096
# echo “kernel.shmmni=4096″ >> /etc/sysctl.conf
SHMALL
含义:系统中共享内存页总数
设置:至少ceil(shmmax/PAGE_SIZE);ORACLE DOC 默认值:2097152*4096=8GB
查看:cat /proc/sys/kernel/shmall
$ getconf PAGE_SIZE
4096
# cat /proc/sys/kernel/shmall
2097152
修改:
# sysctl -w kernel.shmall=2097152
# echo “kernel.shmall=2097152″ >> /etc/sysctl.conf