Linux 中 Swap 和内存(Memory)对比介绍

news2024/10/21 23:28:54

文章目录

  • 内存 (Memory) 概述
  • Swap 分区概述
  • 内存与 Swap 的对比
  • Swap 与内存的工作机制
  • Swap 和内存的配置与优化
  • Swap 的使用场景和风险
  • 最佳实践
  • Swap 是否需要完全依赖?
  • Swap 设置与管理
    • 创建和激活 Swap 分区
    • 创建和管理 Swap 文件
    • 调整 Swap 使用策略
    • 常用的 Swap 管理命令
  • Swap 相关的优化建议
  • 总结与建议


内存 (Memory) 概述

  • 物理内存 (RAM):物理内存是计算机中用于临时存储数据的硬件。当系统需要处理应用程序时,数据会首先加载到物理内存中,以提高访问速度。物理内存容量越大,系统可以同时处理的任务也就越多。
  • 内存的工作机制:物理内存负责存储当前正在使用的应用程序和操作系统数据。由于其存取速度非常快,计算机的整体性能在很大程度上依赖于物理内存的效率。

Swap 分区概述

  • Swap 的定义:Swap 是 Linux 系统中的一种虚拟内存机制,它通过硬盘上的空间模拟物理内存。当系统的物理内存耗尽时,操作系统会将不常使用的数据从物理内存移到 Swap 区域,从而释放更多的物理内存来运行其他程序。
  • Swap 类型
    • Swap 分区:硬盘上的专用分区。
    • Swap 文件:文件系统中的一个普通文件,用于存储交换数据。

内存与 Swap 的对比

  • 性能对比
    • 物理内存的访问速度比 Swap 快得多,因为内存是基于电的芯片,而 Swap 则依赖于磁盘的读写操作。因此,当系统频繁使用 Swap 时,会明显降低系统的整体性能,这就是所谓的“Thrashing”现象。
  • 用途对比
    • 内存 (RAM):适用于频繁访问和使用的数据,如当前运行的程序、操作系统核心数据等。
    • Swap:用于存储那些暂时不需要使用的数据,作为内存的补充。

Swap 与内存的工作机制

  • 页调度机制 (Paging):当物理内存不足时,Linux 操作系统会自动将一些不常用的内存页移到 Swap 中。这种机制称为 “页调度”,它确保内存能够用来处理更紧急或更活跃的任务。
  • 内存管理中的 Swap 压力 (Swappiness):Linux 系统有一个名为 swappiness 的参数,它控制系统使用 Swap 的倾向。swappiness 的取值范围是 0-100,值越大表示系统更容易使用 Swap。可以通过修改 /proc/sys/vm/swappiness 文件来调节这个参数。

Swap 和内存的配置与优化

  • 如何查看 Swap 和内存使用情况
    • free 命令:用于查看内存和 Swap 的使用情况。
      free -h
      
    • tophtop:实时监控内存和 Swap 的使用状态。
  • 增加或减少 Swap 大小
    • 增加 Swap 文件:
      sudo fallocate -l 1G /swapfile
      sudo chmod 600 /swapfile
      sudo mkswap /swapfile
      sudo swapon /swapfile
      
    • 删除 Swap 文件:
      sudo swapoff /swapfile
      sudo rm /swapfile
      

Swap 的使用场景和风险

  • 使用场景
    • 低内存系统:当系统的物理内存不足时,Swap 可以为其提供额外的虚拟内存空间,避免系统崩溃。
    • 内存密集型应用:如大型数据库、视频渲染等,Swap 可作为物理内存的扩展,减少内存不足的风险。
  • 潜在风险
    • 频繁使用 Swap 会导致系统性能大幅下降,因为硬盘的读写速度远远低于内存。

最佳实践

  • 合理设置 Swap 大小:通常,Swap 的大小应为物理内存的 1 到 2 倍,但这取决于系统的具体需求。如果是内存充足的服务器,可以适当减少 Swap 大小,甚至禁用 Swap。
  • 调优 Swap 性能:通过调整 swappiness 和优化磁盘 I/O 性能,可以提高系统在使用 Swap 时的效率。

