一、内存调优
内核关于内存的选项都在/proc/sys/vm目录下.
1.pdflush,用于回写内存中的脏数据到硬盘。可以通过 /proc/sys/vm/vm.dirty_background_ratio调整。
首先查看这个值默认应该是10。
[root@esf ~]# cat /proc/sys/vm/dirty_background_ratio
10
这个值是一个阀值,说明如果内存中的脏数据达到系统总内存的10%时,那么pdflush进程就会启动,将内存中的脏数据写回硬盘.这个值可适当调高.可获得更快的写入速度.
2.swappiness选项
[root@esf ~]# cat /proc/sys/vm/swappiness
60
swappiness表示使用swap分区的使用程度,可以适当调整swappiness=0的时候表示尽可能使用物理内存swap空间.swappiness=100积极使用swap.
3.dirty_ratio
[root@esf ~]# cat /proc/sys/vm/dirty_ratio
40
dirty_ratio的值是数据写进内存的阀值,40%是指当系统内存已经缓存了40%的数据以后,就不再往内存中缓存数据了.
二、磁盘I/O调优
Linux磁盘I/O调优
一)、 概述
1. 磁盘调优目录:/sys/block
2. 磁盘调优均是调内核参数,要求安装kernel-doc包,
3. 调预先读请求量(默认为128kb)
# blockdev --getra /dev/sda
# blockdev --setra 512 /dev/sda
实际修改/sys/block/sda/queue/read_ahead_kb=256kb;如果读情况多则将此参数调大一点,如写请求读,则将此参数调小一点
4. 调磁盘队列:队列长则处理快,提升硬盘的吞吐量,但会消耗更大的内存
Queue length:/sys/block/sda/queue/nr_requests
# cat /sys/block/sda/queue/nr_requests
512
#默认128,没有单位
二)、 磁盘I/O的4种调度算法
1. CFQ(完全公平排队I/O调度程序)(elevator=cfq)
特点:
这是默认算法,对于通用服务器来说通常是最好的选择。它试图均匀地分布对I/O带宽的访问。是deadline和anticipatory调度器的折中方案.
CFQ对于多媒体应用(video,audio)和桌面系统是最好的选择.
CFQ赋予I/O请求一个优先级,而I/O优先级请求独立于进程优先级,高优先级的进程的读写不能自动地继承高的I/O优先级.
CFQ基于64位的队列请求,使用的轮询的方法处理队列.
调优参数:
# /sys/block/sda/queue/iosched/queued:轮询时每次处理的最大请求数
# /sys/block/sda/queue/iosched/quantum:每隔多少个请求数做一次轮询
cfq调优工具ionice
ionice可以更改任务的类型和优先级,不过只有cfq调度程序可以用ionice.