首页 > 其他分享 >内核优化常见参数

内核优化常见参数

时间:2022-11-10 21:59:00浏览次数:50  
标签:swappiness vm queue 参数 内存 优化 backlog 内核

001、大页内存管理

建议:关闭

Transparent HugePages:大页内存管理,不过他和标准的大页内存管理有区别。
Transparent HugePages是在运行时动态分配内存的,而标准的HugePages是在系统启动时预先分配内存,并在系统运行时不再改变。

因为Transparent HugePages是在运行时动态分配内存的,所以会带来在运行时内存分配延误。所以ORACLE是建议不使用Transparent HugePages功能的,如果需要大页内存管理功能来加强性能,建议使用标准的大页内存管理。

尽管Transparent HugePages的本意是为提升性能,但某些数据库厂商还是建议直接关闭(比如说Oracle、MongoDB等),否则可能导致性能下降,内存锁,甚至系统重启等问题。

比较流行的关闭方法有两种
第一种:在/etc/rc.local中加入如下两行

echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >>/etc/rc.d/rc.local

echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >>/etc/rc.d/rc.local

第二种:
1 .编辑 /etc/default/grub,在GRUB_CMDLINE_LINUX加入选项 transparent_hugepage=never
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
2.重新生成grub配置文件
On BIOS-based machines, issue the following command as root:
# grub2-mkconfig -o /boot/grub2/grub.cfg
On UEFI-based machines, issue the following command as root:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
step3 重启你的系统
验证结果
重启前
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

重启后
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

002、swap内存

建议:vm.swappiness = 10

swappiness,Linux内核参数,控制换出运行时内存的相对权重。

swappiness参数值可设置范围在0到100之间。 低参数值会让内核尽量少用交换,更高参数值会使内核更多的去使用交换空间。

默认值为60(参考网络资料:当剩余物理内存低于40%(40=100-60)时,开始使用交换空间)。

对于大多数操作系统,设置为100可能会影响整体性能,而设置为更低值(甚至为0)则可能减少响应延迟。

swappiness参数值说明

vm.swappiness = 0

仅在内存不足的情况下--当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间。

vm.swappiness = 1

内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最少量的交换,而不禁用交换。

vm.swappiness = 10

当系统存在足够内存时,推荐设置为该值以提高性能。

vm.swappiness = 60

默认值

vm.swappiness = 100

内核将积极的使用交换空间。

对于内核版本为3.5及以上,Red Hat内核版本2.6.32-303及以上,多数情况下,设置为1可能比较好,0则适用于理想的情况下(it is likely better to use 1 for cases where 0 used to be optimal)

修改swappiness的值

1)临时设置(重启后失效)

sysctl -w vm.swappiness=10

sysctl -a | grep vm.swappiness

vm.swappiness = 30

 2)永久生效

echo 'vm.swappiness = 10' > /etc/sysctl.d/swappiness.conf

sysctl -a | grep vm.swappiness

 003、net.core.somaxconn

建议:net.core.somaxconn=65535

1)net.core.somaxconn概念介绍

对于一个TCP链接,Server与Client需要通过三次握手来建立网络链接,当三次握手成功之后,我们就可以看到端口状态由LISTEN转为ESTABLISHED,接着这条链路上就可以开始传送数据了
net.core.somaxconn 是Linux中的一个内核(kernel)参数,表示socket监听(listen)的backlog上限。
backlog 是 socket的监听队列,当一个请求(request)尚未被处理或者建立时,它就会进入backlog。
而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。
当Server处理请求较慢时,导致监听队列被填满后,新来的请求就会被拒绝。
backlog参数主要用于底层方法int listen(int sockfd, int backlog), 在解释backlog参数之前,我们先了解下tcp在内核的请求过程,其实就是tcp的三次握手:

 

 

