Linux性能:为什么你应该添加交换空间swap

标签: linux swap 交换空间 性能 内存 | 发表时间:2021-11-09 14:08 | 作者:myfreax
出处:https://www.myfreax.com/
Linux性能:为什么你应该添加交换空间swap

我们知道使用Linux交换空间而不是 RAM(内存)会严重降低性能。那么,有人可能会问,既然我有足够多的可用内存,删除交换空间不是更好吗?简短的回答是不会。启用交换空间会带来性能优势,即使您有足够多的内存。

即使安装了足够多的服务器内存,您也会经常发现在长时间正常运行后会使用交换空间。请参阅以下来自具有大约一个月正常运行时间的实时聊天服务器的示例:

                total        used        free      shared  buff/cache   available
Mem:           3.7G        1.0G        445M         84M        2.2G        2.2G
Swap:          1.8G        308M        1.5G

free -h这里的输出显示使用了 308M 的交换空间。当我运行swapping检查时,没有迹象表明正在进行或不合时宜的swap I/O活动。此外,kswap服务并没有消耗太多 CPU 时间。实际上,在top(按 CPU 时间排序的顶级进程)中找不到kswap进程。为了确认,我使用了 ps命令

  ps -A | grep kswap
40 ? 00:00: 29 kswapd0

...所以在这种情况下,与许多情况一样,swap使用不会降低Linux服务器的性能。现在,让我们看看交换空间实际上如何改善Linux服务器性能。

在具有足够RAM的系统上交换空间的优点

Linux性能:为什么你应该添加交换空间swap

即使仍有可用的 RAM,Linux系统使用一些swap也是正常的并且是一件好事。Linux 内核会将 几乎从未使用过的内存页面移动到交换空间中,以确保在内存中为更频繁使用的内存页面提供更多可缓存空间(一个页面就是一块内存)。当内核被迫不断地将内存页面移入和移出内存和交换空间swap时,交换使用会成为一个性能问题。

另一个优点是swap让管理员有时间对低内存问题做出反应。我们经常会注意到服务器运行缓慢,并且在登录时会注意到大量交换。如果没有交换(如下一节所述),内存不足会产生更加突然和严重的连锁反应。所以我会建议将交换空间设置为您最大进程的大小。比如mysql在my.cnf中配置的内存。

有些人建议不要交换或交换大小略大于总RAM。如果您能为此提出正当理由,那么这可能是您的选择。但是,这在服务器上几乎不是这种情况,您应该在您的决定与 Swap对您的特定应用程序的影响之间取得平衡。 Swap不会改变服务器所需的 RAM 量。它旨在改善系统的性能。

总结:
— 即使仍有可用的RAM,Linux内核也会将几乎从未使用过的内存页移动到交换空间中。
— 最好换出一段时间不活动的内存页,将经常使用的数据保留在缓存中,这应该发生在服务器最空闲的时候,这是内核的目标。
— 避免将交换空间设置得太大,否则会导致性能问题、中断或响应时间延长。

当可用内存不足时,交换空间与不使用交换空间

与上面的情况不同,如果您没有足够的内存,则在任何内存需求高峰期间,交换将被频繁使用并且明显更多。如果您没有足够的内存并且没有交换空间,这通常会导致无法为需要更多内存页的请求分配内存。作为最后的手段,内核将部署 OOM杀手来攻击高内存进程(通常是 MySQL、java 等)。

要更详细地了解Linux交换空间 Swap,请阅读 Kernel.org文档中的 交换管理和Page Frame 回收章节。如果您的交换空间“已使用”始终为“0”,那么您确实有大量自由可用的 RAM,在这种情况下,删除交换空间可能是最好的。

总结:
Swap I/O的扩展性很差。如果仅在服务器空闲时无法交换内存页,则应调整或禁用 Swap
— 禁用 Swap后,性能问题会很快变得明显,OOM杀手可能会抓住你!:)

为了进行比较,以下是在同一服务器上使用来自 procps-ng-3.3.1的旧版free的输出:

               total       used       free     shared    buffers     cached
Mem:          3.7G       3.3G       445M         0B       4.2M       1.7G
-/+ buffers/cache:       1.6G       2.1G
Swap:         1.8G       308M       1.5G

内核缓存压力和交换

现在您已启用交换。考虑按照以下指南调整服务器的缓存压力和swap vm.swappiness

vfs_cache_pressure – 控制内核回收内存的频率,用于缓存目录和inode对象。(默认值 = 100,推荐值 50 到 200)

swappiness – 此值用于定义内核交换内存页面的积极程度。较高的值会增加攻击性;较低的值会减少交换量。(默认值 = 60,推荐值在 1 到 60 之间)删除 0 值的交换,但在大多数情况下通常不推荐。

要编辑,您可以在 /etc/sysctl.conf文件中添加或替换这些行 。例如,如果您在升级前内存不足,您可以尝试以下操作:

  vm.swappiness=10