Swap 是否需要完全依赖?

  • 在现代系统中,Swap 并不是必需的。对于拥有大量物理内存的系统,Swap 的使用率往往很低,甚至可以考虑禁用 Swap。然而,对于资源紧张或需要应对突发内存需求的环境,Swap 仍然是不可或缺的保障措施。

Swap 设置与管理

创建和激活 Swap 分区

  1. 创建 Swap 分区
    如果你想要创建一个 Swap 分区,可以按照以下步骤操作:

    • 首先使用 fdisk 命令或其他分区工具创建一个新的分区,并将分区类型设置为 82(Linux swap)。
      sudo fdisk /dev/sdX
      
    • 创建好分区后,使用 mkswap 命令格式化该分区:
      sudo mkswap /dev/sdXn  # 这里 sdXn 是你的分区标识
      
    • 激活该 Swap 分区:
      sudo swapon /dev/sdXn
      
  2. 自动挂载 Swap 分区
    要使 Swap 分区在系统启动时自动启用,可以将其添加到 /etc/fstab 文件中:

    /dev/sdXn swap swap defaults 0 0
    

创建和管理 Swap 文件

  1. 创建 Swap 文件
    如果你不想使用专门的分区,也可以创建一个 Swap 文件。下面是创建和激活 Swap 文件的步骤:

    • 创建一个大小为 2GB 的 Swap 文件:

      sudo fallocate -l 2G /swapfile
      

      如果 fallocate 命令不可用,可以使用 dd 命令:

      sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
      
    • 设置合适的权限:

      sudo chmod 600 /swapfile
      
    • 将文件格式化为 Swap 类型:

      sudo mkswap /swapfile
      
    • 激活 Swap 文件:

      sudo swapon /swapfile
      
    • 确认 Swap 文件已被启用:

      sudo swapon --show
      
  2. 将 Swap 文件设置为永久启用
    为了确保 Swap 文件在每次系统启动时自动挂载,可以将其添加到 /etc/fstab 文件中:

    /swapfile swap swap defaults 0 0
    
  3. 禁用并删除 Swap 文件
    如果不再需要 Swap 文件,可以按照以下步骤禁用并删除:

    • 关闭 Swap 文件:

      sudo swapoff /swapfile
      
    • /etc/fstab 文件中移除相应的行(如果已添加)。

    • 删除 Swap 文件:

      sudo rm /swapfile
      

调整 Swap 使用策略

  1. 调整 swappiness 参数
    swappiness 参数控制了系统如何频繁地使用 Swap。值为 0 时,系统将尽可能避免使用 Swap;值为 100 时,系统更倾向于使用 Swap。可以通过以下命令查看当前的 swappiness 设置:

    cat /proc/sys/vm/swappiness
    
    • 临时修改 swappiness
      sudo sysctl vm.swappiness=10
      
    • 永久修改 swappiness
      将以下行添加到 /etc/sysctl.conf 文件中:
      vm.swappiness=10
      
      然后通过 sysctl -p 命令应用更改。
  2. 调整 Swap 的优先级
    在系统中,你可以设置多个 Swap 分区或文件。系统会根据优先级选择使用哪个 Swap 区域,优先级越高的 Swap 区域越先使用。可以通过 pri 参数设置优先级:

    sudo swapon /swapfile -p 10
    

常用的 Swap 管理命令

  1. 查看 Swap 使用情况

    • 使用 free 命令查看内存和 Swap 的详细使用情况:
      free -h
      
    • 使用 swapon --show 显示当前激活的 Swap 区域及其详细信息:
      sudo swapon --show
      
  2. 禁用 Swap 分区或文件
    如果你想禁用某个 Swap 分区或文件,可以使用 swapoff 命令:

    sudo swapoff /dev/sdXn  # 禁用 Swap 分区
    sudo swapoff /swapfile   # 禁用 Swap 文件
    
  3. 启用 Swap
    如果 Swap 已被禁用,可以使用 swapon 命令重新启用:

    sudo swapon /dev/sdXn  # 启用 Swap 分区
    sudo swapon /swapfile   # 启用 Swap 文件
    
  4. 检查 Swap 空间的优先级
    可以使用以下命令查看 Swap 区域的优先级:

    cat /proc/swaps
    

