服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 如何修改Linux内核参数vm.swappiness

如何修改Linux内核参数vm.swappiness

2023-02-14 12:25andyguan01_2 Linux

这篇文章主要介绍了如何修改Linux内核参数vm.swappiness问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

修改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频率并降低速度。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/andyguan01_2/article/details/89315345

延伸 · 阅读

精彩推荐
  • LinuxVIM实现文件快速跳转插件详解

    VIM实现文件快速跳转插件详解

    这篇文章主要给大家介绍了关于VIM实现文件快速跳转插件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用vim具有一定的参考学习价值...

    始于珞尘3842022-03-08
  • LinuxLinux通过匿名管道进行进程间通信

    Linux通过匿名管道进行进程间通信

    这篇文章主要介绍了Linux通过匿名管道进行进程间通信,介绍了什么是管道,popen函数,pipe调用等相关内容,小编觉得还是挺不错的,具有一定借鉴价值,...

    ljianhui5852022-02-27
  • LinuxLinux调整系统inode数量实例

    Linux调整系统inode数量实例

    这篇文章主要介绍了Linux调整系统inode数量实例,inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息...

    Linux教程网7502019-09-25
  • LinuxLinux虚拟机中node.js之开发环境搭建

    Linux虚拟机中node.js之开发环境搭建

    这篇文章主要介绍了Linux虚拟机中node.js之开发环境搭建,有需要的朋友可以了解一下。...

    10282021-11-22
  • Linuxlftp 贴心好友 备份服务器bash脚本

    lftp 贴心好友 备份服务器bash脚本

    作为linux系统管理员,经常需要同时管理多台机器 备份各机器的配置文件就要靠脚本了,简单明了...

    Linux教程网3742021-08-27
  • Linuxlinux中了minerd之后的完全清理过程(详解)

    linux中了minerd之后的完全清理过程(详解)

    下面小编就为大家带来一篇linux中了minerd之后的完全清理过程(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Linux教程网9422021-12-09
  • Linux如何将 Linux 终端中命令的输出保存到文件中

    如何将 Linux 终端中命令的输出保存到文件中

    当你在 Linux 终端中运行命令或脚本时,它会在终端中打印输出方便你立即查看。...

    Linux中国6142020-12-14
  • LinuxLinux的bg和fg命令简单介绍

    Linux的bg和fg命令简单介绍

    而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务,让程序在前台后台之间切换,本文将详细介绍,需要的朋友 可以参考下 ...

    Linux教程网7382019-12-16