linux的vm相关参数介绍

1. 保证linux有足够的物理内存,可以调整vm的如下参数

vm.min_free_kbytes=409600;//默认值是3797,保证物理内存有足够空闲空间,防止突发性换页

vm.vfs_cache_pressure=200;//默认是100,增大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大。越易回收

vm.swappiness=40 //缺省60,减少这个参数会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存

一般在rac的配置环境中配置这三个参数,可以防止换页引起节点短暂无响应,导致节点重启

2. 改善io系统的性能

overcommit_memory = 0

vm.overcommit_ratio = 10 //默认值是50,用于虚拟内存的物理内存的百分比

vm.dirty_ratio = 20 //默认值是40,为了保持稳定,持续的写入,把这个值调整的小一些,经验值是20

vm.dirty_background_ratio //缺省数值是500,也就是5秒,如果系统要求稳定持续的写,可以适当降低该值,把峰值的写操作平均多次,也避免宕机丢失更多的数据

vm.dirty_expire_centisecs //缺省是3000,也就是30秒,如果系统写操作压力很大,可以适当减小该值,但也不要太小;建议设置为 1500

vm的相关参数在/proc/sys目录下

相关命令

sysctl -p  //修改vm参数后,运行这个命令可以立即生效

sysctl -a  //查看所有的vm参数

与磁盘IO子系统有关的

/proc/sys/vm/dirty_ratio

这个参数控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,

表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内

存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合

时,应该降低其数值,一般启动上缺省是 10。下面是增大的方法:

echo '40' > /proc/sys/vm/dirty_ratio

/proc/sys/vm/dirty_background_ratio

这个参数控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百

分比,意思是当写缓冲使用到系统内存多少的时候,pdflush开始向磁盘写出数据。增大之会

使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒

定的写入场合时,应该降低其数值,一般启动上缺省是 5。下面是增大的方法:

echo '20' > /proc/sys/vm/dirty_background_ratio

/proc/sys/vm/dirty_writeback_centisecs

这个参数控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,

也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可

以把尖峰的写操作削平成多次写操作。设置方法如下:

echo "200" > /proc/sys/vm/dirty_writeback_centisecs

如果你的系统是短期地尖峰式的写操作,并且写入数据不大(几十M/次)且内存有比较多富裕,那么应该增大此数值:

echo "1000" > /proc/sys/vm/dirty_writeback_centisecs

/proc/sys/vm/dirty_expire_centisecs

这个参数声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。

单位是 1/100秒。缺省是 3000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写

操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快。建

议设置为 1500,也就是15秒算旧。

echo "1500" > /proc/sys/vm/dirty_expire_centisecs

当然,如果你的系统内存比较大,并且写入模式是间歇式的,并且每次写入的数据不大(比如几十M),

那么这个值还是大些的好。

与网络IO子系统有关的

/proc/sys/net/ipv4/tcp_retrans_collapse

这个参数控制TCP双方Window协商出现错误的时候的一些重传的行为。但是在老的2.6的核

(<2.6.18)里头,这个重传会导致kernel oops,kernel panic,所以,如果出现有

tcp_retrans_*样子的kernel panic,可以把这个参数给设置成0:

echo '0' > /proc/sys/net/ipv4/tcp_retrans_collapse

提高Linux应对短连接的负载能力

在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT 状态的socket。

你可以用下面的命令看到:

netstat -ant| grep -i time_wait

有时候,这个数目是惊人的:

netstat -ant|grep -i time_wait |wc -l

可能会超过三四万。这个时候,我们需要修改 linux kernel 的 tcp time wait的时间,缩短之,

有个 sysctl 参数貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,缺省值是 60,

也就是60秒,很多网上的资料都说将这个数值设置低一些就可以减少netstat 里面的TIME_WAIT状态,

但是这个说法是错误的。经过认真阅读Linux的内核源代码,我们发现这个数值其实是输出用的,

修改之后并没有真正的读回内核中进行使用,而内核中真正管用的是一个宏定义,在

$KERNEL/include/net/tcp.h里面,有下面的行:

#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT

* state, about 60 seconds     */

而这个宏是真正控制 TCP TIME_WAIT 状态的超时时间的。如果我们希望减少 TIME_WAIT 状态的数目

(从而节省一点点内核操作时间),那么可以把这个数值设置低一些,根据我们的测试,设置为 10

秒比较合适,也就是把上面的修改为:

#define TCP_TIMEWAIT_LEN (10*HZ) /* how long to wait to destroy TIME-WAIT

* state, about 60 seconds     */

然后重新编译内核,重启系统即可发现短连接造成的TIME_WAIT状态大大减少:

netstat -ant | grep -i time_wait |wc -l

一般情况都可以至少减少2/3。也能相应提高系统应对短连接的速度。

/proc/irq/{number}/smp_affinity

在多 CPU 的环境中,还有一个中断平衡的问题,比如,网卡中断会教给哪个 CPU 处理,

这个参数控制哪些 CPU 可以绑定 IRQ 中断。其中的 {number} 是对应设备的中断编号,

可以用下面的命令找出:

cat /proc/interrupt

