1.BIOS:

(1) 关闭超线程

如果你的系统支持超线程,可参照主板说明书,开机进入BIOS SETUP 界面,找到(超线程)Hyper-Threading Technology 选项后将其设置为[Disabied]关闭,保存退出后启动系统。

(2) 将电源管理设置为性能模式

同样的按住“DEL”或“ESC”键(不同BIOS有不同方法,一般都是“DEL”)进入BIOS,找到高级**“Advances“下面的电源配置“Power Configuration”和USB配置“USB Configuration”;可能不同的和主板设置的位置不一样;
先点开电源配置
“Power Configuration”,选择其中的Power Management(电源管理)**

2.系统:

(1) 修改/etc/fstab中的文件系统挂载选项改为:noatime,nobarrier 如:

UUID=c25c0d37-a12c-4cc0-91e6-008f24bb143d / ext4 rw,noatime,nobarrier 1 1
UUID=dd7a1efd-10c5-4808-875b-3c4c7e6f16f9 /boot ext4 rw,noatime,nobarrier 1 2
UUID=42eecf7b-5256-4a83-a2de-ff0010052580 swap swap defaults 0 0

(2) 关闭透明巨页:

echo “never” > /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示(只在MADV_HUGEPAGE标志的VMA中使用THP)
Tip:为什么Transparent HugePages(透明大页)对系统的性能会产生影响
在 khugepaged进行扫描进程占用内存,并将4kPage 交换为HugePages 的这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能。并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为4kpage 优化的程序来说,可能会造成随机的性能下降现象。

(3) 更改调度器:

echo “deadline” > /sys/block/sda/queue/scheduler

Deadline(截止时间调度程序)
特点:
通过时间以及硬盘区域进行分类,这个分类和合并要求类似于noop的调度程序.
Deadline确保了在一个截止时间内服务请求,这个截止时间是可调整的,而默认读期限短于写期限.这样就防止了写操作因为不能被读取而饿死的现象.

查看当前系统的I/O调度方法:

cat /sys/block/sda/queue/scheduler

(4) 设置预读:

echo 4096 > /sys/block/sda/queue/read_ahead_kb

/sys/block/sda/queue/read_ahead_kb
这个参数对顺序读非常有用,意思是,一次提前读多少内容,无论实际需要多少。默认一次读 128kb 远小于要读的,设置大些对读大文件非常有用,可以有效的减少读 seek 的次数,这个参数可以使用 blockdev –setra 来设置,setra 设置的是多少个扇区,所以实际的字节是除以2,比如设置 512 ,实际是读 256 个字节。

3.几个非常有效的 IO 调度调节的内核参数

(1) sysctl 参数:

我们可以使用sysctl -a列出所有参数
批处理系统优化脚本已启用,将多任务操作的流畅性提升单任务执行效率的提升,缺点:多任务流畅性下降,优点:相对较省电,跑分上升,单任务执行效率上升【极致】

我们需要根据自己的实际情况把下面参数写入/etc/sysctl.conf文件中

kernel.sched_min_granularity_ns = 10000000
调度程序最小优先占用时间间隔10000000
kernel.sched_wakeup_granularity_ns = 15000000
调度程序唤醒间隔时间15000000
vm.dirty_ratio = 40
虚拟机脏数据比例40

sched_wakeup_granularity_ns:针对 SCHED_OTHER 的唤醒粒度。
sched_min_granularity_ns:针对 CPU 密集型任务执行最低级别抢占粒度。
流畅则让运行状态进程立刻占用CPU,让休眠状态等的进程放在一边 跑分则让运行状态进程占用大量CPU时间,并尽力不处理休眠状态等的进程

vm.dirty_background_ratio = 10

这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);在此过程中很多应用进程可能会因为系统转而处理文件IO而阻塞

vm.swappiness = 10

swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux看看里面的配置信息;这里总共有三项设置;先来了解第一项;的基本默认设置为60.

cat /proc/sys/vm/swappiness
60

也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。
但是修改/etc/sysctl文件不会马上生效,如果想使修改马上生效可以执行下面的命令:

/bin/sysctl –p

(2) 关闭 auditd、cups 等

abrt-ccpp 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
abrtd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
acpid 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
atd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
autofs 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
blk-availability 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
certmonger 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
cpuspeed 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
haldaemon 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
kdump 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
lvm2-monitor 0:关闭 1:启用 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
mdmonitor 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
messagebus 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
netfs 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
network 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
nfslock 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
portreserve 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
postfix 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
rpcbind 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
rpcgssd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
rsyslog 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
spice-vdagentd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:启用 6:关闭
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
sysstat 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
udev-post 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