DB2V9 Linux安装第一步——修改内核参数

修改内核参数(Linux)

在安装 DB2数据库系统之前,应更新 Linux内核参数。当运行 DB2 数据库系统时,Linux 上特殊内核参数的缺省值可能不能满足要求。在必要的地方,DB2 将根据 DB2 数据库系统的需要,自动提高 IPC 限制。然而,如果有 DB2 数据库系统之外的产品或应用程序,则在 Linux 系统上永久地设置限制可能更实际。

先决条件

必须具有 root 用户权限才能修改内核参数。

过程

要更新内核参数:

Red Hat 和 SUSE Linux
以下信息可以用来确定是否需要对系统进行任何更改。

 

以下是 ipcs -l 命令的输出。在 // 后面添加了注释以指出参数名。

# 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

从关于 Shared Memory Limits 的第一部分开始,SHMMAX 和 SHMALL 就是需要考虑的参数。SHMMAX 是 Linux 系统上共享内存段的最大大小,而 SHMALL 是系统上可分配的共享内存页的最大大小。

对于 SHMMAX,x86 系统上需要的最小值为 268435456(256 MB),而在 64 位系统上,该值将为 1073741824(1 GB)。

缺省情况下,SHMALL 设置为 8 GB(8388608 KB = 8 GB)。如果您具有的物理内存超过该值,并且要将这些物理内存用于 DB2,则应将此参数增大为大约是对您的计算机所指定的物理内存的 90%。例如,假定一个计算机系统上有 16 GB 内存,并将这些内存主要用于 DB2,则 16 GB 的 90% 为 14.4 GB,将 14.4 GB 除以 4 KB(这是基页大小)得到的结果为 3774873。IPCS 输出已将 SHMALL 转换为千字节(KB)。这是因为内核需要将此值作为页数。

下一节说明了可用于操作系统的信号量。内核参数 sem 由以下四个标记组成:SEMMSL、SEMMNS、SEMOPM 和 SEMMNI。SEMMNS 是 SEMMSL 乘以 SEMMNI 的结果。数据库管理器要求根据需要增大数组的数目(SEMMNI)。典型地,SEMMNI 应两倍于允许的最大连接数(MAXAGENTS)乘以数据库服务器计算机上的逻辑分区数再加上数据库服务器计算机上的本地应用程序连接数。

第三部分说明了系统上的消息。

MSGMNI 将影响可以启动的代理进程数,MSGMAX 将影响一个队列中可以发送的消息大小,而 MSGMNB 将影响队列大小。

在服务器系统上,应将 MSGMAX 更改为 64 KB(即,65535 个字节),MSGMNB 应增大为 65535。

要修改这些内核参数,需要编辑 /etc/sysctl.conf 文件。如果此文件不存在,则应创建它。下列各行是该文件中应包含的内容的示例:

kernel.sem=250 256000 32 1024

#示例:用于 64 位系统的 shmmax

kernel.shmmax=1073741824

#示例:用于 16 GB 内存的 90% 的 shmall

kernel.shmall=3774873

kernel.msgmax=65535

kernel.msgmnb=65535

运行 sysctl 时附带 -p 参数,以从缺省文件 /etc/sysctl.conf 中装入 sysctl 设置(目的是使修改马上生效)。

sysctl -p

要使更改在每次重新引导之后生效,boot.sysctl 在 SUSE Linux 上必须是活动的(执行该命令,重新启动系统后也会生效:chkconfig boot.sysctl on)。在 Red Hat 上,rc.sysinit 初始化脚本将自动读取 /etc/sysctl.conf 文件(不用执行任何命令,重新启动系统后也会生效)。

          我安装DB2时,内核参数修改如下:

          kernel.sem=250 256000 32 1024
                 #示例:512M的 shmmax(修改时换算为字节:536870912)

          kernel.shmmax=536870912

          #示例:1 GB 的 shmall(修改时换算为页数,基页大小为4K:262144)

          kernel.shmall=262144
                 kernel.msgmax=65535

          kernel.msgmnb=65535

     

获取Linux 内存页(基页)大小的命令:getconf PAGE_SIZE ,一般的输出是4096,即 4KB。

你可能感兴趣的:(linux,数据库,db2,Semaphore,数据库服务器,linux内核)