广告位联系
返回顶部
分享到

修改Linux内核参数vm.swappiness的方法教程

linux 来源:互联网 作者:佚名 发布时间:2023-02-12 19:21:05 人浏览
摘要

修改Linux内核参数vm.swappiness 内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。 值越大,表示越积极使用swap分区,越小表示越积极使用物

修改Linux内核参数vm.swappiness

内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。

值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。

默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间;swappiness=100的时候表示积极使用swap分区,并把内存上的数据及时搬运到swap空间。(网上有的说,对于3.5以后的内核和RedHat 2.6.32之后的内核,设置为0会禁止使用swap,从而引发out of memory,这种情况可以设置为1。)

需要根据服务器运行的程序类型,来设置不同的参数值。例如,对于Oracle一般设置为10;对于MySQL一般设置为1,尽可能不用swap分区。

调整vm.swappiness的方法

1、查看参数值:

1

cat /proc/sys/vm/swappiness

2、临时调整:

1

2

sysctl vm.swappiness = 10 

cat /proc/sys/vm/swappiness

3、永久调整:

1

vi /etc/sysctl.conf 

修改vm.swappiness=10

然后加载参数:

1

sysctl -p

完毕。

了解vm.swappiness

Linux内核是一个相当复杂的软件,具有许多组件,例如模块,接口和配置文件[1]。

些组件可以配置有特定值,以实现组件[2,3,4]的所需行为或操作模式。随后,此设置将直接影响整个Linux系统的行为和性能。

Linux内核及其组件的当前值可通过特殊接口/ proc目录[5]进行访问。这是一个虚拟文件系统,其中单个文件实时填充值。这些值表示Linux内核所处的实际状态。

您可以使用cat命令访问/ proc目录中的各个文件,如下所示:

1

2

3

$ cat / proc / sys / net / core / somaxconn

128

$

这些内核参数之一称为vm.swappiness。它“控制从运行时内存中交换出来的相对权重,与从系统页面缓存中删除内存页面相反” [6]。从Linux内核2.6版开始,引入了此值。它存储在文件/ proc / sys / vm / swappiness中。

使用交换

在1990年代初期,使用swap [6]是使用小型UNIX计算机的重要组成部分。当讨厌的内存泄漏干扰您的工作时,它仍然很有用(例如,在您的车辆中装有备用轮胎)。机器将变慢,但在大多数情况下仍可用于完成其分配的任务。自由软件开发人员一直在减少和消除程序错误方面取得了长足的进步,因此在更改内核参数之前,请先考虑将其更新为应用程序和相关库的较新版本。

如果您运行大量任务,则非活动任务将被换出到磁盘上,从而更好地利用了活动任务中的内存。视频编辑和其他占用大量内存的应用程序通常建议使用一定数量的内存和磁盘空间。如果您有一台无法升级内存的旧机器,那么提供更多的交换空间可能是一个不错的临时解决方案(有关更多信息,请参见[6])。

交换可以发生在单独的分区或交换文件上。该分区速度更快,并且受到许多数据库应用程序的青睐。文件方法更加灵活(请参阅Debian GNU / Linux中的dphys-swapfile软件包[7])。具有多个用于交换的物理设备允许Linux内核选择最快速可用的设备(较低的延迟)。

vm.swappiness

vm.swappiness的默认值为60,它表示激活交换之前可用内存的百分比。值越低,使用的交换越少,并且物理内存中保留的内存页越多。

60的值是一个折衷方案,非常适合现代台式机系统。建议将较小的值用于服务器系统。正如Red Hat Performance Tuning手册指出的那样[8],对于数据库工作负载,建议使用较小的swappiness值。

例如,对于Oracle数据库,Red Hat建议将swappiness的值设置为10。相反,对于MariaDB数据库,建议将swappiness的值设置为1 [9]。

更改值直接影响Linux系统的性能。定义了这些值:

  • * 0:禁用交换
  • * 1:不完全禁用交换的最小数量
  • * 10:当系统中有足够内存时为提高性能而推荐的值
  • * 100:主动交换

如上所示,cat命令有助于读取该值。同样,sysctl命令为您提供相同的结果:

