为了提高Sequoiadb的性能,需要进行内核参数的调整,操作需要
root
权限下才行。
先进行备份,
vm
文件没有写权限可在其他目录进行备份,编写一个小脚本进行备份:
vi saveProc.sh
#!/bin/sh
cat /proc/sys/vm/swappiness>vm_swappiness.bak
cat /proc/sys/vm/dirty_ratio>vm_dirty_ration.bak
cat /proc/sys/vm/dirty_background_ratio>vm_dirty_background_ratio.bak
cat /proc/sys/vm/dirty_expire_centisecs>vm_dirty_expire_centisecs.bak
cat /proc/sys/vm/vfs_cache_pressure>vm_vfs_cache_pressure.bak
cat /proc/sys/vm/min_free_kbytes>vm_min_free_kbytes.bak
cat /proc/sys/vm/overcommit_memory>vm_overcommit_memory.bak
cat /proc/sys/vm/overcommit_ratio>vm_overcommit_ratio.bak
echo "over"
vi
/etc/sysctl.conf 进去之后进行内核参数调整:
vm.swappiness = 0
vm.dirty_ratio = 100
vm.dirty_background_ratio = 40
vm.dirty_expire_centisecs = 3000
vm.vfs_cache_pressure = 200
vm.min_free_kbytes = <物理内存大小的8%,单位KB>
vm.overcommit_memory = 2
vm.overcommit_ratio = 85
其中,
vm.min_free_kbytes =<物理内存大小的8%,单位KB>的详细参数可通过命令free –k查看total mem 的值,在乘于8%,得出具体值。各个参数的含义:
Vm.wappiness=0
表示系统进行交换行为的程度,数值越高表示越容易发生磁盘交换,
0
表示当内存剩余未
0
时才开始启动
swap
将磁盘一部分用作内存。
Vm.dirty_ration =100
表示内存中的脏页(文件系统写缓冲区)占用内存百分百的时候才将内存中的脏页写入磁盘中,数字表示占用率。
Vm.dirty_background_ration =40
参数控制文件系统的
pdflush
进程,表示内存中的脏页占用内存百分之
40
时开始使用
pdflush
将脏页写入磁盘。
Vm.dirty_expire_centisecs=3000
其中
3000
表示是
30
秒,表示内核写缓冲区的数据
30
秒前的数据就算旧数据(脏页),将会刷入磁盘。
Vfs.cache_pressure=200
该文件表示内核回收用于
directory
和
inode cache
内存的倾向,该值超过
100
,将导致内核倾向于回收
directory
和
inode cache
。
Vm.min_free_kbytes
为最低保留多少空闲内存。
Overcommit_memory =2
表示内核可以分配超过所有物理内存和交换空间总和的内存。
Vm.overcommit_ration = 85
可以挂载内存的百分比,可通过公式来计算系统整体可用内存,系统可分配内存
=
交换空间
+
物理内存
*overcommit_ratio/100
。
执行如下命令,使配置生效:
/sbin/sysctl -p