一、前言 本文档针对OOP8生产环境,具体优化策略需要根据实际情况进行调整;本文档将在以下几个方面来阐述如何针对RedHat Enterprise Linux进行性能优化。 1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的。 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断。 加粗斜体表示可以直接运行的命令。 下划线表示文件的内容。 二、/proc/sys/kernel/优化 1) /proc/sys/kernel/ctrl-alt-del 该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应。这两个值分别是: 零(0)值,表示捕获ctrl+alt+delete,并将其送至 init 程序;这将允许系统可以安全地关闭和重启,就好象输入shutdown命令一样。 壹(1)值,表示不捕获ctrl+alt+delete,将执行非正常的关闭,就好象直接关闭电源一样。
缺省设置:0 建议设置:1,防止意外按下ctrl+alt+delete导致系统非正常重启。 2) proc/sys/kernel/msgmax 该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes)。进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。
缺省设置:8192 3) /proc/sys/kernel/msgmnb 该文件指定一个消息队列的最大长度(bytes)。
缺省设置:16384 4) /proc/sys/kernel/msgmni 该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。
缺省设置:16 5) /proc/sys/kernel/panic 该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位)。 零(0)秒,表示在发生内核严重错误时将禁止自动重新引导。
缺省设置:0 6) proc/sys/kernel/shmall 该文件表示在任何给定时刻,系统上可以使用的共享内存的总量(bytes)。
缺省设置:2097152 7) /proc/sys/kernel/shmmax 该文件表示内核所允许的最大共享内存段的大小(bytes)。
缺省设置:33554432 建议设置:物理内存 * 50%
实际可用最大共享内存段大小=shmmax * 98%,其中大约2%用于共享内存结构。 可以通过设置shmmax,然后执行ipcs -l来验证。 8) /proc/sys/kernel/shmmni 该文件表示用于整个系统的共享内存段的最大数目(个)。
缺省设置:4096 9) /proc/sys/kernel/threads-max 该文件表示内核所能使用的线程的最大数目。
缺省设置:2048 10) /proc/sys/kernel/sem 该文件用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法。
建议设置:250 32000 100 128 第一列,表示每个信号集中的最大信号量数目。 第二列,表示系统范围内的最大信号量总数目。 第三列,表示每个信号发生时的最大系统操作数目。 第四列,表示系统范围内的最大信号集总数目。 所以,(第一列)*(第四列)=(第二列)
以上设置,可以通过执行ipcs -l来验证。 11) 待续。。。 三、/proc/sys/vm/优化 1) /proc/sys/vm/block_dump 该文件表示是否打开Block Debug模式,用于记录所有的读写及Dirty Block写回动作。
缺省设置:0,禁用Block Debug模式 2) /proc/sys/vm/dirty_background_ratio 该文件表示脏数据到达系统整体内存的百分比,此时触发pdflush进程把脏数据写回磁盘。
缺省设置:10 3) /proc/sys/vm/dirty_expire_centisecs 该文件表示如果脏数据在内存中驻留时间超过该值,pdflush进程在下一次将把这些数据写回磁盘。
缺省设置:3000(1/100秒) 4) /proc/sys/vm/dirty_ratio 该文件表示如果进程产生的脏数据到达系统整体内存的百分比,此时进程自行把脏数据写回磁盘。
缺省设置:40 5) /proc/sys/vm/dirty_writeback_centisecs 该文件表示pdflush进程周期性间隔多久把脏数据写回磁盘。
缺省设置:500(1/100秒) 6) /proc/sys/vm/vfs_cache_pressure 该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。
缺省设置:100 7) /proc/sys/vm/min_free_kbytes 该文件表示强制Linux VM最低保留多少空闲内存(Kbytes)。
缺省设置:724(512M物理内存) 8) /proc/sys/vm/nr_pdflush_threads 该文件表示当前正在运行的pdflush进程数量,在I/O负载高的情况下,内核会自动增加更多的pdflush进程。
缺省设置:2(只读) 9) /proc/sys/vm/overcommit_memory 该文件指定了内核针对内存分配的策略,其值可以是0、1、2。 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存(参照overcommit_ratio)。
缺省设置:0 10) /proc/sys/vm/overcommit_ratio 该文件表示,如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。 系统可分配内存=交换空间+物理内存*overcommit_ratio/100
缺省设置:50(%) 11) /proc/sys/vm/page-cluster 该文件表示在写一次到swap区的时候写入的页面数量,0表示1页,1表示2页,2表示4页。
缺省设置:3(2的3次方,8页) 12) /proc/sys/vm/swapiness 该文件表示系统进行交换行为的程度,数值(0-100)越高,越可能发生磁盘交换。
缺省设置:60 13) legacy_va_layout 该文件表示是否使用最新的32位共享内存mmap()系统调用,Linux支持的共享内存分配方式包括mmap(),Posix,System VIPC。 0, 使用最新32位mmap()系统调用。 1, 使用2.4内核提供的系统调用。
缺省设置:0 14) nr_hugepages 该文件表示系统保留的hugetlb页数。 15) hugetlb_shm_group 该文件表示允许使用hugetlb页创建System VIPC共享内存段的系统组ID。 16) 待续。。。 四、/proc/sys/fs/优化 1) /proc/sys/fs/file-max 该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开 文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。
缺省设置:4096 建议设置:65536 2) /proc/sys/fs/file-nr 该文件与 file-max 相关,它有三个值: 已分配文件句柄的数目 已使用文件句柄的数目 文件句柄的最大数目 该文件是只读的,仅用于显示信息。 3) 待续。。。 五、/proc/sys/net/core/优化 该目录下的配置文件主要用来控制内核和网络层之间的交互行为。 1) /proc/sys/net/core/message_burst 写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内系统接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”系统的人所使用的拒绝服务(Denial of Service)攻击。
缺省设置:50(5秒) 2) /proc/sys/net/core/message_cost 该文件表示写每个警告消息相关的成本值。该值越大,越有可能忽略警告消息。
缺省设置:5 3) /proc/sys/net/core/netdev_max_backlog 该文件表示在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
缺省设置:300 4) /proc/sys/net/core/optmem_max 该文件表示每个套接字所允许的最大缓冲区的大小。
缺省设置:10240 5) /proc/sys/net/core/rmem_default 该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)。
缺省设置:110592 6) /proc/sys/net/core/rmem_max 该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)。
缺省设置:131071 7) /proc/sys/net/core/wmem_default 该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。
缺省设置:110592 8) /proc/sys/net/core/wmem_max 该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。
缺省设置:131071 9) 待续。。。
(iwgh) |