比如,一般 eth0 的 IRQ 编号是 16,所以控制 eth0 中断绑定的 /proc 文件名是

/proc/irq/16/smp_affinity。上面这个命令还可以看到某些中断对应的CPU处理的次数,

缺省的时候肯定是不平衡的。

设置其值的方法很简单,smp_affinity 自身是一个位掩码(bitmask),特定的位对应特

定的 CPU,这样,01 就意味着只有第一个 CPU 可以处理对应的中断,而 0f(0x1111)

意味着四个 CPU 都会参与中断处理。

几乎所有外设都有这个参数设置,可以关注一下。

这个数值的推荐设置,其实在很大程度上,让专门的CPU处理专门的中断是效率最高的,比如,

给磁盘IO一个CPU,给网卡一个CPU,这样是比较合理的。

vm跑linux性能,linux的vm相关参数介绍相关推荐

  1. linux的vm相关参数介绍

    http://blog.csdn.net/wyzxg/article/details/5661489  linux的vm相关参数介绍 1. 保证linux有足够的物理内存,可以调整vm的如下参数 vm ...

  2. Linux安全关机命令以及相关命令介绍

    Linux安全关机命令以及相关命令介绍 致新手运维师 作为一名Linux运维师,应该明白Linux服务器运行时关机的正确方法,有助于我们在工作的时候不至于造成一些必要的损失.当然,Linux服务器作为 ...

  3. MySQL8.0内存相关参数介绍

    MySQL8.0内存相关参数介绍 首先我们给出MySQL内存使用的计算公式: MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存. 也就是:innodb_b ...

  4. Mac 上设置显示器相关参数介绍

    Mac 上设置显示器相关参数介绍 在 Mac 上,使用"显示器"系统偏好设置来调整分辨率和亮度,以及设置专用于支持各种专业媒体类型和相关制作工作流程的其他选项. 在"预置 ...

  5. qemu-system-aarch64使用和相关参数介绍

    qemu-system-aarch64 1 参数列表查看 2 Standard options: 3 Block device options: 4 Display options: 5 Networ ...

  6. mysql8.0最低需要多少内存_MySQL8.0内存相关参数介绍

    本文来自读者投稿 作者:姚远 首先我们给出MySQL内存使用的计算公式: MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存. 也就是:innodb_buf ...

  7. php在linux性能,Linux上性能异常定位以及性能监控

    引言:大多数的服务都是跑在Linux上的,Linux现在也已经到了一个很广泛的应用,但是仍然会有很多问题出现,我们就来讨论下我们性能监控的指标,性能监控无非就是从I/O,内存,CPU,TCP连接数,网 ...

  8. Linux性能分析工具perf基础使用介绍

    perf是Linux内核内置的性能分析工具.从内核版本2.6.31开始出现该工具,如果没有安装,可以使用以下命令进行安装 yum -y install perf.x86_64 这里我们主要介绍一下如何 ...

  9. linux tcp keepalive,Linux下TCP的Keepalive相关参数学习

    一 基本原理 TCP的Keepalive可以简单理解成为keep tcp alive,用来检测TCP sockets的连接是否正常或是已经断开. Keeplived的原理很简单,当建立一个TCP连接时 ...

最新文章

  1. 详解分布式系统与消息投递
  2. Layout动画:在android布局发生变化时添加动画效果
  3. 深度学习领域有哪些瓶颈
  4. 在腾讯做嵌入式是怎么样的
  5. hdu 1025 Constructing Roads In JGShining's Kingdom
  6. golang 数组 最后一个_Golang 内存管理
  7. 拓端tecdat|R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
  8. 统计计算机考试题,销售统计表计算机windows一级最新考试试题
  9. 视频流媒体推流平台EasyRTMP安卓版使用前置摄像头推流发现画面镜像怎么办?
  10. 广数系统加工中心编程_两个很简单的FANUC系统CNC加工中心编程实例
  11. vue 微信公众号 前端开发
  12. 免费开放的电子图书馆
  13. maven添加阿里云仓库
  14. 基于区块链Baas平台的跨链实践
  15. (框架)Deepracer 自动训练 框架的搭建
  16. vc中cout如何解除fixed控制_C++ fixed用法详解
  17. 软考中级-软件设计师 复习指南(2021年11月已通过)
  18. 安卓打造自己的日历控件
  19. 在kile中使用Astyle插件使代码自动对齐
  20. 盯上年轻人的今日头条,重新以内容出发还有多少可能?

热门文章

  1. 速度翻倍 SAS 6Gb/s接口性能全揭秘
  2. 深度优先和广度优先算法(例题)
  3. 底层const与顶层const
  4. wekan 看板系统(仿trello)0.49 虚拟机文件(virtualbox vmware images)
  5. CloudVM 之 域名绑定服务器
  6. win7电脑数字键盘失灵怎么办
  7. Java落寞了?7 月编程语言最新排行榜
  8. XMind ,印象笔记, Effie 哪个更加适合写稿爱好者?
  9. 教学用计算机报废年限,山东英才学院教学科研仪器设备报废管理规定(试行)...
  10. 机器学习—初窥支持向量机(SVM)