Swap 相关的优化建议

  1. 监控 Swap 使用
    定期检查内存和 Swap 的使用情况,确保系统没有因为过度使用 Swap 而导致性能下降。对于运行内存密集型应用的系统,尤其要关注 freetop 命令输出的 Swap 使用情况。

  2. 合理配置 swappiness
    对于服务器或内存充足的系统,建议将 swappiness 参数设置得较低,以减少 Swap 的使用,优先利用物理内存。对于内存较小的系统,可以适当提高 swappiness 参数,以防止系统因为内存不足而崩溃。

  3. 选择合适的 Swap 大小
    Swap 大小的设置应根据系统的物理内存和实际应用需求来决定。常见建议是:

    • 物理内存 < 2GB:Swap 大小为物理内存的 2 倍。
    • 物理内存 > 8GB:Swap 大小为物理内存的 0.5 倍。
    • 对于内存密集型应用(如数据库服务器),可以考虑适当增加 Swap。

总结与建议

  • 内存 (RAM) 是快速且高效的数据存储空间,Swap 则是当内存不足时的补充机制。尽管 Swap 能够帮助系统稳定运行,但由于其性能不及物理内存,过度依赖 Swap 会导致系统性能下降。合理配置和调优 Swap 能有效提升系统的稳定性和响应速度。

通过这些内容,博文可以深入探讨 Linux Swap 的设置与管理,给读者提供完整的操作指南和优化建议,帮助他们更好地理解和使用 Swap,提高系统性能和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2219438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode_2469. 温度转换_java

1、问题 2469. 温度转换. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/convert-the-temperature/description/ 给你一个四舍五入到两位小数的非负浮点数 celsiu…

day3:管道,解压缩,vim

一&#xff0c;管道&#xff08;|&#xff09; 引入 当我们要将本次命令结果作为下次命令参数时就可以用到&#xff0c;极大的简化了操作。 比如&#xff1a;head -5 文件| tail -1&#xff1a;表示显示第五行这就是管道的魅力 概述 管道符&#xff1a;| 作用&#xff1a…

计算机网络——可靠数据传输原理

变成什么状态取决于当时发生的事件 在停止等待协议中只用1位来表示序号0和1——新的和旧的 在这里插入图片描述

IT运维的365天--017 如何在两台Linux服务器之间快速传输文件夹(同时设置免密)

前情提要(两台Linux服务器之间传输批量文件夹): 两台都是外网服务器,都是Linux系统(CentOS),都安装了宝塔,用于搭建巨量的静态网站,由于A服务器准备不要了,所以要在A服务器转移几百个静态网站到B服务器。 Linux下scp单命令传输文件夹测试: 准备工作,先测试转移一…

【Kafka】Kafka Producer的缓冲池机制原理

如何初始化的bufferPool的 在初始化的时候 初始化BufferPool对象 // 设置缓冲区 this.accumulator new RecordAccumulator(xxxxx,其他参数,new BufferPool(this.totalMemorySize, config.getInt(ProducerConfig.BATCH_SIZE_CONFIG), metrics, time, PRODUCER_METRIC_GROUP_N…

免费送源码:Java+SpringBoot+MySQL SpringBoot珠宝店客户关系管理系统 计算机毕业设计原创定制

摘 要 随着计算机技术的发展&#xff0c;特别是计算机网络技术与数据库技术的发展&#xff0c;使用人们的生活与工作方式发生了很大的改观。本课题研究的珠宝店客户关系管理系统&#xff0c;主要功能模块包括系统用户&#xff0c;部门类别&#xff0c;职务类别&#xff0c;外出…

【ssh】Mac 使用 ssh 连接阿里云报错:Connection reset by 8.155.1.xxx port 22

Mac 使用 ssh 连接阿里云报错&#xff1a;Connection reset by 8.155.1.xxx port 22 问题描述解决办法 问题描述 Connection reset by 8.155.1.xxx port 22解决办法 关掉代理 VPN

SpringCloudAlibaba升级手册

目录 1. 版本对照 版本现状 SpringCloud与AlibabaCloud对应版本 Springboot与Elasticsearch版本对应 2. openfeign问题 问题 解决方案 3. Feign请求问题 问题 解决方法 4. Sentinel循环依赖 问题 解决方案 5. bootstrap配置文件不生效 问题 解决方案 6. Nacos的…

visio导出pdf公式变形问题杂谈

