Linux调整VM(内存)子系统

时间:2020-01-09 10:41:42  来源:igfitidea点击:

我有多个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。