vm.vfs_cache_pressure=200

这将增加缓存压力,这似乎有些适得其反,因为缓存对性能有好处。但是,过于频繁的交换会显着降低服务器的整体性能。因此,不在内存中保留尽可能多的缓存将有助于减少交换活动。此外,将 vm.swappiness设置为10或低至 1,将减少磁盘交换。

在具有大量可用内存的服务器上,使用以下命令:

  vm.swappiness=10
vm.vfs_cache_pressure=50

这将降低缓存压力。由于缓存对性能有好处,我们希望将缓存数据在内存中保留更长时间。由于缓存会变大,我们仍然希望减少交换以不增加交换 I/O。

要使用这些命令检查当前值,请使用:

  sudo cat /proc/sys/vm/swappiness
sudo cat /proc/sys/vm/vfs_cache_pressure

要在不重新启动的情况下临时启用这些设置,请使用以下命令:

  sudo sysctl -w vm.swappiness=10
sudo sysctl -w vm.vfs_cache_pressure=50
swap - myfreax
Linux性能:为什么你应该添加交换空间swapmyfreax 15 Dec 2020 • 4 min readmyfreax
Linux性能:为什么你应该添加交换空间swap

相关 [linux 性能 交换] 推荐:

Linux性能:为什么你应该添加交换空间swap

- - myfreax
我们知道使用Linux交换空间而不是 RAM(内存)会严重降低性能. 那么,有人可能会问,既然我有足够多的可用内存,删除交换空间不是更好吗. 启用交换空间会带来性能优势,即使您有足够多的内存. 即使安装了足够多的服务器内存,您也会经常发现在长时间正常运行后会使用交换空间. 请参阅以下来自具有大约一个月正常运行时间的实时聊天服务器的示例:.

Linux 性能优化

- - Gsion's Blog
1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断. 加粗斜体表示可以直接运行的命令. 二、/proc/sys/kernel/优化. 该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应.

Linux 性能分析工具 nmon for Linux

- - CSDN博客架构设计推荐文章
nmon 是 Nigel's performance Monitor for Linux on POWER, x86, x86_64, Mainframe & now ARM (Raspberry Pi) 的缩写,意思是 Nigel(nmon 的作者是 Nigel Griffiths) 的 Linux 性能检测器.

Linux ulimit 性能调优

- - CSDN博客编程语言推荐文章
ulimit 用于shell启动进程所占用的资源,是shell内建命令. 功能说明: 控制shell程序的资源. 补充说明: ulimit为shell内建指令,可用来控制shell执行程序的资源. 语法格式:  ulimit  [-acdfHlmnpsStvw]  [size]. -a   显示目前资源限制的设定.

linux 系统性能指标

- - 非技术 - ITeye博客
近段时间,再忙着找实习,经常被问到的,关于linux系统性能的指标,比如对于一台linux机器来说,怎么监控它的CPU,内存,负载等情况;怎样算高负载,具体的依据是什么. 等等这类问题,下面就好好总结一下这方面知识吧~. 由于能力有限,可能总结的不是很全面,不是很正确,有错漏的,欢迎大家帮忙指出,谢谢.

Linux服务器性能评估

- peigen - 唐福林-博客雨
一、影响Linux服务器性能的因素. 影响性能因素 评判标准 好 坏 糟糕 CPU user% + sys%< 70% user% + sys%= 85% user% + sys% >=90% 内存 Swap In(si)=0 Swap Out(so)=0. Per CPU with 10 page/s More Swap In & Swap Out 磁盘 iowait % < 20% iowait % =35% iowait % >= 50%.

Linux性能监控与分析工具

- - CSDN博客系统运维推荐文章
最近需要对一套预研完成的系统性能测试,该系统部署在Linux服务器集群上. 在高并发、高负载场景下收集每台设备资源占用的全部信息(这些信息包括CPU,内存,I/O,磁盘,网络流量等等等),进一步分析系统瓶颈. 这里用上了nmon这款工具. 由nmon负责定期收集全套系统信息,再由nmon_analyser将原始数据转换为可视化的表格与图形.

Linux 和 Android 系统性能分析

- - CSDN博客综合推荐文章
作为一名Linux 或 Android 平台的系统工程师,在开发系统新功能外,主要工作就是优化系统性能,使系统上以最优的状态运行,但是由于硬件问题、软件问题、网络环境等的复杂性和多变性,导致对系统的优化变得异常复杂,如何定位性能问题出在哪个方面,是性能优化的一大难题, 从系统入手,阐述由于系统软、硬件配置不当可能造成的性能问题,并且探讨检测系统故障和优化性能的一般方法和流程.

Linux服务器性能评估

- - 操作系统 - ITeye博客
一、影响Linux服务器性能的因素. 二、系统性能评估标准. %user:表示CPU处在用户模式下的时间百分比. %sys:表示CPU处在系统模式下的时间百分比. %iowait:表示CPU等待输入输出完成时间的百分比. swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM.