对于 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