作者: 弦乐之花 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及
由于linux内存管理倾向先将内存分配到cache里,经常导致系统内存free值很低,这个时候如果系统发生频繁的内存申请,例如数据库login或者需要申请比较多的内存时,可能会导致系统严重swap,影响系统的稳定性。对于不使用文件系统cache来操作数据库文件的环境,文件系统cache其实并不起太大作用,linux下没有像aix下直接控制文件系统内存使用比例的参数,只能通过配置基于内容大小和内存驻留时间的两种刷新两种策略来管理脏数据的写回。
为了系统能够平稳运行,希望能够对系统vm管理上做些调整,防止swap造成的系统不稳定局面。
1.设置lock_sga为true,确保sga部分内存不被swap出去。
2.适当增大min_free_kbytes值,使系统保证一定的free mem,这样可以很大程度上缓解session冲击带来的swap负面效应,具体保留多大,也没有什么经验,256/512M对于64G物理内存可以参考下。
3.适当减小swapiness值,使系统尽量不要使用swap,可以设置为10。
4.调整dirty_background_ratio&dirty_expire_centisecs&dirty_ratio
&dirty_writeback_centisecs这4个参数,从而调整后台pdflush进程的回写策略。
通过上面调整,基本上不会出现swap情况,但是相应系统的性能会有一定程度的下降,特别是如果涉及大量文件操作如导出数据到系统文件的时候。
附:网上查到关于vm优化的一些资料,出处忘记了,如果侵犯到您的版权,请及时通知我,我会尽快处理,谢谢!
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。