其实不会变形。 我自己的情况是直接用edge PDF阅读器打开pdf看到的是公式有变形&#xff08;常见是字体、形状变了&#xff09;&#xff0c;但换一个pdf阅读器如adobe的就是正常的了 不过大家一般是用edge pdf阅读器直接打开查看&#xff0c;所以通过visio打印的方式导出pdf可…

DNS 与 ICMP

DNS(Domain Name System)快速了解 DNS 是一整套从域名映射到 IP 的系统 DNS 背景 TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序. 但是 IP 地址不方便记忆 于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用 hosts 文件来描述主机 名和 IP 地…

【Hive】8-Hive性能优化及Hive3新特性

Hive性能优化及Hive3新特性 Hive表设计优化 Hive查询基本原理 Hive的设计思想是通过元数据解析描述将HDFS上的文件映射成表 基本的查询原理是当用户通过HQL语句对Hive中的表进行复杂数据处理和计算时&#xff0c;默认将其转换为分布式计算 MapReduce程序对HDFS中的数据进行…

基于排名的股票预测的关系时态图卷积网络(RT-GCN)

“ 为了充分利用股票之间的关系&#xff0c;获得最高收益&#xff0c;提出了一种关系时态图卷积网络(RT-GCN)。” 标题&#xff1a;Relational Temporal Graph Convolutional Networks for Ranking-Based Stock Prediction 链接&#xff1a;https://ieeexplore.ieee.org/do…

Android15之解决gdb:Remote register badly formatted问题(二百三十六)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

2024全国大数据与计算智能挑战赛火热报名中!

一年一度的 全国大数据与计算智能挑战赛震撼来袭&#xff01; 报名速通&#xff1a; https://www.datafountain.cn/special/BDSSF2024 大数据与决策&#xff08;国家级&#xff09;实验室连续三年组织发起全国大数据与计算智能挑战赛&#xff0c;旨在深入挖掘大数据应用实践中亟…

STM32传感器模块编程实践(九) VL53L0X激光红外测距传感器简介及驱动源码

文章目录 一.概要二.VL53L0X测距原理三.VL53L0X主要特性四.VL53L0X硬件参考设计五.模块接线说明六.模块通讯协议介绍七.光学盖玻片介绍八.STM32单片机与VL53L0模块实现距离测量实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九.小结 一.概要 VL53L0X是一款由ST&#xff0…

通过PHP与API的结合,开启电商数据集成的新篇章

在数字化转型的浪潮中&#xff0c;电子商务数据的集成对于企业来说变得越来越重要。无论是在线零售商还是品牌商&#xff0c;都需要实时访问商品数据以优化库存管理、制定定价策略、提升客户体验。PHP&#xff0c;作为服务端脚本语言的佼佼者&#xff0c;为开发者提供了强大的工…

调查显示软件供应链攻击增加

OpenText 发布了《2024 年全球勒索软件调查》&#xff0c;强调了网络攻击的重要趋势&#xff0c;特别是在软件供应链中&#xff0c;以及生成式人工智能在网络钓鱼诈骗中的使用日益增多。 尽管各国政府努力加强网络安全措施&#xff0c;但调查显示&#xff0c;仍有相当一部分企…

【verilog】3_8-4_16数选器

文章目录 前言一、实验原理二、实验过程三、实验结果参考文献 前言 进行 实验 一、实验原理 二、实验过程 三、实验结果 代码 timescale 1ns/1ns module decoder_38_tb ; reg a; reg b; reg c; wire [7:0]data;decoder_38 u0 (.a(a),.b(b),.c(c),.data(data) ); init…

pandas-使用技巧

pandas-使用技巧 简单技巧 仅个人笔记使用&#xff0c;感谢点赞关注 简单技巧 pd.to_dict()&#xff1a;Dataframe格式数据转字典数据pd.dropna()&#xff1a;去nan值& | ~&#xff1a;pd逻辑运算符pd.isnan()&#xff1a;判断是否为nan值pd.concat&#xff1a;多个pd拼接…

关于武汉芯景科技有限公司的限流开关芯片XJ6241开发指南(兼容LTC4411)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 1.CTL引脚控制VIN和VOUT的通断 2.CTL引脚控制STAT引脚的状态 3.输出电压高于输入电压加上–VRTO的值&#xff0c;芯片处于关断状态