client发送SYN到server,将状态修改为SYN_SEND,如果server收到请求,则将状态修改为SYN_RCVD,并把该请求放到syns queue队列中。
server回复SYN+ACK给client,如果client收到请求,则将状态修改为ESTABLISHED,并发送ACK给server。
server收到ACK,将状态修改为ESTABLISHED,并把该请求从syns queue中放到accept queue。
在linux系统内核中维护了两个队列:syns queue和accept queue

syns queue
用于保存半连接状态的请求,其大小通过/proc/sys/net/ipv4/tcp_max_syn_backlog指定,一般默认值是512,不过这个设置有效的前提是系统的syncookies功能被禁用。互联网常见的TCP SYN FLOOD恶意DOS攻击方式就是建立大量的半连接状态的请求,然后丢弃,导致syns queue不能保存其它正常的请求。

accept queue
用于保存全连接状态的请求,其大小通过/proc/sys/net/core/somaxconn指定,在使用listen函数时,内核会根据传入的backlog参数与系统参数somaxconn,取二者的较小值。

如果accpet queue队列满了,server将发送一个ECONNREFUSED错误信息Connection refused到client。

 

标签:swappiness,vm,queue,参数,内存,优化,backlog,内核
From: https://www.cnblogs.com/suyj/p/16878901.html

相关文章

  • 堆排序优化版Dijkstra
    Dijkstra依旧基于贪心用堆排序动态维护剩余点中dist[]最小的点堆排序优化Dijkstra算法 稀疏图,用邻接表,稠密也可以 void add(int a,int b,int c){    e[i......
  • 有点意思的Kotlin的默认参数与JVMOverloads
    在Java中,当我们定义一个类的时候,总会出现一些变量是必须要填写的,而另一些是可选的。比如像下面这样,我们定一个Person类,其中name是必须填写的,而性别sex和isChinese可选,如果不......
  • 谁来检查方法参数合法性
    我们在编程中的函数或者是方法,大多数都是有参数的。参数对于方法来说是很重要的输入数据,传入的参数值的合法性影响着方法的稳定性,严重时甚至可能导致崩溃问题的出现。比如这......
  • C语言 函数02 自定义函数的参数
    实际参数(实参):真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。形......
  • Android Study 之冷启动优化(解决启动短暂白屏or黑屏)
    LZ-Says:话说真正负责项目后才发现,想要软件越来越好,就要从细节抓问题,去解决问题,这样我们的软件才会越来越好~前言今天下班路上闲的无聊随便点了几个app,包括正在负责的几个项......
  • MySQL-数据库优化
     数据库优化: 数据库设计:1.字段选型:数字类型:tinyintsmalintmediumintintbigint字符类型:charvarchar事件类型:datedate......
  • .NET性能优化-是时候换个序列化协议了
    计算机单机性能一直受到摩尔定律的约束,随着移动互联网的兴趣,单机性能不足的瓶颈越来越明显,制约着整个行业的发展。不过我们虽然不能无止境的纵向扩容系统,但是我们可以分布......
  • 拓端数据tecdat|matlab代写使用Copula仿真优化市场风险
     使用Copula仿真优化市场风险 此示例演示了使用具有胖尾边缘分布的多变量copula模拟计算投资组合的风险价值和条件风险值(预期缺口)。然后使用模拟来计算最优风险收益组合的......
  • ASEMI肖特基二极管SBT10100VCT参数,SBT10100VCT应用
    编辑-ZASEMI肖特基二极管SBT10100VCT参数:型号:SBT10100VCT最大重复峰值反向电压(VRRM):100V最大平均正向整流输出电流(IF):10A峰值正向浪涌电流(IFSM):150A每个元件的典型热阻(ReJA):2℃/......
  • ASEMI肖特基二极管SBT10100VCT参数,SBT10100VCT应用
    编辑-ZASEMI肖特基二极管SBT10100VCT参数:型号:SBT10100VCT最大重复峰值反向电压(VRRM):100V最大平均正向整流输出电流(IF):10A峰值正向浪涌电流(IFSM):150A每个元件的典型热阻(R......