1

2

3

#sysctl vm.swappiness

vm.swappiness = 60

请记住,sysctl命令仅对管理用户可用。要设置该值,请在/ proc文件系统中临时设置该值,如下所示:

1

#回声 10 > / PROC / SYS / VM / swappiness

或者,您可以使用sysctl命令,如下所示:

1

#的sysctl -w vm.swappiness = 10

要永久设置该值,请以管理用户身份打开文件/etc/sysctl.conf并添加以下行:

1

vm.swappiness = 10

小结一下吧

越来越多的Linux用户正在运行虚拟机。除了实际控制硬件的管理程序外,每个人都有其自己的内核。虚拟机具有为其创建的虚拟磁盘,因此更改虚拟机内部的设置将获得不确定的结果。首先尝试更改虚拟机管理程序内核的值,因为它实际上控制着计算机中的硬件。

对于不再能够升级的旧计算机(已经具有最大支持的内存),您可以考虑在计算机中放置一个小型固态磁盘,以将其用作其他交换设备。由于存储单元因大量写入而失败,因此这显然将成为一种消耗,但是可以以非常低的成本将机器的寿命延长一年或更长时间。与交换到普通磁盘相比,较低的延迟和快速读取将提供更好的性能,从而为RAM提供中间结果。这应该允许您使用较低的vm.swappiness值以获得最佳性能。您将不得不尝试。SSD设备正在快速变化。

如果您有多个交换设备,请考虑使其成为RAID设备以跨可用设备对数据进行条带化。

您可以在不重启计算机的情况下更改交换性,这是与其他操作系统相比的一大优势。

尝试仅包括您业务所需的服务。这将减少内存需求,提高性能并简化一切。

最后一点:您将为交换设备增加负载。您将需要监视它们的温度。过热的系统将降低其CPU频率并降低速度。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/andyguan01_2/article/details/89315345
相关文章
  • linux中grep命令使用实战介绍

    linux中grep命令使用实战介绍
    一. grep命令介绍 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。 grep全称是Global
  • 修改Linux内核参数vm.swappiness的方法教程
    修改Linux内核参数vm.swappiness 内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。 值越大,表示
  • nginx部署前端项目的详细方法步骤

    nginx部署前端项目的详细方法步骤
    1. 什么是nginx Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 由俄罗斯的程序设计师Igor Sysoev所开发,官
  • apache-zookeeper-3.7.1 安装部署教程

    apache-zookeeper-3.7.1 安装部署教程
    apache-zookeeper-3.7.1 安装部署 下载地址:https://mirrors.bfsu.edu.cn/apache/zookeeper/ apache-zookeeper-3.7.1 1.下载直接解压,进入../conf/目录下复制一份zoo
  • Linux命令之mkdir,cat,touch,vi/vim的介绍

    Linux命令之mkdir,cat,touch,vi/vim的介绍
    mkdir命令语法 linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录
  • Linux文件查找命令总结(下篇)
    前言 关于Linux文件查找命令总结我们分别介绍了which命令、whereis命令、locate命令、find命令这四个命令,本篇向大家介绍的是find命令。 find
  • Linux文件查找命令总结(上篇)

    Linux文件查找命令总结(上篇)
    关于Linux文件查找命令总结我们分别介绍了which命令、whereis命令、locate命令、find命令这四个命令,本篇向大家介绍的是:which命令、whereis命
  • linux服务器CPU飙高排查分析

    linux服务器CPU飙高排查分析
    系统cpu飙高,尤其对于后端人员来说,其实应该学会排查,这样也算是综合能力的体现;那么当出现了cpu严重飙高的时候怎么排查呢? 一、第一步
  • 红帽RHEL8和7的区别对比分享(Centos8与7参照redhat)
    红帽RHEL8与RHEL7的区别 1. 红帽RHEL8和RHEL7功能区别对比 1.1 默认的文件系统 RHEL8与RHEL7都是采用XFS 1.2 RHEL8与RHEL7的内核版本分别是多少 关于内核
  • expect实现Linux自动登陆远程机器脚本实例介绍
    expect是由Don Libes基于Tcl(Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互过程
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计