Linux调整VM(内存)子系统
我有多个SCSI磁盘的快速RAID-10磁盘子系统。
在现代Linux内核下运行的应用程序不会直接写入磁盘。
他们将其写入由Linux内核虚拟内存管理器管理的文件系统缓存中。
由于Ive高性能RAID控制器,如何减少刷新次数。
如何在Linux操作系统下调整虚拟内存子系统以获得更好的性能?
Linux允许您调整VM子系统。
但是,调整内存子系统是一项艰巨的任务。
错误的设置可能会影响系统的整体性能。
我建议您一次修改一个设置并在一段时间内监视系统。
如果性能提高,请保留设置,否则恢复原状。
/proc/sys/vm
该目录中的文件可用于调整Linux内核的虚拟内存(VM)子系统的操作:
cd /proc/sys/vm ls -l
pdflush
执行以下命令以查看pdflush的当前唤醒时间:
# sysctl vm.dirty_background_ratio
输出示例:
sysctl vm.dirty_background_ratio = 10
vm.dirty_background_ratio包含10,即占系统总内存的百分比,即pdflush后台写回守护程序将开始写脏数据的页面数。
但是,对于基于快速RAID的磁盘系统,这可能导致大量的脏内存页面被清空。
如果将此值从10增加到20(较大的值),将导致刷新频率降低:
# sysctl -w vm.dirty_background_ratio=20
swappiness
执行以下命令以查看当前的默认值:
# sysctl vm.swappiness
输出示例:
vm.swappiness = 60
值60定义了如何积极地将内存页面交换到磁盘。
如果您不想交换,则降低此值。
但是,如果您的系统进程长时间休眠,则通过增加该值可能会因积极的交换行为而受益。
例如,您可以通过增加或减小值来更改交换行为:
# sysctl -w vm.swappiness=100
dirty_ratio
执行以下命令:
# sysctl vm.dirty_ratio
输出示例:
vm.dirty_ratio = 40
值40是系统总内存的百分比,正在生成磁盘写入的进程本身将开始写脏数据的页面数。
这不过是应用程序磁盘写入创建的脏页将被刷新到磁盘的比率。
值为40表示将数据写入系统内存,直到文件系统缓存的大小达到服务器RAM的40%。
因此,如果您有12GB的内存,数据将被写入系统内存,直到文件系统缓存的大小为4.8G。
您可以如下更改脏率:
# sysctl -w vm.dirty_ratio=25
永久更改
您需要将设置添加到/etc/sysctl.conf。